Numerical Analysis:
Mathematics of Scientific Computing, 3rd Edition

David Kincaid & Ward Cheney
Brooks/Cole Publ. Co., 2002, ISBN 0-534-38905-8
Appendix: An Overview of Mathematical Software


A tremendous amount of mathematical software is available worldwide, and more is being developed each day. To find the most up-to-date information, a browser to the World Wide Web (www) on the Internet should be used. On the Internet, one can execute a search for available mathematical software in a particular application area of interest.

It is helpful to classify mathematical software into three categories:
(a) public domain,
(b) freely accessible (some usage restrictions apply), and
(c) proprietary (license agreement required).

Public domain has a specific legal meaning, implying that any use is permitted, including modification, resale, and so on. From the Internet, one can download either public domain or freely accessible software, and in many cases, one can obtain free demonstration copies of commercial software packages. Some of the software on the Internet has usage restrictions imposed by the authors, such as copyright, that allow unrestricted use for research and educational purposes only. (An example of this is code from the ACM Collected Algorithms (p. ), which is subject to the ACM Software Copyright and License Agreement.) On the other hand, proprietary software must be purchased or leased from the developing company or from a computer store that sells software. Notice that whether money changes hands before the software can be used is not addressed in this breakdown of software into categories. For example, consider these seemingly contradictory examples:
(a)
paying for public domain software (Netlib on CD-ROM),
(b) paying for accessible software-you can freely download some software, but you had better send in a check if your use it for non-educational purposes, and
(c)
software that is given away for free but is proprietary in the sense that a license agreement must be signed before you can get it.

In the following, we give a quick overview of some available mathematical software with pointers to the www-addresses where additional information and some of the software can be found. Also mentioned are several systems for helping in the search for mathematical software that solves specific problems. This is not a complete and comprehensive listing since developments are proceeding at such a rapid rate that any listing is soon out of date!

Since mathematical software is written in a variety of different programming languages and for a wide range of different computer architectures, it is difficult to know how to organize the discussion. We are guided by an excellent overview of mathematical special functions by Lozier and Olver [1994]. They organize software into the categories of Software Packages, Intermediate Libraries, Comprehensive Libraries, and Interactive Systems. First, Software Packages contain one or more subroutines for solving a particular problem in a subfield of numerical mathematics. Second, Intermediate Libraries are usually collections of subprograms for use on small computers or PCs. Some of these libraries contain a collection of useful mathematical functions in one or more computer languages. They may have been written by the manufacturer of the computer equipment or the developer of the compiler. Also, some intermediate libraries are available for PCs that are subsets of general-purpose mathematical libraries. Third, Comprehensive Libraries contain subroutines that have been assimilated into high-quality software containing many unifying features such as uniform documentation, uniform style of usage, and error-handling conditions. Finally, Interactive Systems are fully interactive computer environments with a powerful set of keyboard commands so that the user can avoid the compile-link-execute cycle. Usually there is an evolutionary process that mathematical software goes through from the introduction of the original idea in a journal or report to the general acceptance by the scientific community of the algorithm. Eventually, the algorithm is incorporation into a large mathematical library or a sophisticated interactive computer system.

We start by mentioning some searching systems for finding available mathematical software on the Internet and then giving general information related to mathematical software research and developments. Finally, we discuss a number of comprehensive libraries, interactive systems, and some examples of intermediate libraries or mathematical software packages.

Searching Systems

Guide to Available Mathematical Software (GAMS)
is a large online and cross-indexed virtual repository of mathematical and statistical software for use in computational science and engineering. It was developed as a National Institute of Standards and Technology (NIST) project for providing scientists and engineers with improved access to reusable computer software. The user is guided through a problem decision tree to search for appropriate software for the particular problem to be solved or for the package/module name. Rather than providing a physical repository, the guide provides transparent access to multiple repositories maintained by NIST and others. One can obtain abstracts, documentation, and source code from the URL site. http://gams.nist.gov A Java interface to GAMS with additional search features is available at the URL site. http://gams.nist.gov/HotGAMS Some other sources of information about mathematical software can be found at http://gams.nist.gov/OtherSources.html which includes directories, journals, repositories, freely available packages, software vendors, and educational software vendors.
Netlib
is a repository for mathematical software, documents (papers, reports, etc.), databases (address lists-e-mail and mail, conferences, performance data, etc.), and other useful mathematical information. There is a keyword searching capability for obtaining mathematical software as well as for searching back issues of the weekly NA-Digest online newsletter. This is a system developed to serve the community of numerical analysts and other researchers and is available at http://www.netlib.org Also, the NA-Net system is available at http://netlib.org/na-net/ and serves the scientific computing community by providing an Email database for its members, a White Pages directory service, and the NA-Digest, which is a weekly collections of articles on topics of interest to them. Some other related efforts are the following.

