Skip to content
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

To update the fftpack package #1

Open
4 of 9 tasks
zoziha opened this issue May 21, 2021 · 1 comment
Open
4 of 9 tasks

To update the fftpack package #1

zoziha opened this issue May 21, 2021 · 1 comment

Comments

@zoziha
Copy link
Contributor

zoziha commented May 21, 2021

You recommended me (see fortran-lang/fpm-registry#40 (comment)) to check whether the code in this repository(certik/fftpack) is consistent with netlib/dfftpack1.0 (fftpack4.0). I confirm that they are consistent.
And I want to learn from brocolis/fftpack to make dfftpack1.0(fftpack4.0) also support fpm. I will do this immediately.

Later, We update dfftpack1.0(fftpack4.0) to fftpack5.1:
netlib/dfftpack1.0(fftpack4.0) with a easy-to-use interface (-> ncar/fftpack5.1 with a easy-to-use interface -> john/fftpack5.1 with a easy-to-use interface) -> fftpack5.1 with a easy-to-use interface.

I got inspiration from stdlib, I think we can use fypp as a preprocessor to deal with the multi-precision problem of fftpack package.
Do we need to use fypp to refactor netlib/dffpack1.0(fftpack4.0) and nacr/fftpack5.1?

Tasks

  • Let's collect the original sources from netlib. Commit. This might be similar to https://github.com/certik/fftpack, but we should check we got everything.
  • we should add tests, the only test I see there is in https://github.com/certik/fftpack/blob/030cbf4fd35c35ef19387b4835bde3ac73019b64/test.f
  • We should add Fortran 90 interface to the package (add fpm support, keep make support)
  • Add 2D and 3D transforms
  • Check any other functionality from the repositories you mentioned and see if there is anything else that we should include
    Such as fftshift, czt, hilbert, filter.
  • Add benchmarks
  • Some documentation how to use
  • Multiple precision
  • Use Fortran SAVE feature to save wsave(:)

Links

  1. netlib/dfftpack1.0(fftpack4.0) (License : public domain)
    Fortran77
  2. nacr/fftpack5.1 (License: look like MIT and BSD-3, see comment)
    Fortran77
  3. John Burkardt/fftpack5.1 (License: LGPL/GPL)
    Fortran90 from nacr/fftpack5.1
  4. QcmPlab/SciFortran (License: shall be GPL)
    From John Burkardt fortran90, fftpack5.1 with interface.
  5. keurfonluu/FFTPack (License: shall be GPL)
    From John Burkardt fortran90, fftpack5.1 with interface.
  6. jlokimlin/modern_fftpack (License: FFTPACK license look like MIT and BSD-3 ?)
    Fortran90, look like from nacr/fftpack5.1 ?
@zoziha
Copy link
Contributor Author

zoziha commented Jul 14, 2021

I am happy that fpm supports native flag settings (see my discourse help).
I have just 2 months of ample time recently, and I am very happy to set up an interface for fftpack to make a long-term development attempt.

My current done job (added fpm support for two version of fftpack):

I simply migrated netlib/dfftpack1.0 (fftpack4.0) to the branch fortran-fans/fftpack4.0 (License: public domain), and initially added fpm support;
At the same time, I simply migrated john/fftpack5.1(F90) to the branch fortran-fans/fftpack5.1 (License: GPL), and initially added fpm support. Obviously, it currently depends on -fallow-argument-mismatch.

My request (make two PRs):

I want to submit the above two versions of the fftpack package to your repo at the same time. My suggestion is to create a separate branch for fftpack4.0 and merge fftpack5.1 into your master branch (or a new branch named fftpack5.1). What do you think?
If you agree, you need to create a fftpack4.0 branch for me in your this repo, then I will make two PRs, thank you~

Potential problem (LICENSE):

Now I have not specified any license for these two packages, I am not familiar with it myself, and all licenses are kept as they are.

Modified @2021-07-16

Maybe I think I should avoid the GPL license.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant