Thanks for reply.
'data' is an array of floats casted to uint16_t, it works fine actually. I've noticed that in FFT example provided by ST input and output arrays for their fft function (x and y) are declared as long instead of int. When changed to long this code works fine. Now it's easy to see that it could have been deduced from values the function returned (4.3e9), even though final values of fft function working correctly are much lower.