Giter Site home page Giter Site logo

Include FFT about stdlib HOT 7 OPEN

fortran-lang avatar fortran-lang commented on May 23, 2024 5
Include FFT

from stdlib.

Comments (7)

certik avatar certik commented on May 23, 2024 2

@leonfoks yes, the dft is slow O(n^2), and the fft_pass is the fast O(n*log(n)) FFTPACK algorithm. I think I have an improved API in my internal code that is not open source.

In the stdlib, there should just be a function fft that works in 1D, 2D, 3D and that uses the FFTPACK version.

from stdlib.

zoziha avatar zoziha commented on May 23, 2024 1

The FFTpack library on netlib seems to have only double precision and only one-dimensional FFT.
netlib/fftpack

There is a more complete and updated fftpack, including 1-dimensional, 2-dimensional, and multi-dimensional real and complex FFTs🎈.
FFTPACK 5.1 - A Fortran77 library of fast Fourier transforms

There is a nice library based on fftpack on github, which contains some customized functions, such as fftshift, ifftshift, which is very cool🥰, contains a "forlab" module.
keurfonluu/FFTPack

Forlab is a Fortran module that provides a lot of functions for scientific computing mostly inspired by Matlab and Python's package NumPy.
keurfonluu/Forlab

Because of the changes in gfortran10 compilation options, compiling fftpack may require fflag --fallow-argument-mismatch (see keurfonluu/FFTPack#1).

Thank you! Hope that the Fortran ecology will get better and better~🎉🎉

from stdlib.

rweed avatar rweed commented on May 23, 2024

Be careful with MKL. I don't know about FFT etc. but I encountered a problem with their implementation of LAPACK90 where they changed the argument list (same arguments but in different order) on some of the subroutines. Not a problem if you know about it before hand and use the keyword arguments but you would hope that Intel would have had the good sense to keep the netlib LAPACK90 interfaces as is.

from stdlib.

leonfoks avatar leonfoks commented on May 23, 2024

@certik At the top of your fourier.f90 you mention that its an O(n^2) code? Or is that just for the dft and idft subs? Isn't the Cooley Tukey algorithm O(nlogn)?

from stdlib.

hsnyder avatar hsnyder commented on May 23, 2024

@certik based on reading fortran-lang/fpm-registry#40 it sounds like the current plan is to maintain fftpack under fortran-lang, as it's own library rather than fold it into stdlib, is that correct? If so, I'm curious as to why we don't simply include it in stdlib?

from stdlib.

certik avatar certik commented on May 23, 2024

@hsnyder sorry, I forgot to reply. We can of course just include it in stdlib, but I think it's better to maintain it as a separate standalone package, and just make stdlib depend on it. We can then include modern Fortran interface, either in stdlib, or in the fftpack standalone package. It seems that's a better decision, because I think there will be interest in having a well maintained standalone package for all these old libraries like fftpack.

from stdlib.

bkmgit avatar bkmgit commented on May 23, 2024

Would FFTE also be considered? Or a translation of KISS FFT to Fortran?

from stdlib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.