I have a complex to complex FFT, but I need a real to real FFT implementation...
This is because the noise cancellation algorithm I have works on real numbers in the frequency domain, not complex numbers.
The only case where a real to real FFT would be applicable is if your time-domain signal is symmetric (x(n) = x(N-n), n=1...N-1
). This is the only case that real input to an FFT results in real output. Otherwise, real input still results in complex output from the FFT.
Real to real FFTs are significantly rare and are usually not implemented specially. They are just performed with the real-to-complex FFT, discarding the imaginary output since it is zero anyway.
What is the noise cancellation algorithm that you are using that expects real frequency domain data? Does it expect the magnitudes of the complex samples? We need to know a little more about what the noise cancellation algorithm is doing.