I recently ran across information about getting public domain programs
(primarily mathematical and scientific applications) from the Internet
network. Most of you may already know about these, but I didn't (and wish I
had known of it earlier). So I thought it might be worthwhile to post the
information to the BIOMCH-L readers.

The following is a copy of the output obtained from issuing a SEND INDEX
request to netlib@ornl.gov

Welcome to netlib, a system for distribution of mathematical software
by electronic mail. This index is the reply you'll get to:
mail netlib@ornl.gov
send index.
To examine the full index for any library send a request of the form:
send index from eispack.
To search for all software with certain keywords:
find cubic spline.
To search for somebody in Gene Golub's address list:
Who is Joan Doe?
displays entries containing "Joan" and "Doe". (no spelling correction!)
You may include several requests in a single piece of mail, but put
each on a separate line.

Here are some additional forms a request may take...
send dgeco from linpack
(Retrieves routine DGECO and all routines it calls from the LINPACK library.)
send only dgeco from linpack
(Retrieves just DGECO and not subsidiary routines.)
send dgeco but not dgefa from linpack
(Retrieves DGECO and subsidiaries, but excludes DGEFA and subsidiaries.)
send list of dgeco from linpack
(Retrieves just the file names rather than the contents;
this can be helpful when one already has an entire library and just
wants to know what pieces are needed in a particular application.)

Send the requests to "netlib@ornl.gov" even though replies appear to be
coming from "netlibd@ornl.gov". You'll be talking to a program, so don't
expect it to understand much English. If your Unix system doesn't talk
directly to research (AT&T Bell Labs in Murray Hill, New Jersey), you might
try forwarding through ihnp4 (Bell Labs in Chicago) or mcvax (Math Centrum
in Amsterdam). Someone will be paying for long distance phone calls, so be
reasonable! Those with access to the arpanet can use netlib@ornl.gov (at
Oak Ridge National Labs). For an introduction to the mysteries of networks
and address syntax, see J. Quarterman and J. Hoskins, Comm. ACM (Oct 1986)
29,932-971. For background about netlib, see Jack J. Dongarra and Eric
Grosse, Distribution of Mathematical Software Via Electronic Mail, Comm.
ACM (1987) 30,403--407.

The default precision is double; to get single, prefix the library name
with "s". However, if the library only comes in one precision, that's what
you will be sent. To save space we remove sequence numbers and maintain a
central set of machine dependent constants. Otherwise the codes, which are
almost all in Fortran, are as received from the authors. Bugs found in
core libraries like eispack will receive prompt attention; in general, we
will forward comments (and annual lists of recipients) to the code authors.
Many of these codes are designed for use by professional numerical analysts
who are capable of checking for themselves whether an algorithm is suitable
for their needs. One routine can be superb and the next awful. So be
careful!

The first few libraries here are widely regarded as being of high quality.
The likelihood of your encountering a bug is relatively small; if you do,
we certainly want to hear about it!

CORE Machine constants (i1mach,r1mach,d1mach), blas (level 1 and 2)

EISPACK A collection of Fortran subroutines that compute the eigenvalues
and eigenvectors of nine classes of matrices. The package can
determine the eigensystems of complex general, complex Hermitian,
real general, real symmetric, real symmetric band, real symmetric
tridiagonal, special real tridiagonal, generalized real, and
generalized real symmetric matrices. In addition, there are two
routines which use the singular value decomposition to solve
certain least squares problems.
Developed by the NATS Project at Argonne National Laboratory.
(d.p. refer to eispack, s.p. refer to seispack)

FFTPACK A package of Fortran subprograms for the Fast Fourier
Transform of periodic and other symmetric sequences
This package consists of programs which perform Fast Fourier
Transforms for both complex and real periodic sequences and
certian other symmetric sequences.
Developed by Paul Swarztrauber, at NCAR.

PPPACK Subroutines from: Carl de Boor, A Practical Guide to Splines,
Springer Verlag. This is an old version, from around the time the book
was published. We will install a newer version as soon as we can.

TOMS Collected algorithms of the ACM. When requesting a specific
item, please refer to the Algorithm number.

----------------

In contrast to the above libraries, the following are collections of codes
from a variety of sources. Most are excellent, but you should exercise
caution. We include research codes that we haven't tested and codes
that may not be state-of-the-art but useful for comparisons.
The following list is chronological, not by merit:

MISC Contains various pieces of software collected over time and:
the source code for the netlib processor itself;
the paper describing netlib and its implementation;
the abstracts list maintained by Richard Bartels.

