Aufgaben:Exercise 5.5Z: Complexity of the FFT: Difference between revisions

From LNTwww
Mwiki-lnt (talk | contribs)
m Textersetzung - „\*\s*Sollte die Eingabe des Zahlenwertes „0” erforderlich sein, so geben Sie bitte „0\.” ein.“ durch „ “
Fix interlanguage link: resolve redirect chain
 
(18 intermediate revisions by 5 users not shown)
Line 1: Line 1:


{{quiz-Header|Buchseite=Signaldarstellung/Fast-Fouriertransformation (FFT)
{{quiz-Header|Buchseite=Signal_Representation/Fast_Fourier_Transform_(FFT)
}}
}}


[[File:P_ID1179__Sig_Z_5_5.png|right|frame|Letzte Stufe der FFT für $N=8$]]
[[File:P_ID1179__Sig_Z_5_5.png|right|frame|Final step of the FFT for $N=8$]]
Der FFT–Algorithmus (''Fast Fourier Transform'') realisiert eine ''Diskrete Fouriertransformation'' mit dem kleinstmöglichen Rechenaufwand, wenn der Parameter $N$ eine Zweierpotenz ist. Im Einzelnen sind zur Durchführung einer FFT folgende Rechenschritte notwendig:
The  $\rm FFT$  algorithm  ("Fast Fourier Transform")  realises a  "Discrete Fourier Transform"  $\rm (DFT)$  with the smallest possible computational effort if the parameter  $N$  is a power of two.  In detail, the following calculation steps are necessary to carry out an FFT:
*Die FFT geschieht in ${\rm log_2} \ N$ Stufen, wobei in jeder Stufe die genau gleiche Anzahl an Rechenoperationen durchzuführen ist.  
*The FFT occurs in  ${\rm log_2} \ N$  stages, whereby the exact same number of arithmetic operations must be carried out in each stage.  
*Die Grafik zeigt die dritte und letzte Stufe für das Beispiel $N = 8$. Man erkennt, dass in dieser und auch den anderen Stufen jeweils $N/2$ Basisoperationen durchzuführen sind.
*The diagram shows the third and last stage for the example  $N = 8$.  It can be seen that  $N/2$  basic operations have to be carried out in this and the other stages.
*In jeder Basisoperation, die man häufig auch als '''Butterfly''' bezeichnet, werden aus den beiden komplexen Eingangsgrößen $E_1$ und $E_2$ zwei komplexe Ausgänge berechnet:
*In each basic operation called  '''butterfly''',  two complex outputs are calculated from the two complex input variables  $E_1$  and  $E_2$ :
:$$ A_1  = E_1 + E_2 \cdot w^{\hspace{0.04cm}\mu}, $$
:$$ A_1  = E_1 + E_2 \cdot w^{\hspace{0.04cm}\mu}, $$
:$$ A_2 = E_1 - E_2 \cdot w^{\hspace{0.04cm} \mu}\hspace{0.05cm}.$$
:$$ A_2 = E_1 - E_2 \cdot w^{\hspace{0.04cm} \mu}\hspace{0.05cm}.$$
*Hierbei bezeichnet $w =  {\rm e}^{-{\rm j} 2\pi/N}$ den komplexen Drehfaktor. Für das Beispiel $N = 8$ hat dieser den Wert $w =  {\rm e}^{-{\rm j} \hspace{0.05cm}\cdot \hspace{0.05cm} \pi/4} = \cos(45^\circ) - {\rm j} \cdot \sin(45^\circ)\hspace{0.05cm}.$
*Here  $w =  {\rm e}^{-{\rm j}\hspace{0.05cm}\cdot \hspace{0.05cm} 2\pi/N}$  denotes the complex rotation factor.  For   $N = 8$  the value  $w =  {\rm e}^{-{\rm j} \hspace{0.05cm}\cdot \hspace{0.05cm} \pi/4} = \cos(45^\circ) - {\rm j} \cdot \sin(45^\circ)\hspace{0.05cm}$ is obtained.
*Der Exponent $\mu$ dieses komplexen Drehfaktors kann alle ganzzahligen Werte zwischen $0$ und $N/2-1$ annehmen. Für $N = 8$ gilt:
*The exponent  $\mu$  for this complex rotation factor can take all integer values between  $0$  and  $N/2-1$.  For  $N = 8$  it is:
:$$w^0 = 1,\hspace{0.2cm}w^1 = {1}/{\sqrt{2}}- {\rm j}
:$$w^0 = 1,\hspace{0.2cm}w^1 = {1}/{\sqrt{2}}- {\rm j}\cdot{1}/{\sqrt{2}},\hspace{0.2cm}w^2 = - {\rm j},\hspace{0.2cm}w^3 = -{1}/{\sqrt{2}}- {\rm j}\cdot{1}/{\sqrt{2}} \hspace{0.05cm}.$$
\cdot{1}/{\sqrt{2}},\hspace{0.2cm}w^2 = - {\rm
j},\hspace{0.2cm}w^3 = -{1}/{\sqrt{2}}- {\rm j}
\cdot{1}/{\sqrt{2}} \hspace{0.05cm}.$$


