Should the Fortran Standard Library have numerical algorithms?

The scope of the Fortran Standard Library is

  • Utilities (containers, strings, files, OS/environment integration, unit testing & assertions, logging, …)
  • Algorithms (searching and sorting, merging, …)
  • Mathematics (linear algebra, sparse matrices, special functions, fast Fourier transform, random numbers, statistics, ordinary differential equations, numerical integration, optimization, …)

Although it would be convenient to have the 3rd item as part of the language, would it be preferable to use such features in production code, rather than compile the code yourself? You may want to read it to understand it, to add timing code, or even modify the algorithm. Using the standard library, would you have a situation where Intel, NAG, and gfortran compute slightly different values for your integral or different solutions to your optimization problem? There is a public implementation of the Fortran Standard Library on github, but if it became part of the language, each compiler could use its own implementation. I read that Intel is wary of using public domain code in its compilers.

I use, for example, the intrinsic random_number subroutine in my codes, but would it advisable to do so in research that is published and should be reproducible? The result of calling random_number is different for each compiler.

I am grateful that people are working on public domain implementations of “Numerical Recipes” in modern Fortran, but I wonder if they should be part of the language.

My two cents on this is that Fortran is not general purpose like python, nor is it a systems language like C. Scientific computing is front and center for fortran and it is a good practice to have it standardized.

Intel has more than enough man-power to document deviations from the standard tolerances and values compared to the reference implementations anyway.

2 Likes