I just had to do the work described by this publication again in real life at my work. Minus of course the Nallatech hardware and the 3GSPS ADC, just the whole merged real streams using a single pipelined FFT unit, followed by an untangling stage. I found to my surprise that I didn’t quite understand what I had written in the paper. I had to look up odd and even functions on wikipedia to be able to repeat it. The following is lifted from my code’s comments and should help you if you have to do this in practice. Doing two real FFTs using a single complex transform and getting two complex results. All the cool kids are doing it.

For an N-sized transform, the result is F[n], n€[0,N-1]
We want to produce C[n] and D[n], two independent transforms in output
F[n] is composed of a real and an imaginary stream:
F[n] = X[n] + j*Y[n]
X[n] and Y[n] are each composed of the sum of even and odd functions
F[n] = X_even[n] + X_odd[n] + j*(Y_even[n] + Y_odd[n])
The independent transform outputs are composed as follows:
C[n] = X_even[n] + j*Y_odd[n]
D[n] = Y_even[n] + j*X_odd[n]

I just had to do the work described by this publication again in real life at my work. Minus of course the Nallatech hardware and the 3GSPS ADC, just the whole merged real streams using a single pipelined FFT unit, followed by an untangling stage. I found to my surprise that I didn’t quite understand what I had written in the paper. I had to look up odd and even functions on wikipedia to be able to repeat it. The following is lifted from my code’s comments and should help you if you have to do this in practice. Doing two real FFTs using a single complex transform and getting two complex results. All the cool kids are doing it.

For an N-sized transform, the result is F[n], n€[0,N-1]

We want to produce C[n] and D[n], two independent transforms in output

F[n] is composed of a real and an imaginary stream:

F[n] = X[n] + j*Y[n]

X[n] and Y[n] are each composed of the sum of even and odd functions

F[n] = X_even[n] + X_odd[n] + j*(Y_even[n] + Y_odd[n])

The independent transform outputs are composed as follows:

C[n] = X_even[n] + j*Y_odd[n]

D[n] = Y_even[n] + j*X_odd[n]