Mit dieser Aufgabe sollen die für die FFT erforderliche Anzahl von Rechenoperationen $(\mathcal{O}_{\rm FFT})$ ermittelt und mit dem für die DFT angebbaren Wert $\mathcal{O}_{\rm DFT} ≈ 8\cdot N^2$ verglichen werden.
The purpose of this task is to determine the number of arithmetic operations  $(\mathcal{O}_{\rm FFT})$  required for the FFT and compare it with the value  $\mathcal{O}_{\rm DFT} ≈ 8\cdot N^2$  that can be specified for the DFT.


Zu beachten ist:
*Sinnvollerweise werden die Potenzen von $w$ vor dem eigentlichen Algorithmus berechnet und in einer Lookup–Tabelle abgelegt. Die hierfür notwendigen Operationen sollen deshalb unberücksichtigt bleiben.
*Die Bitumkehroperation – eine Umsortierung, die vor der ersten Stufe durchzuführen ist – soll bei dieser Abschätzung ebenfalls nicht berücksichtigt werden.








 
''Hints:''  
 
*This task belongs to the chapter  [[Signal_Representation/Fast_Fourier_Transform_(FFT)|Fast Fourier Transform (FFT)]].
''Hinweise:''  
*It makes sense to calculate the powers of  $w$  before the actual algorithm and store them in a lookup table.  The operations necessary for this are to be disregarded.
*Die Aufgabe gehört zum  Kapitel [[Signaldarstellung/Fast-Fouriertransformation_(FFT)|Fast-Fouriertransformation (FFT)]].
*The  "bit reversal operation"  – a rearrangement that has to be carried out before the first stage – is also not to be taken into account in this estimation.
   
   


Line 35: Line 29:




===Fragebogen===
===Questions===


<quiz display=simple>
<quiz display=simple>
{Wieviele reelle Additionen $(A_{\rm A})$ erfordert eine komplexe Addition?
{How many real additions&nbsp; $(A_{\rm A})$&nbsp; does a complex addition require?
|type="{}"}
|type="{}"}
$A_{\rm A} \hspace{0.3cm} = \ $ { 2 }
$A_{\rm A} \hspace{0.3cm} = \ $ { 2 }


{Wieviele reelle Additionen $(A_{\rm M})$ und Multiplikationen $(M_{\rm M})$ sind für eine komplexe Multiplikation erforderlich?
{How many real additions&nbsp; $(A_{\rm M})$&nbsp; and multiplications&nbsp; $(M_{\rm M})$&nbsp; are required for a complex multiplication?
|type="{}"}
|type="{}"}
$A_{\rm M} \hspace{0.3cm} = \  $ { 2 }
$A_{\rm M} \hspace{0.3cm} = \  $ { 2 }
$M_{\rm M} \hspace{0.2cm} = \  $ { 4 }
$M_{\rm M} \hspace{0.2cm} = \  $ { 4 }


