Skip to main content
U.S. flag

An official website of the United States government

Official websites use .gov
A .gov website belongs to an official government organization in the United States.

Secure .gov websites use HTTPS
A lock ( ) or https:// means you’ve safely connected to the .gov website. Share sensitive information only on official, secure websites.

ACMD Software Products

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.


CMLIB

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: ReadmeDownload full library (zip archive) / Download full library (gzipped tar file)

Contact: R. F. Boisvert

cnofm

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).

StatusNot Maintained

Linkscnofm.c, cnofmx.c (for older compilers) and cnofm.f (F77)

ContactJ. L. Blue

colloc++

A prototype C++ class library for implementing the method of Matrix Decomposition using Orthogonal Spline Collocation for elliptic boundary value problems.

Status: Not Maintained

LinksSource

ContactK. A. Remington

Delaunay

Software for computing 2-D and 3-D Delaunay, Voronoi, Power, Regular constructs, etc.

StatusActive Maintenance

ContactJ. Bernal

ENVELOPE

 A program for calculating envelope curves for oscillatory data.

Status: Not Maintained

ContactM. A. McClain

f90gl

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.

StatusNot Maintained

Contact: W. F. Mitchell

FCNPAK

Fortran subroutines for the associated Legendre (Ferrers) functions.

StatusNot Maintained

Links: Source

ContactD. W. Lozier

FERD

Fortran program package for unfolding radiation spectra.

Status: Not Maintained

Links: Source

ContactB. W. Rust

FERDO

Fortran program packages for unfolding radiation spectra.

Status: Not Maintained

Links: FERDO

Contact: B. W. Rust

Format

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

Harwell-Boeing I/O

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

ContactsK. A. Remington or R. Pozo

HFFT3

High-order fast-direct solution of the Helmholtz equation on rectangular two- and three-dimensional domains.

Status: Not Maintained

ContactR. F. Boisvert

IML++

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

IMPI

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.

StatusNot Maintained

Contact: W. L. George

INVAR

An interactive nonlinear least squares program especially suited for separable problems.

StatusNot Maintained

LinksSource

ContactB. W. Rust

JAMA

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

Jampack

An extensible collection of cooperating classes designed to perform matrix computations in Java applications..

Status: Minimal Maintenance

Contact: G. W. Stewart

Java Classes

User interface classes which extend java.awt developed in conjunction with HotGAMS.

Status: Not Maintained

Contact: B. R. Miller

LAPACK++

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

MGGHAT

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

MPI Data Type Tools (AutoMap and AutoLink)

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

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

ODRPACK

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

OOMMF

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

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

package

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

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

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

QUADPACK

Fortran subprograms for evaluating definite integrals of functions of one variable, including singular integrands and infinite intervals.

Status: Not Maintained

Contact: D. Kahaner

Regen

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

SLATEC

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

spblas

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

SparseLib++

A C++ class library for efficient sparse matrix computations across various computational platforms.

Status: Minimal Maintenance

Contacts: R. Pozo or K. A. Remington

STARPAC

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.

StatusNot Maintained

Contact: J. Rogers

StopWatch

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

TNT

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

THREEDMD

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

VFFTPACK

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

VFNLIB

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

VOLKSGRAPHER

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

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

Zoltan

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


Software Disclaimer

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. 

Created May 11, 2010, Updated March 22, 2022