General Information

Conferences
are announced and information on them are available on the Internet. For example, the Netlib Conference Database is accessible at http://www.netlib.org/confdb/Conferences.html and it contains information about upcoming conferences, lectures, and other meetings relevant to the fields of mathematics and computer science. Also, the Atlas Mathematical Conferences Abstracts provides conference announcements and conference abstracts for mathematicians worldwide at http://at.yorku.ca/amca. Many conference announcements are available directly from scientific societies and associations such as those listed below.
Graduate Programs
involving numerical analysis and scientific computing exist throughout the world such as the Computational and Applied Mathematics (CAM) program at The University of Texas at Austin with details available at http://www.ticam.utexas.edu/cam Many other graduate programs are available on the World Wide Web.
Homepages
have been established by various research interest groups. An example of some of these are: Individuals have homepages such as the authors of this textbook: Many professional societies and associations have homepages such as those listed below.
Journals
are published for the dissemination of recent research developments and associated algorithms and mathematical software. The bibliography to this book contains a listing of many of the primary numerical analysis journals. For some of these journals, tables of contents, and even full-text articles are available to readers over the Internet. Some of the organizations that publish research journals and disseminate mathematical software are: For example, the ACM Transactions on Mathematical Software (TOMS) publishes refereed articles and computer routines/packages. The ACM algorithm policy requires the software to be self-contained with adequate documentation, to have a test program with sample output, and to be reasonably portable over a variety of different computers. The TOMS homepage is at: http://www.acm.org/toms with a searchable table of contents to the algorithm papers and links to the software. The software is available from ACM, Netlib, and many other sources. You can obtain information from the ACM Collected Algorithms at the URL site: http://www.acm.org/calgo. A classification system is used for indexing the algorithms, and a data base of them is maintained. The ACM Digital Library is a resource of bibliographic information, citations, and full-text articles; and it is available at the URL site: http://acm.org/dl. The bibliographic database is free of charge to visitors by registering, and access to the full-text database is a pay-per-view subscription service. Many new and classical mathematical books are available at http://www.siam.org/books/index.htm. Mathematical journals such as SIAM Journal of Numerical Analysis, SIAM Journal of Scientific Computing, and many others are available at http://www.siam.org/journals/journals.htm. Other journals exist for the exchange of software and related information in particular scientific disciplines. For example, the journal of Computer Physics Communications publishes papers on the computational aspects of physics and physical chemistry with refereed computer programs. The Applied Statistics journal publishes literature on statistical computing with refereed statistical software. Recently, entirely electronic journals have appeared with technical articles related to the development of numerical analysis algorithms. Articles from these journals are available over the Internet for local printing. One such journal is the Electronic Transactions on Numerical Analysis at http://etna.mcs.kent.edu
Mathematics Archive WWW Server
provides an organized Internet access to a wide variety of mathematical resources. Primary emphasis is on material that is useful in teaching mathematics and educational software. http://archives.math.utk.edu
Mathematics Information Servers
is an extensive list of mathematics servers on the World Wide Web with references to many academic departments, electronic journals, sources for preprints of articles, and information on mathematical software. http://www.math.psu.edu/MathLists
News Groups
are used for a wide range of discussions and questions-and-answers postings in an unmoderated forum. Some USENET news groups for mathematical software are sci.math.num-analysis, sci.math.research, sci.math.symbolic.
Newsletters
are available on the Internet with announcements and general information on mathematical software. Examples of these newsletters are
Research
centers and institutes on numerical analysis and scientific computing exist throughout the world such as the Texas Institute of Computational and Applied Mathematics (TICAM) http://www.ticam.utexas.edu and the Center for Numerical Analysis (CNA) http://www.ma.utexas.edu/CNA at The University of Texas at Austin http://www.utexas.edu. In the United States of America, large collections of mathematical software are available from national laboratories [Argonne (anl), Fermilab, Lawrence Berkeley (lbnl), Lawrence Livermore (llnl), Los Alamos (lanl), Oak Ridge (ornl), Pacific Northwest, Sandia, Stanford Linear Accelerator, etc.], national supercomputer centers [San Diego Supercomputer Center (sdsc), National Energy Supercomputer Center at Lawrence Berkeley (nesc), etc.] and various government agencies [National Institute of Standards and Technology (nist), etc.]. Links are available directly to all of the national laboratories, supercomputer centers, and high performance research centers.
Textbooks
with associated mathematical software are widely available. Many numerical analysis and numerical methods textbooks come with or have associated software. In these books, one may find for each problem area a general discussion of analytical mathematics, the presentation of algorithms, and perhaps the actual implementation of them into computer routines written in one or more computer languages. The algorithms may be listed in the textbook, or the software may be available for purchase on a diskette or freely available so that the interested reader can download it from the Internet. For example, software supporting this textbook is available by using a Web browser and accessing the files at the following URL sites: http://www.ma.utexas.edu/CNA/NA3
Here one can download sample computer programs that are written in various computer programming languages or that use an advanced mathematical software system. Also available is an up-to-date list of errata for this textbook. Also, software supporting the elementary textbook Numerical Mathematics and Computing, 4th Edition by Cheney and Kincaid is available at the following URL site: http://www.ma.utexas.edu/CNA/NMC4