{Wieviele komplexe Additionen/Subtraktionen $(a_{\rm B})$ erfordert eine einzige Basisoperation (&bdquo;Butterfly&rdquo;)?
{How many complex additions/subtractions&nbsp; $(a_{\rm B})$&nbsp; does a single basic operationn&nbsp; ("butterfly")&nbsp; require?
<br>Wieviele komplexe Multiplikationen $(m_{\rm B})$ sind pro Basisoperation notwendig?
<br>How many complex multiplications&nbsp; $(m_{\rm B})$&nbsp; are required per basic operation?
|type="{}"}
|type="{}"}
$a_{\rm B} \hspace{0.32cm} = \ $  { 2 }
$a_{\rm B} \hspace{0.32cm} = \ $  { 2 }
$m_{\rm B} \hspace{0.2cm} = \ $  { 1 }
$m_{\rm B} \hspace{0.2cm} = \ $  { 1 }


{Wieviele Rechenoperationen (Additionen, Subtraktionen, Multiplikationen gleichermaßen) erfordert eine Basisoperation?
{How many arithmetic operations&nbsp; (additions, subtractions, multiplications alike)&nbsp; does a basic operation require?
|type="{}"}
|type="{}"}
$\mathcal{O}_{\rm B} \ = \ $  { 10 }
$\mathcal{O}_{\rm B} \ = \ $  { 10 }


{Wieviele reelle Operationen $(\mathcal{O}_{\rm FFT})$ erfordert der gesamte FFT&ndash;Algorithmus? Welche Werte ergeben sich für $N = 16$ und $N = 1024$?
{How many real operations&nbsp; $(\mathcal{O}_{\rm FFT})$&nbsp; does the entire FFT&ndash;algorithm require?&nbsp; What are the values for&nbsp; $N = 16$&nbsp; und&nbsp; $N = 1024$?
|type="{}"}
|type="{}"}
$N = 16\text{:} \hspace{0.65cm} \mathcal{O}_{\rm FFT} \ = \ $ { 320 3% }
$N = 16\text{:} \hspace{0.65cm} \mathcal{O}_{\rm FFT} \ = \ $ { 320 3% }
$N = 1024\text{:} \hspace{0.2cm} \mathcal{O}_{\rm FFT} \ = \ $ { 51200 3% }
$N = 1024\text{:} \hspace{0.2cm} \mathcal{O}_{\rm FFT} \ = \ $ { 51200 3% }


{Wie groß ist der Zeitgewinn $G_{\rm FFT} = \mathcal{O}_{\rm DFT} - \mathcal{O}_{\rm FFT}$ für $N = 16$ und $N = 1024$?
{What is the time gain&nbsp; $G_{\rm FFT} = \mathcal{O}_{\rm DFT} - \mathcal{O}_{\rm FFT}$&nbsp; for&nbsp; $N = 16$&nbsp; and&nbsp; $N = 1024$?
|type="{}"}
|type="{}"}
$N = 16\text{:} \hspace{0.65cm} G_{\rm FFT} \ = \ $ { 6.4 3% }
$N = 16\text{:} \hspace{0.65cm} G_{\rm FFT} \ = \ $ { 6.4 3% }
Line 69: Line 63:
</quiz>
</quiz>


===Musterlösung===
===Solution===
{{ML-Kopf}}
{{ML-Kopf}}
'''(1)'''&nbsp; Jede komplexe Addition erfordert zwei reelle Additionen:
'''(1)'''&nbsp; Each complex addition requires two real additions:
:$$(R_1 + {\rm j} \cdot I_1) + (R_2 + {\rm j} \cdot I_2) = (R_1 +
:$$(R_1 + {\rm j} \cdot I_1) + (R_2 + {\rm j} \cdot I_2) = (R_1 +R_2) + {\rm j} \cdot (I_1 + I_2)\hspace{0.3cm}\Rightarrow \hspace{0.3cm}\hspace{0.15 cm}\underline{ A_{\rm A} =2}\hspace{0.05cm}.$$
R_2) + {\rm j} \cdot (I_1 + I_2)\hspace{0.3cm}\Rightarrow \hspace{0.3cm}
\hspace{0.15 cm}\underline{ A_{\rm A} =
2}\hspace{0.05cm}.$$




