Mathcom Home
Services Customers Tech Info Contact Us

NA Software Libraries on the Net

Libraries are collections of source code, and source code packages. Much of the code is in Fortran. If you prefer to speak C++ or C, see C++ Resources , and Fortran, C, and f2c . The main library by far is Netlib .

For statistical software, the best resource is Statlib .

Other libraries are UCAR's Mathematical and Statistical Libraries and Hensa Unix Parallel Archive .

  • Netlib, including LAPACK
  • Fortran, C, and the f2c Translator
  • Statlib
  • UCAR's Mathematical and Statistical Libraries
  • Hensa Unix Parallel Archive
  • Modula-3 NA Library
  • Forth Numerical/Scientific Library
  • Eiffel Numerical/Scientific Library
  • Lisp Numerical/Scientific Libraries
  • Java Numerical/Scientific Libraries
  • Bell Labs (Lucent) Libraries
  • PLAPACK: Parallel Linear Algebra
  • WGS: NICONET Control Theory Libraries
  • GSL: GNU Scientific Library
  • ATLAS: Automatically Tuned Linear Algebra Software
  • Trilinos parallel solver

    See also the sections on:

  • Dense Linear Algebra Systems
  • Sparse Linear Algebra Systems

    Netlib, including LAPACK

    Netlib is probably the world's largest repository of numerical methods programs. It is located at Oak Ridge National Laboratory, Knoxville, Tennessee, and at AT&T Bell Laboratories, Murray Hill, NJ.

    Some gems of netlib: LAPACK provides a wide variety of linear algebra functions:

  • url LAPACK home
  • url LAPACK Fortran95 interface
  • url C version of LAPACK
  • url Java version of LAPACK, f2j
  • url Java version of LAPACK, f2j

    LAPACK++ is a C++ version of, sadly, only a subset of LAPACK. LAPACK++ is work in progress, and hopefully the full functionality of LAPACK will be supported soon.

    ScaLAPACK is for distributed memory machines.

    Machine/architecture dependent Basic Linear Algebra Subroutines (BLAS) are the keystone of Netlib.

    Fortran, C, and the f2c Translator

    For C++ and C resources, see C++ Resources .

    f2c: Most of the programs in netlib are in Fortran. However, netlib contains an excellent Fortran-to-C conversion utility, f2c. While f2c produces working C code, it is visually complex and ugly. Using f2c on a large package like LAPACK can require a good deal of time to get all the options correct. Fortunately, LAPACK has already be converted to C: see CLAPACK.

    The utility f2c can also be invoked by email. Send email to, with the subject "execute f2c", and body containing the non-confidential Fortran program to be converted. But the email option is of use only for very small, simple programs, since a resulting C program of any size must be linked with the f2c libraries. Usually one will have to download the f2c package anyway to generate the libraries. Generally it's easier to download the f2c package, build the libraries and the f2c conversion program, and do the conversion locally.

    CAUTION: Programs created by f2c conversion use parameter passing conventions different from most C or C++ programs. Their callers must create the appropriate parameters before using them. See the file in the f2c distribution. A good description of this issue may also be found in the "readme" file for clapack in netlib.


    Statlib is a huge repository of statistics related software and info. Probability, statistics, random variables, distribution functions.

    Statlib via ftp.

    UCAR's Mathematical and Statistical Libraries

    UCAR math libraries contain some overlap with netlib.

    Hensa Unix Parallel Archive

    The Hensa archive contains general info, software, articles, etc., on parallel computing.

    Modula-3 NA Library

    The m3na Modula-3 library is a collection of numerical analysis routines written in Modula-3. Includes linear algebra, roots, ffts, and a bit of statistics.

    Forth Numerical/Scientific Library

    One library of Forth scientific software is at Skip Carter's site at Taygeta

    Eiffel Numerical/Scientific Library

    Some commercial Eiffel scientific software is at

    Lisp Numerical/Scientific Libraries

    Some widely used lisp scientific libraries are:


    Quail Quail: Quantitative analysis in lisp

    U Mass instrumentation and statistical analysis packages

    CMU's library

    Java Numerical/Scientific Libraries

    The Visual Numerics' Java package, JNL, is a Numerical Library for Java, is a set of classes for the most important numerical functions missing in Java. The library is comprised of one numerical type class, Complex, and three categories of numerical functions classes: the special functions class, the linear algebra classes, and the statistics class. All classes use double precision floating point as the underlying float type.

    The f2j, JLAPACK project provides the LAPACK and BLAS numerical subroutines translated from their Fortran 77 source into class files, executable by the Java Virtual Machine (JVM) and suitable for use by Java programmers. This makes it possible for a Java application or applet distributed on the web to use established legacy numerical code that was originally written in Fortran. The translation was accomplished using a special purpose Fortran-to-Java (source-to-source) compiler.

    Linear Algebra for Statistics Java Package

    JAMA is a basic linear algebra package for Java. It provides user-level classes for constructing and manipulating real, dense matrices. Five fundamental matrix decompositions are provided:

  • Cholesky Decomposition of symmetric, positive definite matrices
  • LU Decomposition (Gaussian elimination) of rectangular matrices
  • QR Decomposition of rectangular matrices
  • Eigenvalue Decomposition of both symmetric and nonsymmetric square matrices
  • Singular Value Decomposition of rectangular matrices

    JAMA is by no means a complete linear algebra environment. For example, there are no provisions for matrices with particular structure (e.g., banded, sparse) or for more specialized decompositions (e.g. Shur, generalized eigenvalue). Complex matrices are not included. It is not our intention to ignore these important problems. We expect that some of these (e.g. complex) will be addressed in future versions. It is our intent that the design of JAMA not preclude extension to some of these additional areas.

    The SciMark Java numerical benchmark consists of various kernels (FFT, Monte Carlo, sparse matrix computation, finite-difference stencils, and LU factorization) and is meant to provide an indication of how well Java environments perform on numeric and scientific applications. SciMark can be run interactively within your browser, or downloaded to run in other Java environments. The web site includes bar-graph comparisons between various computer/Java platforms, as well as an archive of previous results.

    jscience A set of Java libraries for linear algebra, symbolic calculations, arbitrary precision arithmetic, units, etc.

    Lucent Libraries

    The Lucent Software Libraries include the following items:
  • BL-QMR A Block-QMR Algorithm for Non-Hermitian Linear Systems With Multiple Right-Hand Sides
  • fptest A Test of a Computer's Floating-Point Arithmetic Unit
  • imd Multilayer optical properties: modeling and curve-fitting
  • IQP Quadratic Programming
  • PORT The PORT Mathematical Subroutine Library is a collection of Fortran 77 routines that address many traditional areas of mathematical software, including approximation, ordinary and partial differential equations, linear algebra and eigensystems, optimization, quadrature, root finding, special functions, and Fourier transforms, but excluding statistical calculations. PORT stands for Portable, Outstanding, Reliable, and Tested.
  • topo Surface topography analysis

    PLAPACK: Parallel Linear Algebra

    PLAPACK is an MPI based Parallel Linear Algebra Package (PLAPACK) designed to provide a user friendly infrastructure for building parallel dense linear algebra libraries. The Users' Guide, "Using PLAPACK: Parallel Linear Algebra Package" is available from The MIT Press. WHAT IS DIFFERENT: PLAPACK provides three features not currently found in other publically available parallel dense linear algebra libraries:
  • A matrix distribution that is a step towards one that is driven by the natural distribution of an application,
  • An application interface for filling and querying matrices and vectors,
  • A programming interface that allows the code to be written in a way that closely resembles the way algorithms are naturally explained, using object based (MPI-like) programming.

    WGS: NICONET Control Theory Libraries

    The NICONET library objectives are to bring together the existing numerical software for control and systems theory in a widely available library, called NICONET, and to extend this library to cover as far as possible the area of industrial applications.

    GSL: GNU Scientific Library

    The GNU Scientific Library (GSL) is a collection of routines for numerical computing in C. The routines have been written from scratch over a five year period by the GSL team using modern coding conventions. The subject areas covered by the library include:
  • Complex Numbers
  • Roots of Polynomials
  • Special Functions
  • Vectors and Matrices
  • Permutations
  • Sorting
  • BLAS Support
  • Linear Algebra
  • Eigensystems
  • Fast Fourier Transforms
  • Quadrature
  • Random Numbers
  • Quasi-Random Sequences
  • Random Distributions
  • Statistics
  • Histograms
  • N-Tuples
  • Monte Carlo Integration
  • Simulated Annealing
  • Differential Equations
  • Interpolation
  • Numerical Differentiation
  • Chebyshev Approximation
  • Series Acceleration
  • Discrete Hankel Transforms
  • Root-Finding
  • Minimization
  • Least-Squares Fitting
  • Physical Constants
  • IEEE Floating-Point

    ATLAS: Automatically Tuned Linear Algebra Software

    The ATLAS (Automatically Tuned Linear Algebra Software) provides a complete, high performance implementation of the BLAS library, and a small subsection of the LAPACK library. In addition, the associated developer release (ATLAS 3.3) possesses support for Intel's SSE2, allowing for maximal DGEMM performance of around 2 Gflop/s on a 1.5Ghz Pentium 4 (SSE1 provides a roughly 4 Gflop/s peak SGEMM on the same machine). Prebuilt archives are available for many architectures, including well-tested version of the developer release. In particular, SSE2-enabled Pentium 4 libraries are available for both Linux and Windows.

    ATLAS is a software package that will automatically generate highly optimized numerical kernels for our commodity processors. As the underlying computing hardware doubles its speed every eighteen months, it often takes more than a year for software to be optimized or "tuned" for performance on a newly released CPU. Users tend to see only a fraction of the power available from any new processor until it is well on the way to obsolescence.

    Trilinos Parallel Solver

    Trilinos Project is an effort to develop parallel solver algorithms and libraries within an object-oriented software framework for the solution of large-scale, complex multi-physics engineering and scientific applications.

    Copyright 1995-2013 Mathcom Solutions Inc                               Updated May 15, 2013