Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Real valued version of FFT #413

Closed
lampuiho opened this issue Jun 29, 2016 · 6 comments
Closed

Real valued version of FFT #413

lampuiho opened this issue Jun 29, 2016 · 6 comments
Assignees

Comments

@lampuiho
Copy link

Current available functions require complex input. Can you implement one that takes integers/float/double vector or array as input and output data in 2 input buffers, please?

See http://www.ti.com/lit/an/spra291/spra291.pdf for 2N-Point Real Sequence.

Also, for speed improvement, please allow the creation of a fourier transform object which pre-compute values of cosines and sines. (should be another ticket...)

@cdrnet cdrnet self-assigned this Jun 30, 2016
@cdrnet
Copy link
Member

cdrnet commented Jun 30, 2016

We did indeed have such extensions in Iridium.

I do plan to work on FFT in a couple weeks, mostly on a native provider (fftw or MKL), but that would also be a chance to review real-valued use cases.

@mdabros
Copy link

mdabros commented Jul 3, 2016

Sounds great with some native FFT support. Will this also include 2D FFT?

@cdrnet
Copy link
Member

cdrnet commented Jul 3, 2016

Yes, that would be the idea.

@ThatGeoGuy
Copy link

If this is done, then this would also remedy my concerns laid out in issue #405, and the earlier issue created in #157. If done, will this functionality only be available in the MKL variant of Math.NET?

@cdrnet
Copy link
Member

cdrnet commented Nov 1, 2016

@lampuiho with data in 2 input buffers you refer to one array for the real and one for the imaginary part, just like the void Forward(Double[] real, Double[] imaginary, FourierOptions options) that was added in v3.14, but where the input content of the imaginary one would be ignored on forward transforms?

Meanwhile, in v3.14 I added a real version with a packed format (skipping information which is redundant due to the symmetries), see Fourier.ForwardReal.

@lampuiho
Copy link
Author

lampuiho commented Nov 3, 2016

Yes, exactly. But because what I needed was to compute FFT/IFFT for large amount of dataset (in a loop for different inputs) with very few data points, I ended up implementing my own real valued spit radix functions and unrolled function generator to avoid all those parallel calls which have too much overhead. Using external C++ library was also too slow for me because of the way C# handles memory.

@cdrnet cdrnet added this to the Numerics v4.1 milestone Feb 8, 2018
@mathnet mathnet locked and limited conversation to collaborators Jul 24, 2021
@cdrnet cdrnet closed this as completed Jul 24, 2021

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Projects
None yet
Development

No branches or pull requests

4 participants