'''(2)'''&nbsp; Eine jede komplexe Multiplikation benötigt vier reelle Multiplikationen und zwei reelle Additionen:
'''(2)'''&nbsp; Any complex multiplication requires four real multiplications and two real additions:
:$$(R_1 + {\rm j} \cdot I_1)  (R_2 + {\rm j} \cdot I_2) = (R_1 \cdot
:$$(R_1 + {\rm j} \cdot I_1)  (R_2 + {\rm j} \cdot I_2) = (R_1 \cdotR_2 - I_1 \cdot I_2) + {\rm j} \cdot (R_1 \cdot I_2 + R_2 \cdotI_1)\hspace{0.3cm}\Rightarrow \hspace{0.3cm}\hspace{0.15 cm}\underline{A_{\rm M} = 2,\hspace{0.3cm}M_{\rm M} =4} \hspace{0.05cm}.$$
R_2 - I_1 \cdot I_2) + {\rm j} \cdot (R_1 \cdot I_2 + R_2 \cdot
I_1)\hspace{0.3cm}
\Rightarrow \hspace{0.3cm}\hspace{0.15 cm}\underline{A_{\rm M} = 2,\hspace{0.3cm}M_{\rm M} =
4} \hspace{0.05cm}.$$




'''(3)'''&nbsp; Die Basisoperationen lauten mit den komplexen Eingangsgrößen $E_1$, $E_2$ und $w^\mu$:
'''(3)'''&nbsp; The basic operations with complex inputs&nbsp; $E_1$,&nbsp; $E_2$&nbsp; and&nbsp; $w^{\hspace{0.04cm}\mu}$ are:
:$$ A_1  = E_1 + E_2 \cdot w^{\hspace{0.04cm}\mu},\hspace{0.5cm}  A_2 = E_1 - E_2 \cdot w^{\hspace{0.04cm} \mu}\hspace{0.05cm}.$$
:$$ A_1  = E_1 + E_2 \cdot w^{\hspace{0.04cm}\mu},\hspace{0.5cm}  A_2 = E_1 - E_2 \cdot w^{\hspace{0.04cm} \mu}\hspace{0.05cm}.$$
Dies bedeutet eine komplexe Multiplikation und zwei komplexe Additionen: &nbsp; $\hspace{0.15 cm}\underline{a_{\rm B} = 2, \hspace{0.2cm}m_{\rm B} = 1}
*This means one complex multiplication and two complex additions: &nbsp; $\hspace{0.15 cm}\underline{a_{\rm B} = 2, \hspace{0.2cm}m_{\rm B} = 1}
  \hspace{0.05cm}.$
  \hspace{0.05cm}.$




'''(4)'''&nbsp; Im Gegensatz zu den ersten Computern nimmt heute eine Multiplikation keine wesentlich größere Rechenzeit in Anspruch als eine Addition bzw. Subtraktion.  
'''(4)'''&nbsp; In contrast to the first computers, a multiplication today does not take much more computing time than an addition or subtraction.


Mit den Ergebnissen der Teilaufgaben (1), (2) und (3) erhält man für die Gesamtzahl der Rechenoperationen:
*Using the results of subtasks&nbsp; '''(1)''',&nbsp; '''(2)'''&nbsp; and&nbsp; '''(3)'''&nbsp; we obtain for the total number of arithmetic operations:
:$$ \mathcal{O}_{\rm B} = a_{\rm B}\cdot A_{\rm A} + a_{\rm B}\cdot (A_{\rm M}
:$$ \mathcal{O}_{\rm B} = a_{\rm B}\cdot A_{\rm A} + a_{\rm B}\cdot (A_{\rm M}+M_{\rm M} ) = 2 \cdot 2 + 1 \cdot 6\hspace{0.15 cm}\underline{ = 10}\hspace{0.05cm}.$$
+M_{\rm M} ) = 2 \cdot 2 + 1 \cdot 6\hspace{0.15 cm}\underline{ = 10}
\hspace{0.05cm}.$$




'''(5)'''&nbsp; Insgesamt gibt es ${\rm log_2} \ N$ Stufen, in denen jeweils $N/2$ Basisoperationen auszuführen sind:
'''(5)'''&nbsp; There are&nbsp; ${\rm log_2} \ N$ stages in total, each of which requires&nbsp; $N/2$&nbsp; basic operations to be performed:
:$$\mathcal{O}_{\rm FFT} = {\rm log_2}\hspace{0.1cm}N \cdot \frac{N}{2}\cdot
:$$\mathcal{O}_{\rm FFT} = {\rm log_2}\hspace{0.1cm}N \cdot \frac{N}{2}\cdot\mathcal{O}_{\rm B} = 5 \cdot N \cdot {\rm log_2}\hspace{0.1cm}N$$
\mathcal{O}_{\rm B} = 5 \cdot N \cdot {\rm log_2}\hspace{0.1cm}N$$
:$$\Rightarrow \hspace{0.3cm}\mathcal{O}_{\rm FFT}\hspace{0.1cm}(N=16)  =  5\cdot 16 \cdot4 \hspace{0.15 cm}\underline{= 320}, \hspace{0.5cm}\mathcal{O}_{\rm FFT}\hspace{0.1cm}(N=1024)  =  5\cdot 1024\cdot 10 \hspace{0.15 cm}\underline{= 51200}\hspace{0.05cm}.$$
:$$\Rightarrow \hspace{0.3cm}\mathcal{O}_{\rm FFT}\hspace{0.1cm}(N=16)  =  5\cdot 16 \cdot
4 \hspace{0.15 cm}\underline{= 320}, \hspace{0.5cm}\mathcal{O}_{\rm FFT}\hspace{0.1cm}(N=1024)  =  5\cdot 1024
\cdot 10 \hspace{0.15 cm}\underline{= 51200}
\hspace{0.05cm}.$$




'''(6)'''&nbsp; Der Rechenzeitgewinn der FFT gegenüber der herkömmlichen DFT ergibt sich zu:
'''(6)'''&nbsp; The computational time gain of the FFT over the conventional DFT is given by:
:$$G_{\rm FFT} = \frac{\mathcal{O}_{\rm DFT}}{\mathcal{O}_{\rm FFT}} = \frac{8 \cdot N^2} {5 \cdot
:$$G_{\rm FFT} = \frac{\mathcal{O}_{\rm DFT}}{\mathcal{O}_{\rm FFT}} = \frac{8 \cdot N^2} {5 \cdot N \cdot {\rm log_2}\hspace{0.1cm}N }= 1.6 \cdot \frac{N}{ {\rm log_2}\hspace{0.1cm}N}$$
N \cdot {\rm log_2}\hspace{0.1cm}N }= 1.6 \cdot \frac{N}{ {\rm
:$$\Rightarrow \hspace{0.3cm}G_{\rm FFT} \hspace{0.1cm}(N=16)  =  1.6 \cdot\frac{16}{ 4} \hspace{0.15 cm}\underline{= 6.4}, \hspace{0.5cm}G_{\rm FFT} \hspace{0.1cm}(N=1024)  =  1.6 \cdot\frac{1024}{ 10}\hspace{0.15 cm}\underline{ \approx 164}\hspace{0.05cm}.$$
log_2}\hspace{0.1cm}N}$$
:$$\Rightarrow \hspace{0.3cm}G_{\rm FFT} \hspace{0.1cm}(N=16)  =  1.6 \cdot
\frac{16}{ 4} \hspace{0.15 cm}\underline{= 6.4}, \hspace{0.5cm}G_{\rm FFT} \hspace{0.1cm}(N=1024)  =  1.6 \cdot\frac{1024}{ 10}\hspace{0.15 cm}\underline{ \approx 164}
\hspace{0.05cm}.$$




Line 122: Line 99:




[[Category:Aufgaben zu Signaldarstellung|^5. Zeit- und frequenzdiskrete Signaldarstellung^]]
[[Category:Signal Representation: Exercises|^5.5 Fast Fourier Transform ^]]
[[de:Aufgaben:Aufgabe 5.5Z: Rechenaufwand für die FFT]]
 

Latest revision as of 17:56, 16 March 2026

