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

From LNTwww
 
(19 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|Zum Rechenaufwand der FFT]]
+
[[File:P_ID1179__Sig_Z_5_5.png|right|frame|Final step of the FFT for $N=8$]]
Der FFT–Algorithmus 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 ld} \ N$ Stufen, wobei in jeder Stufe die genau gleiche Anzahl an Rechenoperationen durchzuführen ist. „ld” steht hier als Abkürzung für den Logarithmus zur Basis 2.
+
*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 folgenden 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
 
\cdot{1}/{\sqrt{2}},\hspace{0.2cm}w^2 = - {\rm
Line 17: Line 17:
 
\cdot{1}/{\sqrt{2}} \hspace{0.05cm}.$$
 
\cdot{1}/{\sqrt{2}} \hspace{0.05cm}.$$
  
Mit dieser Aufgabe sollen die für die FFT erforderliche Anzahl von Rechenoperationen $(O_{\rm FFT})$ ermittelt und mit dem für die DFT angebbaren Wert $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.
 
  
  
''Hinweise:''
 
*Die Aufgabe gehört zum  Kapitel [[Signaldarstellung/Fast-Fouriertransformation_(FFT)|Fast-Fouriertransformation (FFT)]].
 
*Sollte die Eingabe des Zahlenwertes „0” erforderlich sein, so geben Sie bitte „0.” ein.
 
  
  
===Fragebogen===
+
''Hints:''
 +
*This task belongs to the chapter  [[Signal_Representation/Fast_Fourier_Transform_(FFT)|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===
  
 
<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} \ = $ { 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} \ = $ { 2 }
+
$A_{\rm M} \hspace{0.3cm} = $ { 2 }
$M_{\rm M} \ = $ { 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?
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} \ = $ { 2 }
+
$a_{\rm B} \hspace{0.32cm} = \ $ { 2 }
$m_{\rm B} \ = $ { 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="{}"}
$O_{\rm B}$ = { 10 }
+
$\mathcal{O}_{\rm B} \ = \ $ { 10 }
  
{Wieviele reelle Operationen $(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.6cm} O_{\rm FFT} \ = $ { 320 3% }
+
$N = 16\text{:} \hspace{0.65cm} \mathcal{O}_{\rm FFT} \ = \ $ { 320 3% }
$N = 1024\text{:} \hspace{0.2cm} 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} = O_{\rm DFT} - 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.6cm} G_{\rm FFT} \ = $ { 6.4 3% }
+
$N = 16\text{:} \hspace{0.65cm} G_{\rm FFT} \ = \ $ { 6.4 3% }
$N = 1024\text{:} \hspace{0.2cm} G_{\rm FFT} \ = $ { 164 3% }
+
$N = 1024\text{:} \hspace{0.2cm} G_{\rm FFT} \ = \ $ { 164 3% }
  
 
</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}
 
R_2) + {\rm j} \cdot (I_1 + I_2)\hspace{0.3cm}\Rightarrow \hspace{0.3cm}
 
\hspace{0.15 cm}\underline{ A_{\rm A} =
 
\hspace{0.15 cm}\underline{ A_{\rm A} =
 
2}\hspace{0.05cm}.$$
 
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 \cdot
 
R_2 - I_1 \cdot I_2) + {\rm j} \cdot (R_1 \cdot I_2 + R_2 \cdot
 
R_2 - I_1 \cdot I_2) + {\rm j} \cdot (R_1 \cdot I_2 + R_2 \cdot
Line 76: Line 81:
 
\Rightarrow \hspace{0.3cm}\hspace{0.15 cm}\underline{A_{\rm M} = 2,\hspace{0.3cm}M_{\rm M} =
 
\Rightarrow \hspace{0.3cm}\hspace{0.15 cm}\underline{A_{\rm M} = 2,\hspace{0.3cm}M_{\rm M} =
 
4} \hspace{0.05cm}.$$
 
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 Computern in der Anfangszeit nimmt heute eine Multiplikation keine wesentlich größere Rechenzeit in Anspruch als eine Addition bzw. Subtraktion. Mit den Ergebnissen der Teilaufgaben (1), (2) und (3) erhält man für die Gesamtzahl der Rechenoperationen:
+
 
:$$ O_{\rm B} = a_{\rm B}\cdot A_{\rm A} + a_{\rm B}\cdot (A_{\rm M}
+
 
 +
'''(4)'''&nbsp; 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&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}
 
+M_{\rm M} ) = 2 \cdot 2 + 1 \cdot 6\hspace{0.15 cm}\underline{ = 10}
 
+M_{\rm M} ) = 2 \cdot 2 + 1 \cdot 6\hspace{0.15 cm}\underline{ = 10}
 
  \hspace{0.05cm}.$$
 
  \hspace{0.05cm}.$$
'''(5)'''&nbsp; Insgesamt gibt es ${\rm ld} N$ Stufen, in denen jeweils $N/2$ Basisoperationen auszuführen sind:
+
 
:$$O_{\rm FFT} = {\rm ld}\hspace{0.1cm}N \cdot \frac{N}{2}\cdot
+
 
O_{\rm B} = 5 \cdot N \cdot {\rm ld}\hspace{0.1cm}N$$
+
'''(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:
:$$\Rightarrow \hspace{0.3cm}O_{\rm FFT}\hspace{0.1cm}(N=16)  =  5\cdot 16 \cdot
+
:$$\mathcal{O}_{\rm FFT} = {\rm log_2}\hspace{0.1cm}N \cdot \frac{N}{2}\cdot
4 \hspace{0.15 cm}\underline{= 320}, \hspace{0.5cm}O_{\rm FFT}\hspace{0.1cm}(N=1024)  =  5\cdot 1024
+
\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 \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}
 
\cdot 10 \hspace{0.15 cm}\underline{= 51200}
 
  \hspace{0.05cm}.$$
 
  \hspace{0.05cm}.$$
'''(6)'''&nbsp; Der Rechenzeitgewinn der FFT gegenüber der herkömmlichen DFT ergibt sich zu:
+
 
:$$G_{\rm FFT} = \frac{O_{\rm DFT}}{O_{\rm FFT}} = \frac{8 \cdot N^2} {5 \cdot
+
 
N \cdot {\rm ld}\hspace{0.1cm}N }= 1.6 \cdot \frac{N}{ {\rm
+
'''(6)'''&nbsp; The computational time gain of the FFT over the conventional DFT is given by:
ld}\hspace{0.1cm}N}$$
+
:$$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
 
:$$\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}
 
\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}
Line 104: Line 119:
  
  
[[Category:Aufgaben zu Signaldarstellung|^5. Zeit- und frequenzdiskrete Signaldarstellung^]]
+
[[Category:Signal Representation: Exercises|^5.5 Fast Fourier Transform ^]]

Latest revision as of 15:48, 24 May 2021

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 \cdot 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)  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 \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)  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}.$$