FMM Routines from the book Computer Methods for Mathematical
Computations, by Forsythe, Malcolm, and Moler.
Developed by George Forsythe, Mike Malcolm, and Cleve Moler.
(d.p. refer to fmm, s.p. refer to sfmm)

TOEPLITZ A package of Fortran subprograms for the solution of systems
of linear equations with coefficient matrices of Toeplitz or
circulant form, and for orthogonal factorization of column-
circulant matrices.
Developed by Burt Garbow at Argonne National Laboratory,
as a culmination of Soviet-American collaborative effort.
(d.p. refer to toeplitz, s.p. refer to stoeplitz)

ITPACK Iterative linear system solvers for symmetric and nonsymmetric
sparse problems. Includes ITPACK 2C (single and double
precision), ITPACKV 2C (vectorized version of ITPACK 2C),
and NSPCG. Developed by Young and Kincaid and the group at
U of Texas.

BIHAR Biharmonic solver in rectangular geometry and polar coordinates.
These routines were obtained from Petter Bjorstad,
Veritas Research, Oslo Norway in July 1984.

LANCZOS procedures computing a few eigenvalues/eigenvectors of a large (sparse)
symmetric matrix. Jane Cullum and Ralph Willoughby, IBM Yorktown.

FITPACK A package for splines under tension. (an early version)
For a current copy and for other routines, contact:
Alan Kaylor Cline, 8603 Altus Cove, Austin, Texas 78759, USA

BENCHMARK contains benchmark programs and the table of Linpack timings.

MACHINES contains information on high performance computers that
are or soon to be made available

MINPACK A package of Fortran programs for the solution of systems of
nonlinear equations and nonlinear least squares problems.
Five algorithmic paths each include a core subroutine and an
easy-to-use driver. The algorithms proceed either from an analytic
specification of the Jacobian matrix or directly from the problem
functions. The paths include facilities for systems of equations
with a banded Jacobian matrix, for least squares problems with a
large amount of data, and for checking the consistency of the
Jacobian matrix with the functions.
Developed by Jorge More', Burt Garbow, and Ken Hillstrom at
Argonne National Laboratory.
(d.p. refer to minpack, s.p. refer to sminpack)

PORT The public subset of the PORT library. Includes the latest version
of Gay's NL2SOL nonlinear least squares. The rest of the PORT3
library is available by license from AT&T.

Y12M calculation of the solution of systems of linear systems of
linear algebra equations whose matrices are large and sparse.
authors: Zahari Zlatev, Jerzy Wasniewski and Kjeld Schaumburg

PCHIP is a fortran package for piecewise cubic hermite inter-
polation of data. It features software to produce a monotone and
"visually pleasing" interpolant to monotone data.
Fred N. Fritsch, Lawrence Livermore National Laboratory

LP Linear Programming - At present, this consists of one subdirectory,
data: a set of test problems in MPS format, maintained by David Gay.
For more information, try a request of the form
send index for lp/data

ODE various initial and boundary value ordinary differential equation
solvers: colsys, dverk, rkf45, ode
A subset of these in single precision is in the library sode.

ODEPACK The ODE package from Hindmarch and others.
This is the double precision verison; to get sp refer to sodepack.
Alan Hindmarch, Lawrence Livermore National Laboratory

ELEFUNT is a collection of transportable Fortran programs for testing
the elementary function programs provided with Fortran compilers. The
programs are described in detail in the book "Software Manual for the
Elementary Functions" by W. J. Cody and W. Waite, Prentice Hall, 1980.

SPECFUN is an incomplete, but growing, collection of transportable
Fortran programs for special functions, and of accompanying test
programs similar in concept to those in ELEFUNT.
W.J. Cody, Argonne National Laboratory

PARANOIA is a rather large program, devised by Prof. Kahan of Berkeley,
to explore the floating point system on your computer.

HOMPACK is a suite of FORTRAN 77 subroutines for solving nonlinear systems
of equations by homotopy methods. There are subroutines for fixed
point, zero finding, and general homotopy curve tracking problems,
utilizing both dense and sparse Jacobian matrices, and implementing
three different algorithms: ODE-based, normal flow, and augmented
Jacobian.