Final step of the FFT for $N=8$

The  $\rm FFT$  algorithm  ("Fast Fourier Transform")  realises a  "Discrete Fourier Transform"  $\rm (DFT)$  with the smallest possible computational effort if the parameter  $N$  is a power of two.  In detail, the following calculation steps are necessary to carry out an FFT:

  • The FFT occurs in  ${\rm log_2} \ N$  stages, whereby the exact same number of arithmetic operations must be carried out in each stage.
  • The diagram shows the third and last stage for the example  $N = 8$.  It can be seen that  $N/2$  basic operations have to be carried out in this and the other stages.
  • In each basic operation called  butterfly,  two complex outputs are calculated from the two complex input variables  $E_1$  and  $E_2$ :
$$ A_1 = E_1 + E_2 \cdot w^{\hspace{0.04cm}\mu}, $$
$$ A_2 = E_1 - E_2 \cdot w^{\hspace{0.04cm} \mu}\hspace{0.05cm}.$$
  • Here  $w = {\rm e}^{-{\rm j}\hspace{0.05cm}\cdot \hspace{0.05cm} 2\pi/N}$  denotes the complex rotation factor.  For  $N = 8$  the value  $w = {\rm e}^{-{\rm j} \hspace{0.05cm}\cdot \hspace{0.05cm} \pi/4} = \cos(45^\circ) - {\rm j} \cdot \sin(45^\circ)\hspace{0.05cm}$ is obtained.
  • The exponent  $\mu$  for this complex rotation factor can take all integer values between  $0$  and  $N/2-1$.  For  $N = 8$  it is:
$$w^0 = 1,\hspace{0.2cm}w^1 = {1}/{\sqrt{2}}- {\rm j}\cdot{1}/{\sqrt{2}},\hspace{0.2cm}w^2 = - {\rm j},\hspace{0.2cm}w^3 = -{1}/{\sqrt{2}}- {\rm j}\cdot{1}/{\sqrt{2}} \hspace{0.05cm}.$$

The purpose of this task is to determine the number of arithmetic operations  $(\mathcal{O}_{\rm FFT})$  required for the FFT and compare it with the value  $\mathcal{O}_{\rm DFT} ≈ 8\cdot N^2$  that can be specified for the DFT.



Hints:

  • This task belongs to the chapter  Fast Fourier Transform (FFT).
  • It makes sense to calculate the powers of  $w$  before the actual algorithm and store them in a lookup table.  The operations necessary for this are to be disregarded.
  • The  "bit reversal operation"  – a rearrangement that has to be carried out before the first stage – is also not to be taken into account in this estimation.



Questions

1 How many real additions  $(A_{\rm A})$  does a complex addition require?

$A_{\rm A} \hspace{0.3cm} = \ $

2 How many real additions  $(A_{\rm M})$  and multiplications  $(M_{\rm M})$  are required for a complex multiplication?

$A_{\rm M} \hspace{0.3cm} = \ $
$M_{\rm M} \hspace{0.2cm} = \ $

3 How many complex additions/subtractions  $(a_{\rm B})$  does a single basic operationn  ("butterfly")  require?
How many complex multiplications  $(m_{\rm B})$  are required per basic operation?

$a_{\rm B} \hspace{0.32cm} = \ $
$m_{\rm B} \hspace{0.2cm} = \ $

4 How many arithmetic operations  (additions, subtractions, multiplications alike)  does a basic operation require?

$\mathcal{O}_{\rm B} \ = \ $

5 How many real operations  $(\mathcal{O}_{\rm FFT})$  does the entire FFT–algorithm require?  What are the values for  $N = 16$  und  $N = 1024$?

$N = 16\text{:} \hspace{0.65cm} \mathcal{O}_{\rm FFT} \ = \ $
$N = 1024\text{:} \hspace{0.2cm} \mathcal{O}_{\rm FFT} \ = \ $

6 What is the time gain  $G_{\rm FFT} = \mathcal{O}_{\rm DFT} - \mathcal{O}_{\rm FFT}$  for  $N = 16$  and  $N = 1024$?

