I think it’s been mentioned in other posts, but I wanted to officially announce the new, Modern Fortran Quadpack library for numerical integration (quadrature):
This is a complete modernization and refactoring of the old library from Netlib. Changes include:
-
It has been converted from FORTRAN 77 fixed form to modern free form syntax. This includes elimination of all GOTOs and other obsolescent language features.
-
It is now a single stand-alone module, and has no dependencies on any other code from SLATEC or LINPACK.
-
It is a Fortran Package Manager package.
-
The separate routines in the original library for single and double precision have been eliminated. The library now exports a single (
real32
), double (real64
) and quadruple (real128
) precision interface using the same code by employing a preprocessor scheme. -
The coefficients have been regenerated with full quadruple precision. This was done using a new program that employed the MPFUN2020 arbitrary precision Fortran library. Quad-precision versions of these routines are available in no other library that I’ve been able to find.
-
Some minor bugs have been fixed in the original code that were in there for decades (see here, here, here, and here ).
-
Other procedures not present in the original QUADPACK have been added (new routines, and modernized ones from old libraries such as SLATEC and the NSWC Library):
QUAD
,AVINT
,QNC79
,GAUSS8
,SIMPSON
, andLOBATTO
. -
The SLATEC docstrings have been converted to Ford style, which allows for auto-generation of the API docs.
-
Some typos, there for decades, have been corrected in the comments.
-
It’s unit-tested with GitHub Actions CI
The goal here is to restart Quadpack development where it left off 40 years ago. Bugs can be fixed, and new routines can be added. This can be the standard state-of-the-art library for numerical quadrature once again, second to no other library in any other programming language. There’s no reason to be stuck with the old Netlib FORTRAN 77 code anymore. Check the GitHub issues to see some ideas on new methods that we want to add. Join us!!
Just like MINPACK, maybe we eventually move this under the fortran-lang umbrella, and also maybe try to get it into SciPy? @certik what do you think?