slatec
slatec,
a FORTRAN90 code which
collects standard numerical libraries,
including blas(), bvsup(), dassl(), depac(), drive(),
eispack(), fftpack(), fishpack(), fnlib(), linpack(), machine(),
minpack(), mp(), pchip(), pppack(), quadpack(), slap(), sos(), splp(),
and xerror().
The original, correct version of SLATEC is as
a FORTRAN77 library. This library is available through NETLIB:
http://www.netlib.org/slatec/index.html.
What you are seeing here is a version of the library that I
have lightly edited; a few changes have been made so that it
will compile as a FORTRAN90 code. However, this version is
not an official version, it is not supported by anybody, and
if you have any doubts about its accuracy, you should refer
to the original, correct FORTRAN77 version!
The huge size of slatec() is both a plus (it has
everything) and a minus (there's so much here I can't find
what I'm looking for!) Since slatec() is built, in large part,
from a number of smaller, specialized libraries, I would
strongly recommend that if your interests lie entirely within
one of those libraries, you try to find a copy of that library!
Another issue to keep in mind is the extraordinary complexity
of some of the routines. It is not unusual for a single routine
in slatec() to call, directly or indirectly, thirty
or forty routines. In part, this is a testimony to the modularity
of the routines; however, it can make debugging a nightmare.
slatec() includes
all or some of the following libraries:
-
BLAS, basic linear algebra subprograms;
-
BVSUP, two point boundary value problems solved by superposition;
-
DASSL, for the solution of differential/algebraic systems;
-
DEPAC, for the solution of systems of differential equations;
-
DRIVE, for the solution of double precision or
single precision systems of ordinary differential equations;
-
EISPACK, for the computation of eigenvalues and eigenvectors;
-
FFTPACK, for fast Fourier transforms;
-
FISHPACK, for solution of the Poisson equation;
-
FNLIB, the Fullerton special function library;
-
LINPACK, for solving systems of linear equations;
-
MACHINE, for "looking up" machine arithmetic constants;
-
MINPACK, for minimization (SNLS1, SNSQ);
-
MP, for Brent's multiple-precision arithmetic package;
-
PCHIP, for piecewise cubic Hermite interpolation;
-
PPPACK, for piecewise cubic polynomial interpolation;
-
QUADPACK, for quadrature over finite or infinite 1D intervals;
-
SLAP, for the solution of double precision or single
precision sparse systems of linear equations;
-
SOS, for square systems of nonlinear equations;
-
SPLP, for linear programming problems;
-
XERROR, for error handling.
Languages:
slatec is available in
a FORTRAN90 version.
Related Data and Programs:
slatec_test
eispack,
a FORTRAN90 code which
carries out eigenvalue computations;
fftpack5,
a FORTRAN90 code which
implements the Fast Fourier Transform (FFT)
by Paul Swarztrauber and Dick Valent;
fn,
a FORTRAN90 code which
evaluates elementary and special functions using Chebyshev polynomials,
including Airy, Bessel I, Bessel J, Bessel K, Bessel Y, beta,
confluent hypergeometric, cosine integral, Dawson's integral,
digamma (psi), error, exponential integral, gamma, hyperbolic cosine
integral, hyperbolic sine integral, incomplete gamma, log gamma,
logarithmic integral, Pochhammer, psi, sine integral, Spence;
by Wayne Fullerton.
machine,
a FORTRAN90 code which
contains integer,
single precision real
and double precision real machine constants.
minpack,
a FORTRAN90 code which
solves systems of nonlinear equations, or the least squares minimization of the
residual of a set of linear or nonlinear equations.
nms,
a FORTRAN90 code which
includes a wide variety of numerical software, including
solvers for linear systems of equations, interpolation of data,
numerical quadrature, linear least squares data fitting,
the solution of nonlinear equations, ordinary differential equations,
optimization and nonlinear least squares, simulation and random numbers,
trigonometric approximation and Fast Fourier Transforms.
pppack,
a FORTRAN90 code which
contains cubic spline and general
piecewise polynomial interpolation routines.
slap,
a FORTRAN90 code which
carries out the iterative solution of sparse linear systems,
by Anne Greenbaum and Mark Seager.
xerror,
a FORTRAN90 code which
reports and handles errors detected during program execution.
Reference:
-
Richard Brent,
A FORTRAN Multiple-Precision Arithmetic Package,
ACM Transactions on Mathematical Software,
Volume 4, Number 1, March 1978, pages 71-81.
-
Richard Brent,
Algorithm 524:
MP: A FORTRAN Multiple-Precision Arithmetic Package,
ACM Transactions on Mathematical Software,
Volume 4, Number 1, March 1978, pages 57-70.
-
Bill Buzbee,
The SLATEC Common Math Library,
in Sources and Development of Mathematical Software,
edited by Wayne Cowell,
Prentice-Hall, 1984,
ISBN: 0-13-823501-5,
LC: QA76.95.S68.
-
Carl deBoor,
A Practical Guide to Splines,
Springer, 2001,
ISBN: 0387953663,
LC: QA1.A647.v27.
-
Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart,
LINPACK User's Guide,
SIAM, 1979,
ISBN13: 978-0-898711-72-1.
-
Kirby Fong, Thomas Jefferson, Tokihiko Suyehiro, Lee Walton,
Guide to the SLATEC Common Mathematical Library,
April 10, 1990.
-
Phyllis Fox, Andrew Hall, Norman Schryer,
Algorithm 528:
Framework for a Portable Library,
ACM Transactions on Mathematical Software,
Volume 4, Number 2, June 1978, page 176-188.
-
Fred Fritsch, Ralph Carlson,
Monotone Piecewise Cubic Interpolation,
SIAM Journal on Numerical Analysis,
Volume 17, Number 2, April 1980, pages 238-246.
-
Charles Gear,
Numerical Initial Value Problems in Ordinary Differential
Equations,
Prentice-Hall, 1971,
ISBN: 0136266061,
LC: QA372.G4.
-
Ron Jones, David Kahaner,
XERROR, The SLATEC Error Handling Package,
Technical Report SAND82-0800,
Sandia Laboratories, 1982.
-
David Kahaner, Cleve Moler, Steven Nash,
Numerical Methods and Software,
Prentice Hall, 1989,
ISBN: 0-13-627258-4,
LC: TA345.K34.
-
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.
-
Jorge More, Burton Garbow, Kenneth Hillstrom,
User Guide for MINPACK-1,
Technical Report ANL-80-74,
Argonne National Laboratory, 1980.
-
Robert Piessens, Elise deDoncker-Kapenga,
Christian Ueberhuber, David Kahaner,
QUADPACK: A Subroutine Package for Automatic Integration,
Springer, 1983,
ISBN: 3540125531,
LC: QA299.3.Q36.
-
Mark Seager,
A SLAP for the Masses,
Technical Report UCRL-100267,
Lawrence Livermore National Laboratory, December 1988.
-
Paul Swarztrauber,
Vectorizing the FFT's,
in Parallel Computations,
edited by Garry Rodrigue,
Academic Press, 1982,
ISBN: 0125921012,
LC: QA76.6.P348.
-
James Wilkinson, Christian Reinsch,
Handbook for Automatic Computation,
Volume II, Linear Algebra, Part 2,
Springer, 1971,
ISBN: 0387054146,
LC: QA251.W67.
Source Code:
Last revised on 18 February 2023.