$N = 16\text{:} \hspace{0.65cm} G_{\rm FFT} \ = \ $
$N = 1024\text{:} \hspace{0.2cm} G_{\rm FFT} \ = \ $


Solution

(1)  Each complex addition requires two real additions:

$$(R_1 + {\rm j} \cdot I_1) + (R_2 + {\rm j} \cdot I_2) = (R_1 +R_2) + {\rm j} \cdot (I_1 + I_2)\hspace{0.3cm}\Rightarrow \hspace{0.3cm}\hspace{0.15 cm}\underline{ A_{\rm A} =2}\hspace{0.05cm}.$$


(2)  Any complex multiplication requires four real multiplications and two real additions:

$$(R_1 + {\rm j} \cdot I_1) (R_2 + {\rm j} \cdot I_2) = (R_1 \cdotR_2 - I_1 \cdot I_2) + {\rm j} \cdot (R_1 \cdot I_2 + R_2 \cdotI_1)\hspace{0.3cm}\Rightarrow \hspace{0.3cm}\hspace{0.15 cm}\underline{A_{\rm M} = 2,\hspace{0.3cm}M_{\rm M} =4} \hspace{0.05cm}.$$


(3)  The basic operations with complex inputs  $E_1$,  $E_2$  and  $w^{\hspace{0.04cm}\mu}$ are:

$$ A_1 = E_1 + E_2 \cdot w^{\hspace{0.04cm}\mu},\hspace{0.5cm} A_2 = E_1 - E_2 \cdot w^{\hspace{0.04cm} \mu}\hspace{0.05cm}.$$
  • This means one complex multiplication and two complex additions:   $\hspace{0.15 cm}\underline{a_{\rm B} = 2, \hspace{0.2cm}m_{\rm B} = 1}
\hspace{0.05cm}.$


(4)  In contrast to the first computers, a multiplication today does not take much more computing time than an addition or subtraction.

  • Using the results of subtasks  (1)(2)  and  (3)  we obtain for the total number of arithmetic operations:
$$ \mathcal{O}_{\rm B} = a_{\rm B}\cdot A_{\rm A} + a_{\rm B}\cdot (A_{\rm M}+M_{\rm M} ) = 2 \cdot 2 + 1 \cdot 6\hspace{0.15 cm}\underline{ = 10}\hspace{0.05cm}.$$


(5)  There are  ${\rm log_2} \ N$ stages in total, each of which requires  $N/2$  basic operations to be performed:

$$\mathcal{O}_{\rm FFT} = {\rm log_2}\hspace{0.1cm}N \cdot \frac{N}{2}\cdot\mathcal{O}_{\rm B} = 5 \cdot N \cdot {\rm log_2}\hspace{0.1cm}N$$
$$\Rightarrow \hspace{0.3cm}\mathcal{O}_{\rm FFT}\hspace{0.1cm}(N=16) = 5\cdot 16 \cdot4 \hspace{0.15 cm}\underline{= 320}, \hspace{0.5cm}\mathcal{O}_{\rm FFT}\hspace{0.1cm}(N=1024) = 5\cdot 1024\cdot 10 \hspace{0.15 cm}\underline{= 51200}\hspace{0.05cm}.$$


(6)  The computational time gain of the FFT over the conventional DFT is given by:

$$G_{\rm FFT} = \frac{\mathcal{O}_{\rm DFT}}{\mathcal{O}_{\rm FFT}} = \frac{8 \cdot N^2} {5 \cdot N \cdot {\rm log_2}\hspace{0.1cm}N }= 1.6 \cdot \frac{N}{ {\rm log_2}\hspace{0.1cm}N}$$
$$\Rightarrow \hspace{0.3cm}G_{\rm FFT} \hspace{0.1cm}(N=16) = 1.6 \cdot\frac{16}{ 4} \hspace{0.15 cm}\underline{= 6.4}, \hspace{0.5cm}G_{\rm FFT} \hspace{0.1cm}(N=1024) = 1.6 \cdot\frac{1024}{ 10}\hspace{0.15 cm}\underline{ \approx 164}\hspace{0.05cm}.$$