@Beliavsky thanks for the list. I also wrote a modern Fortran version of fftpack here: hfsolver/fourier.f90 at master · certik/hfsolver · GitHub. One has to be careful with performance, for example allocating memory in the inner loop: modern_fftpack/complex_forward_1d.f90 at 6909d44988925dcae1ee478c06be31e5605d3974 · jlokimlin/modern_fftpack · GitHub might slow things down. For that reason, I think the best way forward is to “preserve” the original code as much as possible, for benchmarking and reference purposes, but do the following changes:
- add modern Fortran interfaces
- fpm, CI, … (mostly done)
- possibly move from fixed form to free form; and move the global subroutines to modules
- add single precision version
- add benchmarks
But changes like rewriting the complex passes to use more modern Fortran as I have done here: hfsolver/fourier.f90 at b4c50c1979fb7e468b1852b144ba756f5a51788d · certik/hfsolver · GitHub should be done in a separate library.
Such ash fft.f
. / See Naming convention for Fortran wrappers packages /