DOMINO is a set of C-language routines with a short assembly language
interface that allows multiple tasks to communicate and schedules
local tasks for execution. These tasks may be on a single processor
or spread among multiple processors connected by a message-passing
network. (O'Leary, Stewart, Van de Geijn, University of Maryland)

sched - The Schedule Package is an environment for the transportable
implementation of parallel algorithms in a Fortran setting.
Jack Dongarra and Dan Sorensen, Univ of Tenn. and Rice Univ.,
June 5, 1987 (dongarra@cs.utk.edu sorensen@rice.edu)

NAPACK A collection of Fortran subroutines to solve linear systems,
to estimate the condition number or the norm of a matrix,
to compute determinants, to multiply a matrix by a vector,
to invert a matrix, to solve least squares problems, to perform
unconstrained minimization, to compute eigenvalues, eigenvectors,
the singular value decomposition, or the QR decomposition.
The package has special routines for general, band, symmetric,
indefinite, tridiagonal, upper Hessenberg, and circulant matrices.
Code author: Bill Hager, Mathematics Department, Penn State
University, University Park, PA 16802, e-mail: hager@psuvax1.bitnet
or hager@psuvax1.psu.edu. Related book: Applied Numerical Linear
Algebra, Prentice-Hall, Englewood Cliffs, New Jersey.
Book scheduled to appear in December, 1987.

SPARSPAK Subroutines from the book "Computer Solution of Large Sparse
Positive Definite Systems" by George and Liu, Prentice Hall 1981.

Sparse A library of subroutines written in C that solve large sparse
systems of linear equations using LU factorization. The
package is able to handle arbitrary real and complex square
matrix equations. Besides being able to solve linear systems,
it is solves transposed systems, find determinants, multiplies
a vector by a matrix, and estimate errors due to
ill-conditioning in the system of equations and instability in
the computations. Sparse does not require or assume symmetry
and is able to perform numerical pivoting (either diagonal or
complete) to avoid unnecessary error in the solution. Sparse
also has an optional interface that allow it to be called from
FORTRAN programs.
Ken Kundert, Alberto Sangiovanni-Vincentelli. (sparse@ic.berkeley.edu)

SLAP This is the official release version 2.0 of the Sparse Linear
Algebra Package: a SLAP for the Masses! It contains "core"
routines for the iterative solution symmetric and non-symmetric
positive definite and positive semi-definite linear systems.
Included in this package are core routines to do Iterative
Refinement iteration, Preconditioned Conjugate Gradient
iteration, Preconditioned Conjugate Gradient iteration on the
Normal Equations, Preconditioned BiConjugate Gradient iteration,
Preconditioned BiConjugate Gradient Squared iteration, Orthomin
iteration and Generalized Minimum Residual iteration. Core
routines require the user to supply "MATVEC" (Matrix Vector
Multiply) and "MSOLVE" (Preconditiong) routines. This allows the
core routines to be written in a way that makes them independent
of the matrix data structure. For each core routine there are
several drivers and support routines that allow the user to
utilize Diagonal Scaling and Incomplete Cholesky/Incomplete LU
factorization as preconditioners with no coding. The price for
this convience is that one must use the a specific matrix data
structure: SLAP Column or SLAP Triad format.
Written by Mark K. Seager & Anne Greenbaum

problem-set: This set of directories is a collection of problems for
automated theorem provers. It is partioned by subject.
Larry Wos, Argonne National Laboratory

JAKEF is a precompiler that analyses a given Fortran77 source code for
the evaluation of a scalar or vector function and then generates an
expanded Fortran subroutine that simultaneously evaluates the gradient
or Jacobian respectively.
A. Griewank, Argonne National Laboratory, griewank@mcs.anl.gov, 12/1/88.

sparse-blas an extension to the set of Basic Linear Algebra Subprograms.
The extension is targeted at sparse vector operations, with the goal of
providing efficient, but portable, implementations of algorithms for high
performance computers.
convex!dodson@anl-mcs.ARPA Mon Aug 31 19:53:21 1987 (Dave Dodson)

picl - is a subroutine library that implements a generic message-passing
interface for a variety of multiprocessors. It also provides
timestamped trace data, if requested.
authors: Geist, Heath, Peyton, and Worley, Oak Ridge National Lab.
worley@msr.epm.ornl.gov 2/1/90.

MADPACK is a a compact package for solving systems of linear equations using
multigrid or aggregation-disaggregation methods. Imbedded in
the algorithms are implementations for sparse Gaussian elimination
and symmetric Gauss-Seidel (unaccelerated or accelerated by
conjugate gradients or Orthomin(1)). This package is particularly
useful for solving problems which arise from discretizing partial
differential equations, regardless of whether finite
differences, finite elements, or finite volumes are used.
It was written by Craig Douglas.