Failures of Numerical Algorithms
is a FORTRAN90 program which
demonstrates how reasonable computations
can produce numerical nonsense. This illustrates that the programmer
must not assume that a numerical algorithm that seems reasonable will
always produce correct and reliable results.
include polynomial evaluation and root finding, linear system solution,
minimization, and Taylor series approximation.
The computer code and data files described and made available on this
web page are distributed under
the GNU LGPL license.
ERRORS is available in
a FORTRAN90 version.
U Kulisch, C Ullrich, Editors,
Wissenschaftliches Rechnen und Programmiersprachen,
(Scientific Computing and Programming Languages),
Berichte des German Chapter of the ACM,
(Reports of the German Chapter of the ACM),
Volume 10, Teubner Verlag, 1982.
Cleve Moler, Charles Van Loan,
19 Dubious Ways to Compute the Exponential of a Matrix,
25 Years Later,
Volume 45, Number 1, pages 3-49, March 2003.
Numerical Linear Algebra on the HP-28, or How to Lie with
The American Mathematical Monthly,
Volume 98, Number 6, June-July 1991, pages 539-544.
Wie Zuverlaessig Sind die Ergebnisse Unserer Rechenanlagen?
(How Reliable are the Results of our Computations?)
Jahrbuch Ueberblicke Mathematik 1983, pages 163-168.
Examples and Tests:
List of Routines:
DPOLY_VAL evaluates a double precision polynomial.
DPOLY_VAL_HORNER evaluates a double precision polynomial using Horner's method.
DPOLY2_ROOTS finds the roots of a quadratic polynomial.
DPOLY2_ROOTS2 finds the roots of a quadratic polynomial.
FMIN seeks a minimizer of a scalar function of a scalar variable.
ISAMAX finds the index of the vector element of maximum absolute value.
LCM_12N computes the least common multiple of the integers 1 through N.
MAXTRIX_EXPONENTIAL_TAYLOR uses a Taylor series for the matrix exponential.
RPOLY_VAL evaluates a real polynomial.
RPOLY_VAL_HORNER evaluates a real polynomial using Horner's method.
RPOLY2_ROOTS finds the roots of a quadratic polynomial.
RPOLY2_ROOTS2 finds the roots of a quadratic polynomial.
SAMAX returns the maximum absolute value of the entries in a vector.
SAXPY adds a constant times one vector to another.
SCOPY copies one real vector into another.
SDOT forms the dot product of two vectors.
SDSDOT forms the dot product of two vectors using higher precision.
SGEDI computes the determinant and inverse of a matrix factored by SGECO or SGEFA.
SGEFA factors a real matrix.
SGESL solves a real general linear system A * X = B.
RVEC_NORM2 computes the Euclidean norm of a vector.
SQRDC computes the QR factorization of a real rectangular matrix.
SQRSL computes transformations, projections, and least squares solutions.
SSCAL scales a vector by a constant.
SSWAP interchanges two vectors.
TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 01 January 2011.