nms, a FORTRAN90 code which is a good beginner's mathematical code, with well tested routines for standard problems.

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 GNU LGPL license.


nms is available in a FORTRAN90 version.

Related Data and Programs:


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.


  1. Milton Abramowitz, Irene Stegun,
    Handbook of Mathematical Functions,
    National Bureau of Standards, 1964,
    ISBN: 0-486-61272-4,
    LC: QA47.A34.
  2. Donald Amos, SL Daniel, MK Weston,
    CDC 6600 subroutines IBESS and JBESS for Bessel functions I(NU,X) and J(NU,X),
    ACM Transactions on Mathematical Software,
    Volume 3, pages 76-92, 1977.
  3. Paul Bratley, Bennett Fox, Linus Schrage,
    A Guide to Simulation,
    Second Edition,
    Springer, 1987,
    ISBN: 0387964673,
    LC: QA76.9.C65.B73.
  4. Richard Brent,
    Algorithms for Minimization without Derivatives,
    Dover, 2002,
    ISBN: 0-486-41998-3,
    LC: QA402.5.B74.
  5. Roger Broucke,
    Algorithm 446: Ten Subroutines for the Manipulation of Chebyshev Series,
    Communications of the ACM,
    Volume 16, Number 4, April 1973, pages 254-256.
  6. Bill Buzbee,
    The SLATEC Common Math code,
    in Sources and Development of Mathematical Software,
    edited by Wayne Cowell,
    Prentice-Hall, 1984,
    ISBN: 0-13-823501-5,
    LC: QA76.95.S68.
  7. Carl deBoor,
    A Practical Guide to Splines,
    Springer, 2001,
    ISBN: 0387953663,
    LC: QA1.A647.v27.
  8. Jacob Dekker,
    Finding a Zero by Means of Successive Linear Interpolation,
    in Constructive Aspects of the Fundamental Theorem of Algebra,
    edited by Bruno Dejon, Peter Henrici,
    Wiley, 1969,
    ISBN: 0471203009,
    LC: QA212.C65.
  9. John Dennis, Robert Schnabel,
    Numerical Methods for Unconstrained Optimization and Nonlinear Equations,
    SIAM, 1996,
    ISBN13: 978-0-898713-64-0,
    LC: QA402.5.D44.
  10. Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
    LINPACK User's Guide,
    SIAM, 1979,
    ISBN13: 978-0-898711-72-1,
    LC: QA214.L56.
  11. Bennett Fox,
    Algorithm 647: Implementation and Relative Efficiency of Quasirandom Sequence Generators,
    ACM Transactions on Mathematical Software,
    Volume 12, Number 4, December 1986, pages 362-376.
  12. Leslie Fox, Ian Parker,
    Chebyshev Polynomials in Numerical Analysis,
    Oxford Press, 1968,
    LC: QA297.F65.
  13. Phyllis Fox, Andrew Hall, Norman Schryer,
    Algorithm 528: Framework for a Portable code,
    ACM Transactions on Mathematical Software,
    Volume 4, Number 2, June 1978, page 176-188.
  14. Fred Fritsch, Judy Butland,
    A Method for Constructing Local Monotone Piecewise Cubic Interpolants,
    SIAM Journal on Scientific and Statistical Computing,
    Volume 5, Number 2, June 1984, pages 300-304.
  15. Fred Fritsch, Ralph Carlson,
    Monotone Piecewise Cubic Interpolation,
    SIAM Journal on Numerical Analysis,
    Volume 17, Number 2, April 1980, pages 238-246.
  16. Charles Gear,
    Numerical Initial Value Problems in Ordinary Differential Equations,
    Prentice-Hall, 1971,
    ISBN: 0136266061,
    LC: QA372.G4.
  17. Ron Jones, David Kahaner,
    XERROR, The SLATEC Error Handling Package,
    Software: Practice and Experience,
    Volume 13, Number 3, 1983, pages 251-257.
  18. David Kahaner, Cleve Moler, Steven Nash,
    Numerical Methods and Software,
    Prentice Hall, 1989,
    ISBN: 0-13-627258-4,
    LC: TA345.K34.
  19. Charles Lawson, Richard Hanson, David Kincaid, Fred Krogh,
    Algorithm 539: Basic Linear Algebra Subprograms for Fortran Usage,
    ACM Transactions on Mathematical Software,
    Volume 5, Number 3, September 1979, pages 308-323.
  20. Pierre LEcuyer,
    Random Number Generation,
    in Handbook of Simulation,
    edited by Jerry Banks,
    Wiley, 1998,
    ISBN: 0471134031,
    LC: T57.62.H37.
  21. Peter Lewis, Allen Goodman, James Miller,
    A Pseudo-Random Number Generator for the System/360,
    IBM Systems Journal,
    Volume 8, Number 2, 1969, pages 136-143.
  22. George Marsaglia, Wai Wan Tsang,
    A fast, easily implemented method for sampling from decreasing or symmetric unimodal density functions,
    SIAM Journal of Scientific and Statistical Computing,
    Volume 5, Number 2, June 1984, pages 349-359.
  23. Jorge More, Burton Garbow, Kenneth Hillstrom,
    User Guide for MINPACK-1,
    Technical Report ANL-80-74,
    Argonne National Laboratory, 1980.
  24. Frank Olver,
    Tables of Bessel Functions of Moderate or Large Orders,
    NPL Mathematical Tables, Volume 6,
    Her Majesty's Stationery Office, London, 1962.
  25. Robert Piessens, Elise deDoncker-Kapenga, Christian Ueberhuber, David Kahaner,
    QUADPACK: A Subroutine Package for Automatic Integration,
    Springer, 1983,
    ISBN: 3540125531,
    LC: QA299.3.Q36.
  26. Michael Powell,
    A Hybrid Method for Nonlinear Equations,
    in Numerical Methods for Nonlinear Algebraic Equations,
    edited by Philip Rabinowitz,
    Gordon and Breach, 1970,
    ISBN13: 978-0677142302,
    LC: QA218.N85.
  27. Robert Schnabel, John Koontz, Barry Weiss,
    A modular system of algorithms for unconstrained minimization,
    Technical Report CU-CS-240-82,
    Computer Science Department,
    University of Colorado at Boulder, 1982.
  28. Lawrence Shampine, Herman Watts,
    ZEROIN, a Root-Solving Routine,
    Technical Report: SC-TM-70-631,
    Sandia National Laboratories, September 1970.
  29. Paul Swarztrauber,
    Vectorizing the FFT's,
    in Parallel Computations,
    edited by Garry Rodrigue,
    Academic Press, 1982,
    ISBN: 0125921012,
    LC: QA76.6.P348.
  30. Stephen Wolfram,
    The Mathematica Book,
    Fourth Edition,
    Cambridge University Press, 1999,
    ISBN: 0-521-64314-7,
    LC: QA76.95.W65.

Source Code:

Last revised on 18 June 2020.