Division staff have been involved in the development of a wide variety of software packages, many of which are in widespread use. Examples of these follow. Note: except where noted below, each of these software packages is subject to our software disclaimer.
The NIST Core Math Library
A collection of high-quality, easily transportable Fortran subroutine sublibraries solving standard problems in many areas of mathematics and statistics compiled and maintained for use on NIST systems from supercomputers to workstations.
Status: Not Maintained
Links: Readme / Download full library (zip archive) / Download full library (gzipped tar file)
Contact: R. F. Boisvert
Juror Selection Program
In choosing a jury panel, one wishes to randomly and fairly select N jurors out of a pool of M names, where M is usually much larger than N. "Fairly" means that all combinations of N jurors should be equally likely to be chosen. Sample software for this problem was developed in June of 1994 at the request of the Administrative Office of the U.S. Courts. The software was included in a Request for Proposals for a turnkey system for jury selection. Except for very minor changes, these are the same as the 1994 versions. The algorithms are suitable for juror pools of any reasonable size (the upper limit is over two billion jurors).
Status: Not Maintained
Links: cnofm.c, cnofmx.c (for older compilers) and cnofm.f (F77)
Contact: J. L. Blue
A prototype C++ class library for implementing the method of Matrix Decomposition using Orthogonal Spline Collocation for elliptic boundary value problems.
Status: Not Maintained
Links: Source
Contact: K. A. Remington
Software for computing 2-D and 3-D Delaunay, Voronoi, Power, Regular constructs, etc.
Status: Active Maintenance
Contact: J. Bernal
A program for calculating envelope curves for oscillatory data.
Status: Not Maintained
Contact: M. A. McClain
A fortran interface for Mesa, a freely distributable 3D graphics library with an API which is very similar to that of OpenGL, and GLUT, a window system independent API toolkit for writing OpenGL programs. It provides both fortran 77 and fortran 90 interfaces, and can also be used with native OpenGL implementations.
Status: Not Maintained
Contact: W. F. Mitchell
Fortran subroutines for the associated Legendre (Ferrers) functions.
Status: Not Maintained
Links: Source
Contact: D. W. Lozier
Fortran program package for unfolding radiation spectra.
Status: Not Maintained
Links: Source
Contact: B. W. Rust
Fortran program packages for unfolding radiation spectra.
Status: Not Maintained
Links: FERDO
Contact: B. W. Rust
Macsyma utilities for user-directed hierarchical structuring of expressions, as well as for directing simplifications to selected subexpressions. Emphasizes semantic rather than syntactic description of desired forms. Includes utilities for obtaining efficiently the coefficients of polynomials, trigonometric sums and power series.
Status: Not Maintained
Links: Source
Contact: B. R. Miller
A collection of C procedures for reading and writing Harwell-Boeing matrix files. Harwell-Boeing is the principal ASCII exchange format for sparse matrices.
Status: Minimal Maintenance
Contacts: K. A. Remington or R. Pozo
High-order fast-direct solution of the Helmholtz equation on rectangular two- and three-dimensional domains.
Status: Not Maintained
Contact: R. F. Boisvert
A C++ templated library of modern iterative methods for solving both symmetric and nonsymmetric linear systems of equations. The algorithms are fully templated in that the same source code works for dense, sparse, and distributed matrices.
Status: Minimal Maintenance
Contacts: R. Pozo or K. A. Remington
The IMPI (Interoperable MPI) tester is an on-line service for testing compliance of an MPI library with the IMPI specification. IMPI is a set of protocols, implemented within an MPI library, that allow two or more MPI libraries to operate as a single MPI library that spans two or more separately administered parallel computers. Any developer of an MPI library that will include IMPI support can use this tester during development to verify that their library will interoperate with other IMPI enabled MPI libraries. This tester is accessed over the Internet, using a simple Java applet for the user interface, and is implemented in Java to mimic one or more remote clusters running IMPI/MPI. The IMPI tester includes a set of tests that exercise each of the IMPI protocols, communicating with the user's cluster over TCP/IP sockets, and returns pass/fail results to the user.
Status: Not Maintained
Contact: W. L. George
An interactive nonlinear least squares program especially suited for separable problems.
Status: Not Maintained
Links: Source
Contact: B. W. Rust
A linear algebra package for Java. Includes LU, QR, and singular value decompositions, solution of linear systems, least squares, and eigenvalue problems.
Status: Minimal Maintenance
Contacts: R. F. Boisvert, K. A. Remington, B. R. Miller or R. Pozo
An extensible collection of cooperating classes designed to perform matrix computations in Java applications..
Status: Minimal Maintenance
Contact: G. W. Stewart
User interface classes which extend java.awt developed in conjunction with HotGAMS.
Status: Not Maintained
Contact: B. R. Miller
LAPACK extensions for high performance linear algebra computations. This version includes support for solving linear systems using LU, Cholesky, and QR matrix factorizations.
Status: Not Maintained
Contact: R. Pozo
MultiGrid Galerkin Hierarchical Adaptive Triangles: a Fortran program for the solution of general second order linear self-adjoint elliptic partial differential equations with Dirichlet, natural, or mixed boundary conditions on 2D polygonal domains (possibly with holes). MGGHAT uses a finite element method with linear, quadratic, or cubic elements (user selectable) over triangles. Adaptive refinement via newest vertex bisection and multigrid iteration are both based on a hierarchical basis formulation.
Status: Not Maintained
Links: User's Guide and Alternate source
Contact: W. F. Mitchell
AutoMap is a tool designed to simplify the creation of MPI data-types. It works as a source-to-source compiler reading directly from the user typea definitions AutoLink is a tool designed to transfer dynamic data-types (like graphs) using MPI. It works as a library, giving the user access to high level functions to transfer dynamic data-types
Status: Not Maintained
Links: Source
Contact: J. E. Terrill
Newman is a software package for the exact solution of systems of linear equations with integer coefficients on parallel clusters.
Status:Not Maintained
Contact: A. J. Kearsley
Subprograms for fitting a linear or nonlinear model to data. Designed primarily for fitting when the independent as well as the dependent variables have significant errors, ODRPACK implements a highly efficient algorithm for solving the weighted orthogonal distance regression problem. It can also be used to solve the ordinary least squares problem where all of the errors are attributed to the observations of the dependent variable.
Status: Not Maintained
Contact: J. Rogers
The OOMMF (Object Oriented Micromagnetic Modeling Framework) project is aimed at developing portable, extensible public domain programs and tools for micromagnetics. The end product will be a completely functional, user-friendly micromagnetic code, with a well documented, flexible programmer's interface to allow developers outside the OOMMF project to swap their own code in and out as desired. The guts of the code are being written in C++ with a Tcl/Tk (and in the future, possibly OpenGL) interface. Target systems include a wide range of Unix platforms, Windows NT, and Windows 95/98.
Status: Active Development
Contacts: M. J. Donahue or D. G. Porter
OOF (Object Oriented Finite elements) is a tool for reading images of material microstructures, assigning properties to features of the image, and analyzing macroscopic properties via finite element analysis.
Status: Active Development
Contact: S. Langer
Provides a new [package] command for managing Tcl packages. The [package] it provides is meant to be a 100% compatible replacement for the built-in command [package] provided by the Tcl library. It extends the interface of the built-in [package] to provide more control over managing package dependencies, and to provide a more robust package indexing scheme.
Status: Active Maintenance
Contact: D. G. Porter
PADE is a flexible, customizable environment for developing parallel applications that use the Parallel Virtual Machine (PVM) message-passing library. It provides an integrated framework for all phases of development of a message-passing parallel application: editing, compilation, execution, and performance monitoring and enhancement. The PADE package consists of an intuitive graphical user interface, a suite of PVM utilities, and extensive documentation in PostScript, ASCII, and HTML formats. PADE is most useful with a heterogeneous virtual machine consisting of multiple architectures and/or multiple file systems where it aids the parallel developer by helping to keep track of which source files must be sent and compiled on which hosts, sending the files, issuing the compilation commands, and displaying the results of the compilation on the developer's terminal.
Status: Not Maintained
Links: Source
Contact: J. E. Terrill
PHAML (Parallel Hierarchical Adaptive MultiLevel) is a parallel implementation (SPMD message passing) of the techniques used by MGGHAT. This program is written in Fortran 90 and uses either PVM or MPI for message passing.
Status: Not Maintained
Contact: W. F. Mitchell
Fortran subprograms for evaluating definite integrals of functions of one variable, including singular integrands and infinite intervals.
Status: Not Maintained
Contact: D. Kahaner
REGEN3.2 is a Fortran program that models helium flow and heat transfer in regenerators of the type used in cryocoolers. It was developed at NIST by Dr. John Gary. It has been widely used by designers and researches in industry and academia.
Regen3.3 is a newer version of REGEN3.2 that is fully implicit and may be more accurate. It also allows the use of Helium 3 in addition to Helium 4.
Status: Not Maintained
Links: REGEN3.2 and REGEN3.3 Packages
Contact: A. O'Gallagher
Common Mathematical LibraryA collection of Fortran subprograms for a wide variety of mathematical problems. A primary impetus for the library development was to provide portable, non-proprietary, mathematical software for supercomputers at a consortium of government-sponsored research laboratories.
Status: Not Maintained
Contact: D. W. Lozier
NIST Sparse BLAS Library
A collection of C procedures implementing basic linear algebra operations for sparse matrix computations. Part of the ongoing BLAS Forum standardization efforts.
Status: Minimal Maintenance
Contacts: K. A. Remington or R. Pozo
A C++ class library for efficient sparse matrix computations across various computational platforms.
Status: Minimal Maintenance
Contacts: R. Pozo or K. A. Remington
A Fortran subprogram library for statistical data analysis. Its primary applications are time series and nonlinear least squares analysis, but it also includes subprograms for normal random number generation, line printer plots, basic statistical analysis, and linear least squares regression. STARPAC emphasizes the statistical interpretation of computed results.
Status: Not Maintained
Contact: J. Rogers
A Fortran 90 module for measuring execution time of program segments. It is designed to be a portable, easy-to-use means of measuring execution time. It supports the wall clock, CPU clock, a breakdown of the CPU clock into user and system times, and returns all times in seconds. It provides a simple means of determining which clocks are available, and the precision of those clocks.
Status: Not Maintained
Links: User's Guide
Contact: W. F. Mitchell
Template Numerical Toolkit
A numerical toolkit for linear algebra based on the C++ Standard Template Library, together with specialization of generic algorithms for maximum efficiency.
Status: Active Development
Contact: R. Pozo
A fast 3D elliptic solver for distributed memory machines. Based on a Fourier method for Hermite bicubic collocation. PVM implementation.
Status: Not Maintained
Links: Source
Contact: K. A. Remington
Fortran subprograms for the fast Fourier transform of multiple real sequences which have been optimized for vector processors. The package includes a variety of trigonometric transforms.
Status: Not Maintained
Contact: R. F. Boisvert
A suite of portable Fortran subprograms for the vectorized evaluation of Bessel functions and modified Bessel functions of orders zero and one for a vector of real arguments.
Status: Not Maintained
Contacts: R. F. Boisvert or B. V. Saunders
A small and easy to use library for generating the most common types of two dimensional graphs used by scientists.
Status: Not Maintained
Links: Source
Contact: D. Kahaner
WebSubmit is a Web-based utility providing access to applications on a collection of heterogeneous computing resources. Its goal is to make it easy to use computing resources via the Web without requiring knowledge of the specifics of unfamiliar operating systems and dynamic application environments. Users can effectively log into distinct computing environments and perform tasks without needing a detailed knowledge of their operating environment. A collection of machines, referred to as the cluster and determined by the site administrators, can be accessed through WebSubmit. Strong authentication using the Secure Sockets Layer protocol lets registered users connect to the system, and when validated by a WebSubmit authority, gives them access to a group of application modules. Each application module is presented as an HTML form; this form is filled out and submitted to the server, which then processes the request and executes the desired tasks on the specified remote system using another secure protocol. The system is flexible and extensible, and its modularity promotes ease of use, maintainability, and interface development.
Status: Not Maintained
Links: Source
Contact: J. E. Terrill
A dynamic parallel load-balancing library for partitioning problems over sets of processors. Such capability is critical to applications where work loads and/or geometric locality change as computations proceed. In addition, Zoltan can be used as a parallel static partitioner for non-dynamic applications, such as traditional finite element methods. Division staff have contributed to the development of Zoltan, which was developed at Sandia National Laboratories. Note: Zoltan is distributed by Sandia National Laboratories and is subject to SNL usage policies.
Status: Active Development
Contact: W. F. Mitchell
The research software provided on this web site ("software") is provided by NIST as a public service. You may use, copy and distribute copies of the software in any medium, provided that you keep intact this entire notice. You may improve, modify and create derivative works of the software or any portion of the software, and you may copy and distribute such modifications or works. Modified works should carry a notice stating that you changed the software and should note the date and nature of any such change. Please explicitly acknowledge the National Institute of Standards and Technology as the source of the software.
The software is expressly provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT OR ARISING BY OPERATION OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT AND DATA ACCURACY. NIST NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, RELIABILITY, OR USEFULNESS OF THE SOFTWARE.
You are solely responsible for determining the appropriateness of using and distributing the software and you assume all risks associated with its use, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and the unavailability or interruption of operation. This software is not intended to be used in any situation where a failure could cause risk of injury or damage to property. The software was developed by NIST employees. NIST employee contributions are not subject to copyright protection within the United States.