nms, a Fortran90 code which includes a wide variety of numerical software, including solvers for linear systems of equations, a piecewise Hermie cubic (PWH) interpolation package (PCHIP), numerical quadrature, linear least squares data fitting, the solution of nonlinear equations, ordinary differential equations (ODE), optimization and nonlinear least squares (NLS), simulation and random numbers, trigonometric approximation and Fast Fourier Transforms (FFT).
The code accompanies the text "Numerical Methods and Software". The book is a modern discussion of current numerical algorithms and software. The software that comes with the book has been extracted from standard software libraries, particularly the SLATEC code. Thus the book is also a good introduction to the use of a portion of the SLATEC code, which does not have a widely available solid hardcopy reference.
In particular, the code includes some or all of:
The computer code and data files made available on this web page are distributed under the MIT license.
nms is available in a Fortran77 version and a Fortran90 version.
bernstein_polynomial, a Fortran90 code which evaluates the Bernstein polynomials, useful for uniform approximation of functions;
distance_to_position, a Fortran90 code which estimates the positions of cities based on a city-to-city distance table. It uses UNCMIN from NMS to solve this problem.
fftpack5, a Fortran90 code which contains version 5 of FFTPACK.
machine, a Fortran90 code which reports the value of machine arithmetic constants.
ode, a Fortran90 code which implements the Shampine and Gordon ODE solver.
qr_solve, a Fortran90 code which computes the least squares solution of a linear system A*x=b.
quadpack, a Fortran90 code which approximates integrals of functions.
reactor_simulation, a Fortran90 code which is a simple Monte Carlo simulation of the shielding effect of a slab of a certain thickness in front of a neutron source. This program was provided as an example with the book "Numerical Methods and Software."
rkf45, a Fortran90 code which is a Runge-Kutta-Fehlberg ODE solver.
slatec, a Fortran90 code which evaluates many special functions.
xerror, a Fortran90 code which is designed to report and handle errors detected during program execution.