diff --git a/README.md b/README.md index 1194fb3..e9e977d 100644 --- a/README.md +++ b/README.md @@ -64,8 +64,19 @@ meson configure build --prefix=/path/to/install meson install -C build ``` -## Links -- [netlib/dfftpack1.0(fftpack4.0)](http://www.netlib.org/fftpack/) -- [Documents of fft routines in GNU/gsl based on `netlib/fftpack`](https://www.gnu.org/software/gsl/doc/html/fft.html#) -- [Documents of scipy.fftpack](https://docs.scipy.org/doc/scipy/reference/fftpack.html) -- [NACR/FFTPACK 5.1](https://www2.cisl.ucar.edu/resources/legacy/fft5) +## Documentation +See the our [GitHub Pages site] for documentation generated by [FORD] from the fortran-lang/fftpack [project file]. + +## References +Although fortran-lang is _not_ interface-compatible with any of the following libraries, each contains documentation that might be useful for different reasons: +- **Recommended reference:** The [scipy.fftpack] documentation contains succinct description of the storage sequences for function results that match those in fortran-lang/fftpack, e.g., the location of the real and imaginary parts of the `rfft` function result. +- **Theory reference:** The [documentation for the GNU/gsl FFT routines], which are also based on netlib/fftpack, provides some useful definitions of FFT terminology and represenations of the analytical forms of the Discrete Fourier Transform nicely formatted by [LaTeX]. +- **Historical reference:** The [netlib/fftpack] library on which fortran-lang/fftpack is useful for understanding several fortran-lang/fftpack design choices, e.g., the procedure dependencies. + +[FORD]: https://github.com/Fortran-FOSS-Programmers/ford +[project file]: ./API-doc-FORD-file.md +[scipy.fftpack]: https://docs.scipy.org/doc/scipy/reference/fftpack.html +[documentation for the GNU/gsl FFT routines]: https://www.gnu.org/software/gsl/doc/html/fft.html# +[netlib/fftpack]: http://www.netlib.org/fftpack/ +[LaTeX]: https://www.latex-project.org +[GitHub Pages site]: https://fortran-lang.github.io/fftpack/ diff --git a/example/bench02_zfft.f90 b/example/bench02_zfft.f90 index e33baa7..cb43520 100644 --- a/example/bench02_zfft.f90 +++ b/example/bench02_zfft.f90 @@ -1,4 +1,4 @@ -program main +program bench2 use fftpack, only: zffti, zfftf, zfftb, fft, ifft use fftpack_kind, only: rk diff --git a/example/bench03_dfft.f90 b/example/bench03_dfft.f90 index a442950..e55e417 100644 --- a/example/bench03_dfft.f90 +++ b/example/bench03_dfft.f90 @@ -1,4 +1,4 @@ -program main +program bench3 use fftpack, only: dffti, dfftf, dfftb, rfft, irfft use fftpack_kind, only: rk diff --git a/fpm.toml b/fpm.toml index f67cf11..9d11836 100644 --- a/fpm.toml +++ b/fpm.toml @@ -1,4 +1,3 @@ - name = "fftpack" description = "A package of fortran subprograms for the fast fourier transform of periodic and other symmetric sequences" homepage = "http://www.netlib.org/fftpack/" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a58de7d..67d8837 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,66 +1,67 @@ -# Locate the source directory +# Locate the source directories set(dir ${CMAKE_CURRENT_SOURCE_DIR}) +set(subdir "${dir}/fftpack") # The source files set(FFTPACK_SOURCES - ${dir}/cfftb1.f90 - ${dir}/cfftf1.f90 - ${dir}/cffti1.f90 - ${dir}/cosqb1.f90 - ${dir}/cosqf1.f90 - ${dir}/dcosqb.f90 - ${dir}/dcosqf.f90 - ${dir}/dcosqi.f90 - ${dir}/dcost.f90 - ${dir}/dcosti.f90 - ${dir}/dfftb.f90 - ${dir}/dfftf.f90 - ${dir}/dffti.f90 - ${dir}/dsinqb.f90 - ${dir}/dsinqf.f90 - ${dir}/dsinqi.f90 - ${dir}/dsint.f90 - ${dir}/dsinti.f90 - ${dir}/dzfftb.f90 - ${dir}/dzfftf.f90 - ${dir}/dzffti.f90 - ${dir}/ezfft1.f90 + ${subdir}/cfftb1.f90 + ${subdir}/cfftf1.f90 + ${subdir}/cffti1.f90 + ${subdir}/cosqb1.f90 + ${subdir}/cosqf1.f90 + ${subdir}/dcosqb.f90 + ${subdir}/dcosqf.f90 + ${subdir}/dcosqi.f90 + ${subdir}/dcost.f90 + ${subdir}/dcosti.f90 + ${subdir}/dfftb.f90 + ${subdir}/dfftf.f90 + ${subdir}/dffti.f90 + ${subdir}/dsinqb.f90 + ${subdir}/dsinqf.f90 + ${subdir}/dsinqi.f90 + ${subdir}/dsint.f90 + ${subdir}/dsinti.f90 + ${subdir}/dzfftb.f90 + ${subdir}/dzfftf.f90 + ${subdir}/dzffti.f90 + ${subdir}/ezfft1.f90 ${dir}/fftpack.f90 - ${dir}/fftpack_dct.f90 - ${dir}/fftpack_fft.f90 - ${dir}/fftpack_fftshift.f90 - ${dir}/fftpack_ifft.f90 - ${dir}/fftpack_ifftshift.f90 - ${dir}/fftpack_irfft.f90 - ${dir}/fftpack_rfft.f90 - ${dir}/fftpack_utils.f90 - ${dir}/passb.f90 - ${dir}/passb2.f90 - ${dir}/passb3.f90 - ${dir}/passb4.f90 - ${dir}/passb5.f90 - ${dir}/passf.f90 - ${dir}/passf2.f90 - ${dir}/passf3.f90 - ${dir}/passf4.f90 - ${dir}/passf5.f90 - ${dir}/radb2.f90 - ${dir}/radb3.f90 - ${dir}/radb4.f90 - ${dir}/radb5.f90 - ${dir}/radbg.f90 - ${dir}/radf2.f90 - ${dir}/radf3.f90 - ${dir}/radf4.f90 - ${dir}/radf5.f90 - ${dir}/radfg.f90 - ${dir}/rfftb1.f90 - ${dir}/rfftf1.f90 - ${dir}/rffti1.f90 - ${dir}/rk.f90 - ${dir}/sint1.f90 - ${dir}/zfftb.f90 - ${dir}/zfftf.f90 - ${dir}/zffti.f90 + ${subdir}/fftpack_dct.f90 + ${subdir}/fftpack_fft.f90 + ${subdir}/fftpack_fftshift.f90 + ${subdir}/fftpack_ifft.f90 + ${subdir}/fftpack_ifftshift.f90 + ${subdir}/fftpack_irfft.f90 + ${subdir}/fftpack_rfft.f90 + ${subdir}/fftpack_utils.f90 + ${subdir}/passb.f90 + ${subdir}/passb2.f90 + ${subdir}/passb3.f90 + ${subdir}/passb4.f90 + ${subdir}/passb5.f90 + ${subdir}/passf.f90 + ${subdir}/passf2.f90 + ${subdir}/passf3.f90 + ${subdir}/passf4.f90 + ${subdir}/passf5.f90 + ${subdir}/radb2.f90 + ${subdir}/radb3.f90 + ${subdir}/radb4.f90 + ${subdir}/radb5.f90 + ${subdir}/radbg.f90 + ${subdir}/radf2.f90 + ${subdir}/radf3.f90 + ${subdir}/radf4.f90 + ${subdir}/radf5.f90 + ${subdir}/radfg.f90 + ${subdir}/rfftb1.f90 + ${subdir}/rfftf1.f90 + ${subdir}/rffti1.f90 + ${subdir}/rk.f90 + ${subdir}/sint1.f90 + ${subdir}/zfftb.f90 + ${subdir}/zfftf.f90 + ${subdir}/zffti.f90 ) set(FFTPACK_SOURCES ${FFTPACK_SOURCES} PARENT_SCOPE) diff --git a/src/Makefile b/src/fftpack/Makefile similarity index 100% rename from src/Makefile rename to src/fftpack/Makefile diff --git a/src/cfftb1.f90 b/src/fftpack/cfftb1.f90 similarity index 100% rename from src/cfftb1.f90 rename to src/fftpack/cfftb1.f90 diff --git a/src/cfftf1.f90 b/src/fftpack/cfftf1.f90 similarity index 100% rename from src/cfftf1.f90 rename to src/fftpack/cfftf1.f90 diff --git a/src/cffti1.f90 b/src/fftpack/cffti1.f90 similarity index 100% rename from src/cffti1.f90 rename to src/fftpack/cffti1.f90 diff --git a/src/cosqb1.f90 b/src/fftpack/cosqb1.f90 similarity index 100% rename from src/cosqb1.f90 rename to src/fftpack/cosqb1.f90 diff --git a/src/cosqf1.f90 b/src/fftpack/cosqf1.f90 similarity index 100% rename from src/cosqf1.f90 rename to src/fftpack/cosqf1.f90 diff --git a/src/dcosqb.f90 b/src/fftpack/dcosqb.f90 similarity index 100% rename from src/dcosqb.f90 rename to src/fftpack/dcosqb.f90 diff --git a/src/dcosqf.f90 b/src/fftpack/dcosqf.f90 similarity index 100% rename from src/dcosqf.f90 rename to src/fftpack/dcosqf.f90 diff --git a/src/dcosqi.f90 b/src/fftpack/dcosqi.f90 similarity index 100% rename from src/dcosqi.f90 rename to src/fftpack/dcosqi.f90 diff --git a/src/dcost.f90 b/src/fftpack/dcost.f90 similarity index 100% rename from src/dcost.f90 rename to src/fftpack/dcost.f90 diff --git a/src/dcosti.f90 b/src/fftpack/dcosti.f90 similarity index 100% rename from src/dcosti.f90 rename to src/fftpack/dcosti.f90 diff --git a/src/dfftb.f90 b/src/fftpack/dfftb.f90 similarity index 100% rename from src/dfftb.f90 rename to src/fftpack/dfftb.f90 diff --git a/src/dfftf.f90 b/src/fftpack/dfftf.f90 similarity index 100% rename from src/dfftf.f90 rename to src/fftpack/dfftf.f90 diff --git a/src/dffti.f90 b/src/fftpack/dffti.f90 similarity index 100% rename from src/dffti.f90 rename to src/fftpack/dffti.f90 diff --git a/src/dsinqb.f90 b/src/fftpack/dsinqb.f90 similarity index 100% rename from src/dsinqb.f90 rename to src/fftpack/dsinqb.f90 diff --git a/src/dsinqf.f90 b/src/fftpack/dsinqf.f90 similarity index 100% rename from src/dsinqf.f90 rename to src/fftpack/dsinqf.f90 diff --git a/src/dsinqi.f90 b/src/fftpack/dsinqi.f90 similarity index 100% rename from src/dsinqi.f90 rename to src/fftpack/dsinqi.f90 diff --git a/src/dsint.f90 b/src/fftpack/dsint.f90 similarity index 100% rename from src/dsint.f90 rename to src/fftpack/dsint.f90 diff --git a/src/dsinti.f90 b/src/fftpack/dsinti.f90 similarity index 100% rename from src/dsinti.f90 rename to src/fftpack/dsinti.f90 diff --git a/src/dzfftb.f90 b/src/fftpack/dzfftb.f90 similarity index 100% rename from src/dzfftb.f90 rename to src/fftpack/dzfftb.f90 diff --git a/src/dzfftf.f90 b/src/fftpack/dzfftf.f90 similarity index 100% rename from src/dzfftf.f90 rename to src/fftpack/dzfftf.f90 diff --git a/src/dzffti.f90 b/src/fftpack/dzffti.f90 similarity index 100% rename from src/dzffti.f90 rename to src/fftpack/dzffti.f90 diff --git a/src/ezfft1.f90 b/src/fftpack/ezfft1.f90 similarity index 100% rename from src/ezfft1.f90 rename to src/fftpack/ezfft1.f90 diff --git a/src/fftpack_dct.f90 b/src/fftpack/fftpack_dct.f90 similarity index 100% rename from src/fftpack_dct.f90 rename to src/fftpack/fftpack_dct.f90 diff --git a/src/fftpack_fft.f90 b/src/fftpack/fftpack_fft.f90 similarity index 100% rename from src/fftpack_fft.f90 rename to src/fftpack/fftpack_fft.f90 diff --git a/src/fftpack_fftshift.f90 b/src/fftpack/fftpack_fftshift.f90 similarity index 100% rename from src/fftpack_fftshift.f90 rename to src/fftpack/fftpack_fftshift.f90 diff --git a/src/fftpack_ifft.f90 b/src/fftpack/fftpack_ifft.f90 similarity index 100% rename from src/fftpack_ifft.f90 rename to src/fftpack/fftpack_ifft.f90 diff --git a/src/fftpack_ifftshift.f90 b/src/fftpack/fftpack_ifftshift.f90 similarity index 100% rename from src/fftpack_ifftshift.f90 rename to src/fftpack/fftpack_ifftshift.f90 diff --git a/src/fftpack_irfft.f90 b/src/fftpack/fftpack_irfft.f90 similarity index 100% rename from src/fftpack_irfft.f90 rename to src/fftpack/fftpack_irfft.f90 diff --git a/src/fftpack_rfft.f90 b/src/fftpack/fftpack_rfft.f90 similarity index 100% rename from src/fftpack_rfft.f90 rename to src/fftpack/fftpack_rfft.f90 diff --git a/src/fftpack_utils.f90 b/src/fftpack/fftpack_utils.f90 similarity index 100% rename from src/fftpack_utils.f90 rename to src/fftpack/fftpack_utils.f90 diff --git a/src/meson.build b/src/fftpack/meson.build similarity index 100% rename from src/meson.build rename to src/fftpack/meson.build diff --git a/src/passb.f90 b/src/fftpack/passb.f90 similarity index 100% rename from src/passb.f90 rename to src/fftpack/passb.f90 diff --git a/src/passb2.f90 b/src/fftpack/passb2.f90 similarity index 100% rename from src/passb2.f90 rename to src/fftpack/passb2.f90 diff --git a/src/passb3.f90 b/src/fftpack/passb3.f90 similarity index 100% rename from src/passb3.f90 rename to src/fftpack/passb3.f90 diff --git a/src/passb4.f90 b/src/fftpack/passb4.f90 similarity index 100% rename from src/passb4.f90 rename to src/fftpack/passb4.f90 diff --git a/src/passb5.f90 b/src/fftpack/passb5.f90 similarity index 100% rename from src/passb5.f90 rename to src/fftpack/passb5.f90 diff --git a/src/passf.f90 b/src/fftpack/passf.f90 similarity index 100% rename from src/passf.f90 rename to src/fftpack/passf.f90 diff --git a/src/passf2.f90 b/src/fftpack/passf2.f90 similarity index 100% rename from src/passf2.f90 rename to src/fftpack/passf2.f90 diff --git a/src/passf3.f90 b/src/fftpack/passf3.f90 similarity index 100% rename from src/passf3.f90 rename to src/fftpack/passf3.f90 diff --git a/src/passf4.f90 b/src/fftpack/passf4.f90 similarity index 100% rename from src/passf4.f90 rename to src/fftpack/passf4.f90 diff --git a/src/passf5.f90 b/src/fftpack/passf5.f90 similarity index 100% rename from src/passf5.f90 rename to src/fftpack/passf5.f90 diff --git a/src/radb2.f90 b/src/fftpack/radb2.f90 similarity index 100% rename from src/radb2.f90 rename to src/fftpack/radb2.f90 diff --git a/src/radb3.f90 b/src/fftpack/radb3.f90 similarity index 100% rename from src/radb3.f90 rename to src/fftpack/radb3.f90 diff --git a/src/radb4.f90 b/src/fftpack/radb4.f90 similarity index 100% rename from src/radb4.f90 rename to src/fftpack/radb4.f90 diff --git a/src/radb5.f90 b/src/fftpack/radb5.f90 similarity index 100% rename from src/radb5.f90 rename to src/fftpack/radb5.f90 diff --git a/src/radbg.f90 b/src/fftpack/radbg.f90 similarity index 100% rename from src/radbg.f90 rename to src/fftpack/radbg.f90 diff --git a/src/radf2.f90 b/src/fftpack/radf2.f90 similarity index 100% rename from src/radf2.f90 rename to src/fftpack/radf2.f90 diff --git a/src/radf3.f90 b/src/fftpack/radf3.f90 similarity index 100% rename from src/radf3.f90 rename to src/fftpack/radf3.f90 diff --git a/src/radf4.f90 b/src/fftpack/radf4.f90 similarity index 100% rename from src/radf4.f90 rename to src/fftpack/radf4.f90 diff --git a/src/radf5.f90 b/src/fftpack/radf5.f90 similarity index 100% rename from src/radf5.f90 rename to src/fftpack/radf5.f90 diff --git a/src/radfg.f90 b/src/fftpack/radfg.f90 similarity index 100% rename from src/radfg.f90 rename to src/fftpack/radfg.f90 diff --git a/src/rfftb1.f90 b/src/fftpack/rfftb1.f90 similarity index 100% rename from src/rfftb1.f90 rename to src/fftpack/rfftb1.f90 diff --git a/src/rfftf1.f90 b/src/fftpack/rfftf1.f90 similarity index 100% rename from src/rfftf1.f90 rename to src/fftpack/rfftf1.f90 diff --git a/src/rffti1.f90 b/src/fftpack/rffti1.f90 similarity index 100% rename from src/rffti1.f90 rename to src/fftpack/rffti1.f90 diff --git a/src/rk.f90 b/src/fftpack/rk.f90 similarity index 100% rename from src/rk.f90 rename to src/fftpack/rk.f90 diff --git a/src/sint1.f90 b/src/fftpack/sint1.f90 similarity index 100% rename from src/sint1.f90 rename to src/fftpack/sint1.f90 diff --git a/src/zfftb.f90 b/src/fftpack/zfftb.f90 similarity index 100% rename from src/zfftb.f90 rename to src/fftpack/zfftb.f90 diff --git a/src/zfftf.f90 b/src/fftpack/zfftf.f90 similarity index 100% rename from src/zfftf.f90 rename to src/fftpack/zfftf.f90 diff --git a/src/zffti.f90 b/src/fftpack/zffti.f90 similarity index 100% rename from src/zffti.f90 rename to src/fftpack/zffti.f90