NMS - Numerical Analysis Library
NMS is a good beginner's mathematical library, with well tested
routines for standard problems. NMS accompanies the text
"Numerical Methods and Software". The book is a very 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 library. Thus the book is also a good
introduction to the use of the SLATEC library, which does not have a
solid hardcopy reference.
In particular, NMS includes some or all of:
-
FFTPACK, the Swarztrauber FFT package,
-
FUNPACK, Amos's special function package,
-
PCHIP, Fritsch's Piecewise Cubic Hermite Interpolation Package,
-
QUADPACK, for approximate integration;
-
LINPACK, for solving linear systems.
-
SDRIV, for integrating systems of ODE's;
-
XERROR, for handling run time errors.
-
Reference:
-
Kahaner, Moler, and Nash,
Numerical Methods and Software,
Prentice Hall, 1988.
Files you may copy include:
The list of routines includes:
-
AIRY_VALUES returns some values of the Airy function for testing.
-
ALNGAM computes the log of the absolute value of the Gamma function.
-
ASYJY computes high order Bessel functions J and Y.
-
BAKSLV solves A'*x=b where A is a lower triangular matrix.
-
BESI0 computes the hyperbolic Bessel function of the first kind, order zero.
-
BESI0E computes the scaled hyperbolic Bessel function I0(X).
-
BESI0_VALUES returns some values of the I0 Bessel function for testing.
-
BESJ computes an N member sequence of J Bessel functions.
-
BESJ0_VALUES returns some values of the J0 Bessel function for testing.
-
BESJ1_VALUES returns some values of the J1 Bessel function for testing.
-
BESJN_VALUES returns some values of the JN Bessel function for testing.
-
BP evaluates the N+1 Bernstein basis functions of degree N on [0,1].
-
CFFTB computes the backward complex discrete Fourier transform.
-
CFFTB1 is a lower-level routine used by CFFTB.
-
CFFTB_2D computes a backward two dimensional complex fast Fourier transform.
-
CFFTF computes the forward complex discrete Fourier transform.
-
CFFTF1 is a lower level routine used by CFFTF.
-
CFFTF_2D computes a two dimensional complex fast Fourier transform.
-
CFFTI initializes WSAVE, used in CFFTF and CFFTB.
-
CFFTI1 is a lower level routine used by CFFTI.
-
CHFDV evaluates a cubic polynomial and its derivative given in Hermite form.
-
CHFEV evaluates a cubic polynomial given in Hermite form.
-
CHFIV evaluates the integral of a cubic polynomial in Hermite form.
-
CHFMC determines the monotonicity properties of a cubic polynomial.
-
CHKDER checks the gradients of M functions of N variables.
-
CHLHSN finds the L*L' decomposition of the perturbed model hessian matrix.
-
CHOLDC finds the perturbed L*L' decomposition of A+D.
-
COSQB computes the fast cosine transform of quarter wave data.
-
COSQB1 is a lower level routine used by COSQB.
-
COSQF computes the fast cosine transform of quarter wave data.
-
COSQF1 is a lower level routine used by COSQF.
-
COSQI initializes WSAVE, used in COSQF and COSQB.
-
COST computes the discrete Fourier cosine transform of an even sequence.
-
COSTI initializes WSAVE, used in COST.
-
CSEVL evaluates an N term Chebyshev series.
-
CVEC_RANDOM returns a random complex vector in a given range.
-
D1FCN is a dummy routine for evaluating the gradient vector.
-
D1MACH returns double precision machine constants.
-
D2FCN is a dummy version of a routine that computes the second derivative.
-
DFAULT sets default values for the optimization algorithm.
-
DOGDRV finds the next Newton iterate by the double dogleg method.
-
DOGLEG finds the minimizing combination of Gauss-Newton and gradient steps.
-
DOGSTP finds a new step by the double dogleg algorithm.
-
EA performs extrapolation to accelerate the convergence of a sequence.
-
ENORM computes the Euclidean norm of a vector.
-
ERF computes the error function.
-
ERF_VALUES returns some values of the ERF or "error" function for testing.
-
ERFC computes the complementary error function.
-
EZFFTB computes a real periodic sequence from its Fourier coefficients.
-
EZFFTF computes the Fourier coefficients of a real periodic sequence.
-
EZFFTI initializes WSAVE, used in EZFFTF and EZFFTB.
-
EZFFTI1 is a lower level routine used by EZFFTI.
-
FDJAC1 estimates an N by N jacobian matrix using forward differences.
-
FMIN seeks a minimizer of a scalar function of a scalar variable.
-
FORSLV solves A*x=b where A is lower triangular matrix.
-
FSTOCD approximates the gradient of a function using central differences.
-
FSTOFD approximates a derivative by a first order approximation.
-
FZERO searches for a zero of a function F(X) in a given interval.
-
GAMLIM computes the minimum and maximum bounds for X in GAMMA(X).
-
GAMMA computes the gamma function.
-
GAMMA_VALUES returns some values of the Gamma function for testing.
-
GL15T estimates the integral of a function over a finite interval.
-
GRDCHK checks an analytic gradient against an estimated gradient.
-
HESCHK checks an analytic hessian against a computed estimate.
-
HOOKDR finds the next Newton iterate by the More-Hebdon method.
-
HOOKST finds the new step by the More-Hebdon algorithm.
-
HSNINT provides initial hessian when using secant updates.
-
I_SWAP swaps two integer values.
-
I1MACH returns integer machine constants.
-
I_FACTOR factors an integer.
-
INITS estimates the order of an orthogonal series for a given accuracy.
-
ISAMAX finds the index of the vector element of maximum absolute value.
-
J4SAVE saves variables needed by the library error handling routines.
-
INBIN takes a real value X and finds the correct bin for it.
-
JAIRY computes the Airy function and its derivative.
-
LLTSLV solves A*x=b where A = L * L'.
-
LNSRCH finds a next Newton iterate by line search.
-
MVMLTL computes y = L*x where L is a lower triangular matrix stored in A.
-
MVMLTS computes y = A*x where A is a symmetric matrix.
-
MVMLTU computes y=L'*x where L is a lower triangular matrix.
-
NUMXER returns the most recent error number.
-
OPTCHK checks the input to the optimization routine.
-
OPTDRV is a driver for the nonlinear optimization package.
-
OPTIF0 provides a simple interface to the minimization package.
-
OPTSTP: unconstrained minimization stopping criteria
-
PASSB is a lower level routine used by CFFTB1.
-
PASSB2 is a lower level routine used by CFFTB1.
-
PASSB3 is a lower level routine used by CFFTB1.
-
PASSB4 is a lower level routine used by CFFTB1.
-
PASSB5 is a lower level routine used by CFFTB1.
-
PASSF is a lower level routine used by CFFTF1.
-
PASSF2 is a lower level routine used by CFFTF1.
-
PASSF3 is a lower level routine used by CFFTF1.
-
PASSF4 is a lower level routine used by CFFTF1.
-
PASSF5 is a lower level routine used by CFFTF1.
-
PCHCE is called by PCHIC to set end derivatives as requested by the user.
-
PCHCI sets derivatives for a monotone piecewise cubic Hermite interpolant.
-
PCHCS adjusts the curve produced by PCHIM so it is more "visually pleasing".
-
PCHDF approximates a derivative using divided differences of data.
-
PCHEV evaluates a piecewise cubic Hermite or spline function.
-
PCHEZ carries out easy to use spline or cubic Hermite interpolation.
-
PCHFD evaluates a piecewise cubic Hermite function.
-
PCHFE evaluates a piecewise cubic Hermite function at an array of points.
-
PCHIA evaluates the integral of a piecewise cubic Hermite function.
-
PCHIC sets derivatives for a piecewise monotone cubic Hermite interpolant.
-
PCHID evaluates the definite integral of a piecewise cubic Hermite function.
-
PCHIM sets derivatives for a piecewise cubic Hermite interpolant.
-
PCHMC: piecewise cubic Hermite monotonicity checker.
-
PCHQA: easy to use cubic Hermite or spline integration.
-
PCHSP sets derivatives for Hermite representation of cubic spline interpolant.
-
PCHST: PCHIP sign-testing routine.
-
PCHSW: the PCHCS switch excursion limiter.
-
PI returns the value of pi.
-
Q1DA approximates the definite integral of a function of one variable.
-
Q1DAX approximates the integral of a function of one variable.
-
QAGI approximates an integral over an infinite or semi-infinite interval.
-
QAGIE is called by QAGI to compute integrals on an infinite interval.
-
QFORM produces the explicit QR factorization of a matrix.
-
QK15 carries out a 15 point Gauss-Kronrod quadrature rule.
-
QK15I applies a 15 point Gauss Kronrod quadrature rule.
-
QPSRT maintains the descending ordering in a list of integral error estimates.
-
QRAUX1 interchanges two rows of an upper Hessenberg matrix.
-
QRAUX2 pre-multiplies an upper Hessenberg matrix by a Jacobi rotation.
-
QRFAC computes a QR factorization using Householder transformations.
-
QRUPDT updates a QR factorization.
-
R1MACH returns single precision machine constants.
-
R1MPYQ computes A*Q, where Q is the product of Householder transformations.
-
R1UPDT re-triangularizes a matrix after a rank one update.
-
R9LGMC computes the log gamma correction factor.
-
R_RANDOM returns a random real in a given range.
-
R_SWAP swaps two real values.
-
RADB2 is a lower level routine used by RFFTB1.
-
RADB3 is a lower level routine used by RFFTB1.
-
RADB4 is a lower level routine used by RFFTB1.
-
RADB5 is a lower level routine used by RFFTB1.
-
RADBG is a lower level routine used by RFFTB1.
-
RADF2 is a lower level routine used by RFFTF1.
-
RADF3 is a lower level routine used by RFFTF1.
-
RADF4 is a lower level routine used by RFFTF1.
-
RADF5 is a lower level routine used by RFFTF1.
-
RADFG is a lower level routine used by RFFTF1.
-
RANDOM_INITIALIZE initializes the FORTRAN 90 random number seed.
-
RESULT prints information about the optimization process.
-
RFFTB computes a real periodic sequence from its Fourier coefficients.
-
RFFTB1 is a lower level routine used by RFFTB.
-
RFFTF computes the Fourier coefficients of a real periodic sequence.
-
RFFTF1 is a lower level routine used by RFFTF and SINT.
-
RFFTI initializes WSAVE, used in RFFTF and RFFTB.
-
RFFTI1 is a lower level routine used by RFFTI.
-
RNOR generates normal random numbers.
-
RSTART is an entry point used to initialize RNOR.
-
RSFTB computes a "slow" backward Fourier transform of real data.
-
RSFTF computes a "slow" forward Fourier transform of real data.
-
RUNGE evaluates Runge's function.
-
RUNGEP evaluates the derivative of Runge's function.
-
RVEC_RANDOM returns a random real vector in a given range.
-
RVEC_REVERSE reverses the elements of a real vector.
-
SAMAX returns the maximum absolute value of the entries in a vector.
-
SASUM sums the absolute values of the entries of a vector.
-
SAXPY adds a constant times one vector to another.
-
SDCOR computes corrections to the Y array of SDRIV3.
-
SDCST sets coefficients used by the core integrator SDSTP.
-
SDNTL sets parameters for SDSTP.
-
SDNTP interpolates the K-th derivative of the ODE solution Y at TOUT.
-
SDOT forms the dot product of two vectors.
-
SDPSC computes the predicted YH values.
-
SDPST is called to reevaluate the partial derivatives.
-
SDRIV1 solves a system of ordinary differential equations.
-
SDRIV2 solves a system of ordinary differential equations.
-
SDRIV3 solves a system of ordinary differential equations.
-
SDSCL rescales the YH array whenever the ODE step size is changed.
-
SDSTP performs one step of the integration of an ODE system.
-
SDZRO searches for a zero of a function in a given interval.
-
SECFAC updates the hessian by the BFGS factored method.
-
SECUNF updates a Hessian matrix by the BFGS unfactored method.
-
SGBFA factors a real band matrix by elimination.
-
SGBSL solves a real banded system factored by SGBCO or SGBFA.
-
SGECO factors a real matrix and estimates its condition number.
-
SGEFA factors a real matrix.
-
SGEFS solves a general N by N system of single precision linear equations.
-
SGESL solves a real general linear system A * X = B.
-
SINQB computes the fast sine transform of quarter wave data.
-
SINQF computes the fast sine transform of quarter wave data.
-
SINQI initializes WSAVE, used in SINQF and SINQB.
-
SINT computes the discrete Fourier sine transform of an odd sequence.
-
SINT1 is a lower level routine used by SINT.
-
SINTI initializes WSAVE, used in SINT.
-
SNDOFD approximates a Hessian with a second order finite difference.
-
SNRM2 computes the Euclidean norm of a vector.
-
SNSQ finds a zero of a system of n nonlinear functions in n variables.
-
SNSQE is the easy-to-use version of SNSQ.
-
SQRANK computes the QR factorization of a rectangular matrix.
-
SQRDC computes the QR factorization of a real rectangular matrix.
-
SQRLS solves an linear system in the least squares sense.
-
SQRLSS solves a linear system in a least squares sense.
-
SQRSL computes transformations, projections, and least squares solutions.
-
SROT applies a plane rotation.
-
SROTG constructs a Givens plane rotation.
-
SSCAL scales a vector by a constant.
-
SSVDC computes the singular value decomposition of a real rectangular matrix.
-
SSWAP interchanges two vectors.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
-
TREGUP decides whether to accept the next optimization iterate.
-
UNCMIN minimizes a smooth nonlinear function of N variables.
-
UNI generates real uniform random numbers on [0,1).
-
USTART is an entry into UNI that allows the user to specify the seed.
-
UNIB ?
-
UNIFORM_01_SAMPLE is a portable random number generator.
-
XERABT aborts program execution and prints an error message.
-
XERCLR resets the current error number to zero.
-
XERCTL allows user control over handling of individual errors.
-
XERDMP prints the error tables and then clears them.
-
XERMAX sets the maximum number of times any error message is to be printed.
-
XERPRT prints a message on each file indicated by xgetua.
-
XERROR processes an error (diagnostic) message.
-
XERRWV processes an error message that includes numeric information.
-
XERSAV records that an error occurred.
-
XGETF returns current value of error control flag.
-
XGETUA returns the unit number(s) to which error messages are being sent.
-
XGETUN returns the (first) output file to which messages are being sent.
-
XSETF sets the error control flag.
-
XSETUA sets up to 5 unit numbers to which messages are to be sent.
-
XSETUN sets the output file to which error messages are to be sent.
Return to the FORTRAN software page.
Last revised on 18 December 2001.