 Again, with the FFT and DFT, which is very useful in signal processing to get the frequency response or the frequency attributes of the signal, the mathematics looks like this. So again, you've got summary of multiplication, and here even worse, you've got complex numbers. So with complex numbers, you need double the operations. So again, you need a lot of max. I was talking about the fixed point, but what about the floating point, what kind of acceleration do we have? Well, first of all, there is no SIAMD instruction. So one operation is only able to get one operand or two operands in float. You cannot do double the operation at the same time. On the other side, the MAC, so multiplication and accumulation takes one cycle, which is only true for the F7 or M7. There is a big difference on the M4, it was three cycles. So for the floating point, there is also a nice improvement. And what is also not so known that if you enable the floating point unit by hardware, you get another 32 registers inside the core, which makes the life much more easier for the algorithms to store some intermediate result, so you don't need to reload the coefficients all the time. So if we are considering which numbers you would like to use, it's not so easy. First of all, you need to consider what is the input. If you get 12-bit ADC directly, this means you can fit easily into 16-bit numbers, so you don't need to convert anything. Or if you get the floating points already from some external device or from some other algorithm, for sure it's easier to always use the numbers which you get already, but sometimes you cannot evict to have the conversions. Usually the problem comes with the 8-bit or 16-bit numbers when you consider these signals with high dynamics. So you go very from the 1 to very close to 0 and then you got all the issues with rounding. If you get this, you either can work about your algorithm or you can convert to float where all these problems are very minor. So developing this floating point is usually much more easier, but typically the algorithms take a little bit more time to execute. I did some comparison here. So the typical algorithm FFT, big watt, which means IR filter, with four stages and filter with 100 coefficients called steps, compared between M4 and M7, exactly the same code running at the same speed. So how many cycles you need to perform such operation? So you see mostly the F7 or M7 is almost double the speed of M4. And also you can compare that typically if you compare here, the 16-bit for both architectures is faster than floating point, 32-bit, because of usage of the SIMD. But if you compare the full 32-bit in fixed point, it is slower. So usually if you have 32-bit numbers in fixed point, it doesn't make too much sense to use it. It's better to use floating point or to shrink the data if you can if you don't really need the precision to 16-bit. So we can move to the very last part, which is the spectrum analyzer or analyzes. So classical FFT, which will be run right now. Very often you would like to have the properties of the signal not only in time, but also in frequency. So for this, we typically run the FFT algorithms. There is a multiple variant of those. For our signal, which is audio, which is for sure a real signal, it's enough to run the real FFT. For this, the ARM CMC library offers ARM RFFT function, of course. The usage is pretty much similar to the filter. You need to have an instance which was initialized before. Then you have pointer to source and pointer for the result. In our example, you simply use the doFFT1 flag and it will switch on the part where the FFT is computed. Even the input is real, the output is complex always. So to show something, we need to perform the absolute value of the FFT to be able to show at least the absolute value or the amplitudes of each frequency on the screen. And this is done also in this example. So what we can do is to just change the flag in your live watch window. And then on the screen, you will have, I think, a right channel still in the time domain and also the same channel in the FFT domain, in the frequency domain. And then to really check what's going on, it's quite good to have some signal generator because then you can see the sweep of the frequencies in the pinkish color. You've got the frequency analysis and in the bluish color, you've got the time analysis. So as usually, what you can do is to export your result to the variables, to the hex files. Then you can load it by Sylap and doFFT by Sylap and compare the result. In my case, the last file is the Sylap process 3, which is doing the same thing. At this point, I was close with the sine generator to the microphones. This is the result I got computed by the function of STM32 and the same thing done on the PC. OK, so again, you can compare the result. If it works, you are happy. If not, at least you know where to investigate. Again, the same trouble with the amplitude. Here we get much more resolution than in the MCU, which is limited to 16-bit numbers in this case.