Comprehensive Libraries

Comprehensive libraries are large collections of mathematical routines all written in a uniform style and with high standards of quality and robustness. Some of these libraries are listed here.

BCSLIB/BCSEXT
is the standard mathematical and statistical subroutine library developed by Boeing Computer Services. It contains approximately 250 subroutines for applications in a wide variety of areas. BCSEXT is the Boeing Computer Services Extended Library, containing routines using out-of-core methods for solving large linear algebraic problems. Applications include large (sparse or dense) linear systems and eigenvalue problems as well as fast Fourier transform in two and three dimensions.
CMLIB
is the Core Mathematics LIBrary of the National Institute of Science and Technology (NIST). It is a collection of approximately 750 high-quality public-domain Fortran subprograms that are easily transportable. The subroutines in this library solve many of the standard problems in mathematics and statistics. It contains mostly externally available software programs such as BLAS, EISPACK, FISHPACK, FCNPACK, FITPACK, LINPACK, and QUADPACK. http://gams.nist.gov
CERN Library
is maintained by the European Laboratory for Particle Physics. This library is primarily for the support of high-energy physics research, but it contains many routines for general mathematical use. With some restrictions, the library is distributed to outside organizations. http://consult.cern.ch
ESSL/PESSL
is an Engineering and Scientific Subroutine Library for use on IBM computers. It is a state-of-the-art collection of over 450 mathematical routines for use on a wide range of IBM computers for solving scientific and engineering applications. The library has been tuned for specific IBM computer architectures such as workstations and parallel computers. It can be called from applications written in Fortran, C, or C++. PESSL is the parallel implementation of the IBM Engineering and Scientific Subroutine Library (ESSL). It consists of scalable mathematical routines that support parallel processing on IBM computer systems and clusters of IBM workstations. Parallel ESSL supports the Single Program Multiple Data (SPMD) programming model using either the Message Passing Interface (MPI) signal handling library or the MPI threaded library. http://www.ibm.com
LibSci
is a library of commonly used mathematical and scientific routines developed for use on Cray computer systems. For example, it includes routines for linear algebra, fast Fourier transforms, filtering, packing unpacking, and vector gather scatter. http://www.netlib.org/scilib
IMSL Libraries
are C-coded or Fortran-coded numerical and graphical libraries developed by Visual Numerics, Inc. These libraries contain a large collection of subroutines and function subprograms (over 500) that provide access to high-quality implementations of numerical methods in mathematics and statistics. They have evolved over more than 30 years. These libraries are available for use on a wide range of computer platforms with subsets of them available for use on PCs. Other mathematical software products are available from Visual Numerics, such as PV-WAVE and Stanford Graphics. http://www.vni.com
NAG Libraries
are Fortran77/90-coded or C-coded numerical and statistical libraries for scientists, engineers, researchers, and software developers with applications involving mathematics, statistics, and optimization. Developed by the Numerical Algorithms Group, these software libraries have comprehensive numerical capabilities and were coded with the collaboration of numerical and statistical specialists. The largest version of the library has over 1000 routines. Some of this software has evolved over more than 20 years, producing state-of-the-art products with robust performance on over 80 computing platforms from PCs to supercomputers. Also, NAG developed the first fully standard Fortran 90 compiler, and the computer algebra system Axiom is available from NAG. http://www.nag.com
SLATEC
is a large collection of Fortran mathematical subprograms distributed by the Department of Energy (DOE) Energy Science and Technology Center: http://www.energy.gov or from Netlib http://www.netlib.org/slatec It is characterized by portability, good numerical technology, good documentation, robustness, and quality assurance. The primary impetus for this library was to provide portable, nonproprietary, mathematical software for supercomputers at a consortium of government research laboratory. The original acronym stood for the national laboratories involved (Sandia, Los Alamos, Air Force Technical Exchange Committee). Subsequently, the library committee admitted three additional national laboratories (Lawrence Livermore, Oak Ridge, Sandia Livermore) plus the National Energy Supercomputer Center at Lawrence Livermore and the National Institute of Standards and Technology.
In addition to those listed above, some other general mathematical software libraries are NSWC, NUMAL, NUMPAC, PORT, Scientific Desk, VECLIB, and more.

Interactive Systems

In general, a fully interactive mathematical software system contains a powerful set of commands that the user enters at a computer terminal or workstation by using the keyboard or the mouse to click on an icon. An immediate response is displayed on the screen. It may be a computation (numerical or symbolic) or a visual display such as a graph or figure. The programming burden is reduced since there is no compile-link-execute cycle. The capabilities of interactive systems can be extended by customizing the set of commands or icons. Interactive systems are able to integrate nonnumerical tasks with numerical computations. It seems that graphical and symbolic computing are best done in an interactive computing environment. For this reason, a recent trend is combining numerical computing with symbolic computing and graphical visualization into a totally interactive system.

Computer algebra systems have special capabilities useful in numerical mathematics. One such feature is arbitrary precision or multiple-precision floating-point arithmetic. In general, programming languages use the computer hardware for doing computer arithmetic so that the precision is fixed. The primary purpose of computer algebra systems is for exact mathematical calculations with floating-point computations a secondary capability. Nevertheless, one obtains a bonus of being able to carry out arbitrary precision floating-point computations in these systems. Unless the user specifies otherwise, symbolic systems generally avoid evaluations that introduce inexact results and evaluate expressions symbolically (with numbers rendered as rational fractions having arbitrarily long numerators and denominators or represented as symbols). The user can request that floating-point evaluations of numbers be carried out with arbitrarily long precision.

The following are a sampling of interactive mathematical software systems.

CPLEX
is a software package used to solve linear programming problems, including integer, mixed integer, and network linear programming problems. CPLEX can be used as an interactive program or as a callable subroutine library. The CPLEX interactive problem solver allows users to enter, modify, and solve problems from computer terminals. This is particularly useful if one is solving a problem once or if one is prototyping a solution method. The callable library provides access to the CPLEX optimization, utility, problem modification, query, and file I/O routine directly from C or Fortran programs. http://www.cplex.com
HiQ
is an object-based numerical analysis and data visualization software package. HiQ solves math, science, and engineering problems using a methodology that combines a worksheet interface, interactive analysis, data visualization, an extensive mathematics library, and a script-programming language. HiQ is an interactive problem-solving environment for Macintosh and Power Macintosh computers. http://www.ni.com
Maple
is an interactive symbolic computation system containing symbolic, numerical, graphical, and programming capabilities. Maple performs equation solving, linear algebra, calculus, complex analysis, and more with virtually unlimited precision. Maple was developed as an interactive system for computer algebraic manipulations associated with symbolic computing, but many more expanded capabilities have been added. It is available on a wide range of computers from personal computers and workstations to supercomputers. http://www.maplesoft.com
Mathematica
is an interactive software system for numerical, symbolic, and graphical computing as well as visualizations. The user can integrate Mathematica output (computations, graphics, animations, etc.) with ordinary text entirely within the Mathematica system for the preparation of complete electronic documents to be used as technical reports or presentations. A wide variety of Mathematica application libraries are available. MathLink is a communication protocol that allows the exchange of information between Mathematica and other computer packages such as Matlab or Excel. A programming language based on pattern matching can be used for extending the capabilities of the Mathematica system. Mathematica is available on over 20 platforms from PCs to scientific workstations to large-scale scientific mainframe computers. http://www.mathematica.com
Matlab
is a computing environment that provides computation, visualization, and application-specific tool boxes. Matrix notation is used to produce a matrix laboratory with a built-in set of commands for standard algorithms involving numerical computations. A matrix-oriented language may be used for large-scale computation and data analysis. Interactive 2-D and 3-D graphical capabilities are available for analysis, transformation, and visualization of data. Matlab can dynamically link with C or Fortran programs. The package is available on a wide range of computers such as PCs, workstations, and supercomputers. Matlab has more than 20 tool boxes available for specialized applications such as signal and image processing, control system design, frequency domain identification, robust control design, mathematics, statistics, and data analysis, neural networks and fuzzy logic, optimization, and splines. Also, symbolic computing is available with a tool box interface to Maple V. http://www.mathworks.com
Octave
is a high-level language, which is mostly compatible with Matlab, and is primarily intended for numerical computations. It provides a command line interface for solving linear and nonlinear problems numerically and for performing other numerical experiments. Octave has extensive tools for solving common numerical linear algebra problems such as finding roots of nonlinear equations, integrating ordinary functions, manipulating polynomials, and integrating ordinary differential and differential-algebraic equations. It is extensible and customizable via user-defined functions written in Octave's own language, or using dynamically loaded modules written in different programming languages. GNU Octave is free software, which may be redistributed or modified under the terms of the GNU General Public License as published by the Free Software Foundation. http://www.octave.org
REDUCE
is an interactive computer algebra system designed for general algebraic computations of interest to mathematicians, scientists, and engineers. While it is used by many as an algebraic calculator for problems that can be done by hand, the main aim of REDUCE is to support calculations that are feasible only by a computer solution. http://www.uni-koeln.de/REDUCE/
Some of the symbolic algebraic computer systems other than those listed here are Axiom, Derive, GANITH, Magma, Mathcad, Milo, MuPAD, Pari, Schur, and SymbMath.

Intermediate Libraries and Software Packages

There are many Intermediate Libraries and software packages available for solving mathematical problems of various types. Some examples of just a few of them, which are primarily public-domain software, are the following:

FITPACK
is a mathematical library that performs curve-fitting and surface-fitting using splines under tension. Featues include a variety of dimensions for base and target spaces, approximation of data with apparent poles, and the aproximation of integrals, derivatives, and lengths of the approximating curves. http://www.netlib.org/fitpack
ITPACKV/NSPCG
are packages of subroutines for solving large sparse linear systems of equations by iterative methods. Features of the software include automatic parameter estimation and implementaton of accurate termination criteria. These packages can be employed to solve linear systems arising from either finite difference or finite element modeling of ellpitc partial differential equations. ITPACKV is a vectorized software package with basic iterative schemes such as Jacobi, successive overrelaxation (SOR), symmetric SOR, and reduced system with convergence accelerated by either Chebyshev or conjugate gradient procedures. The routines in NSPCG also involve various acceleraton techniques, including conjuage gradient, Chebyshev acceleration, and generalized conjugate gradient methods for nonsymmetric systems, in conjunction with preconditioners (or basic iterative methods). These packages were developed as part of the ITPACK Project of the Center for Numerical Analysis at The University of Texas at Austin. http://www.ma.utexas.edu/CNA
LAPACK
contains routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular-value problems. The associated matrix factorizations (LU, Cholesky, QR, SVD, Schur, generalized Schur) are also provided, as are related computations such as reordering of the Schur factorizations and estimating condition numbers. Dense and banded matrices are handled, but not general sparse matrices. In all areas, similar functionality is provided for real and complex matrices, in both single and double precision. http://netlib2.cs.utk.edu/lapack/index.html
MINPACK
is a library of routines for solving systems of nonlinear equations and nonlinear least squares problems. One can either choose whether to use routines that calculate the Jacobian automaticaly or to supply routines for the Jacobian.
http://www-fp.mcs.anl.gov/otc/Guide/SoftwareGuide/index.html
PDE2D
is a finite element code that solves systems of linear and nonlinear time-dependent, steady-state, and eigenvalue partial differential equations in general two-dimensional regions and in three-dimensional boxes. It can handle problems in such areas as elasticity, diffusion, heat condution, potential energy, and fluid mechanics. It has an interative interface and extensive graphical output capabilities. http://members.aol.com/pde2d/
ODEPACK
is a collection of subroutines for the solution of ordinary differential equations, with initial values given. These routines are particularly useful for solving the ODE systems that arise when the method of lines is used to solve time-dependent partial differential equations. They were developed at Lawrence Livermore National Laboratory (LLNL) and the homepage of this package is: http://www.llnl.gov/CASC/odepack
PETSc
is a Portable Extensible Toolkit for Scientific Computing for solving partial differential equations and related problems. It is a suite of data structures and routines for building large scale applications consisting of parallel linear and nonlinear equation solvers and unconstrained minimization modules. Argonne National Laboratory (ANL) supports this project and is the primary distribution site: http://www-fp.mcs.anl.gov/petsc
ScaLAPACK
is a collaborative effort involving several institutions [Oak Ridge National Laboratory, Rice University, University of California (Berkeley and Los Angeles), University of Illinois, and University of Tennessee (Knoxville)] and comprises four components: dense and band matrix software (ScaLAPACK), large sparse eigenvalue software (PARPACK and ARPACK), sparse direct systems software (CAPSS and MFACT), and preconditioners for large sparse iterative solvers (ParPre). http://netlib2.cs.utk.edu/scalapack/index.html



[Home] [Features] [TOC] [Purchase] [Code] [Web] [Manuals] [Errata] [Links]