## Miscellaneous TOMS (& CACM) algorithms

N.B. I have been asked to provide a link to the copyright policy of the ACM. Loosely paraphrased, this allows use, and modification, of the TOMS algorithms for most non-commercial purposes. It also emphasizes that the ACM accepts no responsibility for the accuracy of the code.

• cacm125.f90. Calculate ordinates and weights for Gaussian integration.
• cacm395.f90. Calculate 2-tailed probabilities from Student's t distribution.
• cacm396.f90 calculates quantiles of the t-distribution. These are translations of Geoff Hill's algol code; Geoff was acting chief of CSIRO Division of Mathematical Statistics at one time. There is also a test program which may be useful test395.f90.
• cpoly.f90 This is the classic Jenkins & Traub algorithm (CACM 419) for the solution of complex polynomials. q_cpoly.f90 is a version in quadruple precision.
• rpoly.f90 TOMS algorithm 493 for the solution of polynomial equations with real coefficients. q_rpoly.f90 is a version in quadruple precision.
• toms513.f90 In situ transpose of an MxN matrix.
• toms519.f90 Kolmogorov-Smirnov probabilities.
• toms530.f90 Eigenvalues & vectors of real skew-symmetric matrices (i.e. a(i,j) = -a(j,i) ), and of symmetric matrices with zero diagonal elements.
• toms533.zip A simple package for the solution of sparse linear equations. It is even shorter and simpler in Fortran 90 as the user does not supply work arrays. The zipped file (use PKUNZIP or WinZip to access the contents) contains two demo programs. The second of these contained an error in the F77 version, and the solution vector was completely wrong.
• toms615.f90 Fitting linear regression models by minimizing the sum of absolute deviations. i.e. using the L_1 norm. There are also, a short test program:
• test615.f90 A data file for the test program:
• test615.dat and a file showing the output:
• test615.out
• toms639.f90 Integration from zero to infinity of oscillating functions. Includes driver program.
• toms642.zip Fit a cubic spline to noisy data using generalized cross-validation. Data may be unevenly spaced, and have different weights. Bayesian point error estimates are generated.
• fexact.zip (TOMS 643) Fisher's exact test for two-way contingency tables. This is a zipped file including a driver, data sets, and output. Use pkunzip or winzip to unpack the files.
• toms644.zip Bessel and Airy functions for complex arguments. This is a zipped file including test programs. Use pkunzip or winzip to unpack the files.
• toms654 The incomplete gamma function and its inverse. Test program: t_incgam.f90
• toms660.f90 Quadratic spline interpolation of a bivariate function defined by irregularly spaced data.
• toms661.f90 Quadratic spline interpolation of a trivariate function defined by irregularly spaced data.
• toms655.zip IQPACK (Interpolation / Quadrature). Calculates nodes and weights for 8 types of Gaussian quadrature (Legendre, Chebyshev, Hermite, rational polynomial, etc.).
• toms667.f90 Global minimization using a stochastic algorithm, with 37 test problems test667.f90. Many of the test problems require hundreds of thousands of function evaluations. See also global.f90 below in the miscellaneous code section.
• toms668.f90 The file for r_hyperg.f90 contains TOMS algorithm 668 for generating random values from the hypergeometric distribution.
• toms683.f90 The exponential integral En(x) for complex argument x.
• toms703.f90 A package for the solution of systems of ordinary differential equations: DY/DT = F(Y,T). There is also a test program: test703.f90
• toms707.f90 Confluent hypergeometric function for complex arguments.
• toms715.zip Special functions by W.J. Cody and others. Particularly Bessel functions, but also the gamma, normal distribution, error, Dawson and psi functions.
• toms725.f90 Multivariate normal integrals for dimension up to 20.
• toms726.zip Walter Gautschi's package for generating orthogonal polynomials and Gauss-type quadrature rules. The zip file contains a double precision, and most of the single precision code, plus the set of 11 test programs and Gautschi's output.
• toms751.f90 Renka's TRIPACK package for constrained 2D Delaunay triangulation, including test program (with built-in data) and output files.
• toms757.zip Code for computing some uncommon special functions, including Abramowitz functions, Airy function variants, integrals of zero-order Bessel functions, Debye functions, Struve functions, Synchrotron radiation and transport functions, Lobachevski and Stromgen integrals, etc. A test program is included. This is a zip file.
• toms760.f90 Bicubic interpolation from a rectangular grid of data. There is also a test program: test760.f90
• toms766.zip Code for computing Pade'-Hermite and simultaneous Pade' approximants, plus two driver programs.
• toms778.zip This subroutine solves bound-constrained optimization problems by using the compact formula of the limited memory BFGS updates.
• tensolve.zip This contains both TOMS 739 (UNCMIN) for unconstrained minimization, and TOMS 768 (TENSOLVE) for the solution of sets of non-linear equations.
• toms790.zip Cubic interpolation of scattered data in two dimensions with continuous second derivatives.
• toms796.zip This package is for the numerical inversion of Laplace transforms. The original was in very poor Fortran 77 which used many non-standard features, and it contained many bugs. Each compiler I tried gave different errors, and then different results when the errors were corrected. This version is in standard Fortran and gives reproducible results.
• toms813.zip This package is for local minimization, with or without convex constraints. It requires the user to supply first derivatives. This version is in standard Fortran. It uses the so-called spectral projected gradient (SPG) method.
• toms819.zip This is for the computation of the Airy functions Ai(z) and Bi(z) and their derivatives for complex arguments.