---------------------------------------------------------------------- N I S T C O R E M A T H L I B R A R Y ( C M L I B ) ---------------------------------------------------------------------- ( Version 3.0 --- April 1988 ) A collection of non-proprietary, easily transportable Fortran subprogram packages solving a variety of mathematical and statistical problems. Compiled by Ronald F. Boisvert (boisvert@nist.gov) Sally E. Howe David K. Kahaner Computing and Applied Mathematics Laboratory National Institute of Standards and Technology Gaithersburg, MD 20899 Although most applications will only use a small number of CMLIB modules, there are no name conflicts within the library and thus all of CMLIB can easily be installed. All the documentation is machine readable. Distribution : CMLIB is distributed as a compressed Unix tar file ------------ containing all CMLIB source and documentation. When uncompressed it expands to about 14 Mbytes. To obtain cmlib for your workstation, do the following : mkdir cmlib cd cmlib ftp ftp.nist.gov user anonymous cd cmlib binary get src.tar.Z cmlib.tar.Z quit zcat cmlib.tar.Z | tar xvf - rm cmlib.tar.Z Also available on this ftp site: src.zip ................. Zipped source file for unbundling on PCs. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + + DISCLAIMER + + + + Inclusion of computer programs in the NIST Core Math Library (CMLIB) + + does not imply certification, recommendation, or endorsement by the + + National Institute of Standards and Technology, nor does it imply + + that the programs are necessarily the best available for the purpose. + + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADAPT.........A subroutine for evaluation of the integral of a user specified function on a hyper rectangle of dimension 2 through 20. AMOSLIB.......A collection of special function routines with particular emphasis on the special functions of statistics. BLAS..........Basic linear algebra subroutines. Perform various elementary matrix and vector opertaions. BOCLS.........Solves bounded and linearly constrained linear least squares problems. BSPLINE.......Subroutines for computing with piecewise polynomials (B- splines). Includes interpolation, differentiation and integration with B-splines. BVSUP.........Solves linear two-point boundary value problems using superposition voupled with an orthonormalization procedure and a variable-step integration scheme. CDRIV.........Solves initial value problems for systems of ordinary differential equations including stiff equations. Complex differential equations, real independent variable. CLUSTER.......Subroutines for cluster analysis and related line printer graphics. Included are routines for clustering variables and/or observations using algorithms such as direct joining and splitting, Fisher's exact optimi- zation, single-link, K-means, and minimum mutations, and routines for estimating missing values. CPQR79........Two subprograms for finding all (complex) zeros of real or complex polynomials. (Based on EISPACK software.) CPZERO........Two subprograms for finding all (complex) zeros of real or complex polynomials. (Based on Newton's method.) DBSPLIN.......Subroutines for computing with piecewise polynomials (B- splines). Double precision version of BSPLINE package. DDASSL........Solves the system of differential/algebraic equations of the form g(t,y,yprime) = 0. (Double precision version of SDASSL) DEPAC.........A suite of programs for solving initial value problems for ordinary differential equations. DDRIV.........Solves initial value problems for systems of ordinary differential equations, including stiff systems. (Double precision version of SDRIV). DNL2SN........A collection of two subprograms for nonlinear least squares problems and three subprograms for general unconstrained minimization problems. Double precision version of NL2SN. DQRLSS........Solves linear least squares problem in the matrix form Ax=b. Uses LINPACK routines. Easy to use. Double Precision version of SQRLSS. DTENSBS.......Interpolation of two and three dimensional gridded data using tensor products of one dimensional B-spline basis functions. Double precision version of TENSBS. EISPACK.......Solves various linear algebraic eigenvalue problems. FC............Solves constrained least squares problems. FCNPAK........A collection of special function routines, including the associated Legendre functions (Ferrers functions), the normalized Legendre polynomials, and elliptic integrals of the first, second, and third kinds. FFTPKG........Subroutines for computing the fast Fourier transform in various forms. FNLIB.........Portable special function routines (e.g. Bessel functions, the error function, etc.) FISHPAK.......FISHPAK solves separable elliptic boundary value problems in two and three dimensions using a variety of coordinate systems. LICEPAK.......Solves various linear algebraic eigenvalue problems. (Provides an interface to the EISPACK package). LINDRV........Programs to solve linear systems of algebraic equations in a number of forms. Provides an easy to use interface to the LINPACK package. LINPAKC.......Analyse and solve various systems of linear algebraic equations. (Complex precision version of LINPACK). LINPAKD.......Analyse and solve various systems of linear algebraic equations. (Double precision version of LINPACK). LINPAKS.......Analyse and solve various systems of linear algebraic equations. (Single precision version of LINPACK). LOTPS.........A set of programs for smooth interpolation of scattered data in two dimensions using thin-plate splines. MACHCON.......Functions that return machine-dependent constants. These are used by many routines in CMLIB. MXENTRP.......compute maximum entropy spectrum estimates for equally spaced time series. NL2SN.........A collection of two subprograms for nonlinear least squares problems and three subprograms for general unconstrained minimization problems. ODRPACK.......A collection of subprograms for computing a weighted orthogonal distance regression or ordinary linear or nonlinear least squares solution. (Both single and dou- ble precision versions are available.) PCHIPD........is a set of programs for interpolation of univariate data and which is specially adapted to producing fits which are are aesthetically pleasing. (Double precision version of PCHIP). PCHIPS........is a set of programs for interpolation of univariate data and which is specially adapted to producing fits which are are aesthetically pleasing. (Single precision version of PCHIP). Q1DA..........evaluates one dimensional integrals automatically, easy to use but very powerful. QUADPKD.......is a set of programs for evaluating definite integrals of functions of one variable; the double precision version of QUADPKS. QUADPKS.......is a set of programs for evaluating definite integrals of functions of one variable; including singular integrands and infinite intervals . RV............generates uniform random numbers or normal numbers with zero mean and standard deviation one. Portable, reproducible, and with a long cycle SDASSL........Solves the system of differential/algebraic equation of the form g(t,y,yprime) = 0. SDRIV.........Solves initial value problems for systems of ordinary differential equations, including stiff systems. SGLSS.........Solves over or underdetermined linear systems in least squares sense. SLRPACK.......A collection of subprograms for simple linear regression SLVBLK........solves linear systems of algebraic equations where the coefficient matrix is in "almost block diagonal" form SNLS1E........Solves non-linear least squares problems and non-linear systems of equations. SPLP..........Solves linear programming problems (minimize a linear function of n variables subject to linear equality constraints). SQRLSS........Solves linear least squares problem in the matrix form Ax=b. Uses LINPACK routines. Easy to use. SSORT.........Fast in-core sorting of arrays. TENSBS........Interpolation of two and three dimensional gridded data using tensor products of one dimensional B-spline basis functions. TWODQ.........Automatic evaluation of two dimensional integral of a function f(x,y) on one or more triangles in the plane. UNCMIN........Solves the unconstrained minimization problem for a real-valued twice-continuously-differentiable function of n variables. VFFT..........A vectorized package of Fortran subprograms for the fast Fourier transform of multiple real sequences. VHS3..........A vectorized package of Fortran subprograms for the solution of a three-dimensional Helmholtz equation on a staggered grid. VSFFT.........A vectorized package of Fortran subprograms for the fast transform of multiple real sequences defined on a staggered grid. XBLAS.........Extended basic linear algebra subroutines. Perform various matrix and vector operations not found in the BLAS. XERROR........Error handling utilities. These are used by most subprograms in CMLIB. ZEROIN........Finds zeros of a function of one variable. ------------------------------------------------------------------------- REVISION HISTORY Version 1.0 March 1986 Version 2.0 March 1987 Version 3.0 April 1988 ------------------------------------------------------------------------- SUMMARY OF CHANGES Version 1.0 (March 1986) to Version 2.0 (March 1987) NEW SUBLIBRARIES CLUSTER = cluster analysis VFFT = multiple real FFTs (with Cyber 205 vector version) VSFFT = multiple real staggered grid FFTs (with Cyber 205 vector version) VHS3 = solution of Poisson/Helmholtz equation on a staggered grid in three dimensions (with Cyber 205 vector version) MODIFIED SUBLIBRARIES (source, documentation, and tests changed) SDRIV = new version (dimensions of WORK, IWORK changed) DDRIV = new version (dimensions of WORK, IWORK changed) CDRIV = new version (dimensions of WORK, IWORK changed) FCNPAK = new version of all routines except RC, RD, RF AMOSLIB = added four new subprograms: BESY, DBESJ, DPSIFN, PSIFN OTHER MODIFICATIONS ADAPT = test program changed (changed MAXPTS and WORKSTR from 2000 to 3000) BLAS = test program changed (calls to DQDOTA and DQDOTI removed) ------------------------------------------------------------------------- SUMMARY OF CHANGES Version 2.0 (March 1987) to Version 3.0 (April 1988) NEW SUBLIBRARIES ODRPACK = orthogonal distance regression PCHIPD = piecewise cubic Hermite interpolation (double precision MODIFIED SUBLIBRARIES (source, documentation, and tests changed) VFFT = added routines for multiple trigonometric transforms, e.g. sine, cosine (with Cyber 205 versions) QUADPKS = added routine EA for accelerating convergence of sequences QUADPKD = added routine DEA for accelerating convergence of sequences (double precision version of EA) PCHIPS = new version FCNPAK = new version Legendre function routines XDLEGF, XSLEGF, XDNRMP, XSNRMP OTHER MODIFICATIONS AMOSLIB = added missing internal routines BESYNU, YAIRY, DBESY, DASYJY, DBSYNU, DYAIRY BOCLS = added missing internal routine DMOUT FC = minor change to test program LINDRV = minor change to test programs LINDRV1 and LINDRV2 MACHCON = added machine constants for Cyber 180 NOS/VE, SUN 3, and CONVEX C-120 SDRIV = added assignment G=0.0 before RETURN in function G SLRPACK = minor change to test program VFFT = fixed reference to function PIMACH in VRADB3, VRADB5, VRADBG, VRADF3, VRADF5, VRADFG, VRFTI1 VHS3 = fixed reference to function PIMACH in VSCOSI, VSCSQI