Last-Modified: $Date: 1993/05/02 21:14:39 $ Submitted-By: ajayshah@rcf.usc.edu (Ajay Shah) Version: $Revision: 1.11 $ Frequency: Monthly Welcome to of the index of free source code for numerical computation written in either of C or C++. I also give pointers to books which come with source code (and hence act as low-cost libraries). This file is numcomp-free-c.z in pub/C-numanal on usc.edu A slightly outdated version is c/numcomp-free-c on netlib. Please see the section "interesting sites" below to get some help on how to retrieve software listed here. Table of Contents: * Explanations of fields * The index * f2c * Other pointers * Interesting sites * Books * Credits The index is biased towards fields I work in. Please send me suggestions, corrections and improvements. -Ajay Shah, ajayshah@rcf.usc.edu Explanations of fields ---------------------- Name if the archive has a obvious name, then that is shown. Otherwise I invent something sensible. Where is a pointer into a ftp site, or sufficient information to figure that out. The information at EOF may enlighten you if you are still stuck. Systems The default is Unix. If it runs on other systems this is shown, if it does NOT run on Unix this is shown. Language The default is ANSI C. The alternatives are K&R and C++. Author I try to give the name(s) and email addresses. Sometimes the email address is a contact person, even if it's not the author. Version This tries to identify a most-recent version and gives it's date. Description A one-line description Comments Are a few keywords thrown in to help you egrep. Many things are incomplete; tell me of anything which hurts your eyes. Please point me to goodies I've overlooked. If you have source code which may be of wide interest, please make it available to the net. The index --------- Name : ajay Where : in general on Statlib Description : cholesky decomposition and drawing from MVN Author : Ajay Shah, ajayshah@rcf.usc.edu Version : 23 Sept 1991 Name : as274_fc.tar.z (42748 bytes) Author : Alan Miller (alan@dmsmelb.mel.dms.CSIRO.AU) Port to C and packaging by Ajay Shah (ajayshah@rcf.usc.edu) Systems : Unix Version : 1 May 1993 Description : High accuracy least squares routines with facilities for WLS for a subset of variables, changing the order of variables, dealing with singularities, calculating an estimated covariance matrix of the coefficients. Both fortran and C versions are presented, along with a regression testing setup using ten test programs. See article "Least Squares Routines to Supplement those of Gentleman" in Applied Statistics 41(2), 1992 by Alan Miller. Where : pub/C-numanal on usc.edu Comments : note the .z is the new gzip compression. Name : asa.Z Where : in opt on netlib file `asan' (421511 bytes) in general on statlib Description : adaptive simulated reannealing performing adaptive global optimization on multivariate nonlinear stochastic systems Language : either K&R or ANSI C Author : Lester Ingber (ingber@alumni.caltech.edu) Comments : this program was formerly called vfsr Some documents can be found in file ingber.tar.z in pub/C-numanal on usc.edu Version : 1.2, 27 April 1993 Name : awesime Description : a C++ task library explicitly designed for simulation. Where : pub/cs/misc/Awesime on ftp.cs.colorado.edu Author : Dirk Grunwald (grunwald@foobar.cs.colorado.edu) Version : II Name : bignum Where : pub/bignum on rpub.msu.edu ; ripem.msu.edu Description : directory filled with bignum software, and a file BIGNUMS.TXT which summaries bignum alternatives. Author : BIGNUMS.TXT is by Mark Riordan (mrr@scss3.cl.msu.edu) The ftp site is maintained by him. Version : April 1993. Name : bignum.tar.Z Where : in tars/math on einstein.mse.lehigh.edu (128.180.9.162) Systems : Unix Description : Arbitrary Precision Integer Arithmetic Author : Serpette, Vuillemin, Jean-Claude Herve Version : 23 Sept 1990 Comments : Excellent. very fast. possible problems with unalloc call. Name : brent rootfinding, aitken-lagrange interpolation, hooke-jeeve minimiser Where : in c on Netlib Author : Oleg Keselyov, oleg@nrcbsa.bio.nrc.ca Comments : includes a vectors library. Netlib:c++/brent has C++ version. Version : May 1991 Name : BSDmath Where : e.g. agate.berkeley.edu Description : BSD implementation of math.h Name : cephes Author : Stephen L. Moshier, moshier@world.std.com Description : extremely good library for numerical computation in C. Emphasis on special functions (of very high accuracy), but also contains useful code for matrices, eigenvalues, integration, ODEs, complex arithmetic, chebyshev approximation. Where : the many files in directory cephes on netlib Version : 2.2, June 1992 Name : Cfortran Where : zebra.desy.de [131.169.2.244] Systems : VAX VMS or Ultrix, DECstation, Silicon Graphics, IBM RS/6000, Sun, CRAY, Apollo and HP9000. Language : C, FORTRAN Author : Burkhard Burow, burow@vxdesy.cern.ch, University of Toronto Version : 2.5 Description : A set of macros (cfortran.h = 1000 lines) allowing function calls to be made from C to FORTRAN and vice-versa. Comments : Good compact way of calling functions without translating. Easy to use. Name : chernikov Author : Ata Etemadi (atae@spva.physics.imperial.ac.uk) Where : Volume 26, Issue 91 of comp.sources.unix Description : computes the stochastic webs produced by the Chernikov equations (see Nature Vol. 326, April 1987) and produces a PGM image based on occupancy of cells. The equations essentially describe the path of a non-relativistic charged particle rotating about a magnetic field line, and experiencing a periodic electric field impulse. Version : v1.0, 3 April 1993 Name : cvmath.cc (12263 bytes) Where : in pub/C-numanal on usc.edu Systems : Unix Language : C++ Description : An include file to make complex math look like regular math. Author : Leonard Kamlet, lik@engin.umich.edu Version : 8 March 1993 Comments : The file uses a lot of operator overloading, so that if x=a+ib and y=c+id, the code for multiplying the two together looks like z = x*y; Also, the file includes nrutil from Numerical Recipes, and adds the complex versions for vectors and matrices. Name : dcg.shar Where : in c on Netlib Description : preconditioned conjugate gradient method Author : Mark K. Seager, seager@lll-crg.llnl.gov Name : dddd Where : in pub/dddd on madvax.uwa.edu.au Description : dynamical data determinism detector (works with time-series data). exploits Open windows 3. Systems : Unix Version : 21 Oct 1992 Author : Dave Watson, watson@maths.uwa.edu.au Name : drpn Where : pub/dank/drpn.tar.Z at punisher.caltech.edu Systems : Unix Description : RPN calculator for digital signal processing Author : Dan Kegel, JPL Version : 1.1 Comments : A simple way to do add, multiply, FFT, sum, shift operators on a stream of fixed-length records of data. Handles several data types (16 bit int, 32 bit float). Used, for example, to process a synthetic aperture radar image. Name : dstool Where : somewhere on macomb.tn.cornell.edu Systems : Unix, uses xview3 and open windows 3 Description : Dynamical systems simulation package Plots Lorenz attractors and "other chaotic things" in realtime. Includes a expression evaluator. Author : Version : 1.1 Name : dtoa.c Where : in fp on Netlib Description : correctly rounded decimal <--> binary conversion Name : eigen.1.01.shar.Z (80545 bytes) Version : 1.01, 25 March 1993 Author : Nadav Har'El, nyh@gauss.technion.ac.il Description : Find the N largest eigenvalues and their eigenvectors of a real matrix ( < 700x700). Includes postscript documentation. Where : eigen directory on gauss.technion.ac.il (132.68.112.60) Name : fft.shar Where : in c++ on Netlib Description : radix 2 FFT Name : fft-summary.zoo (81360 bytes) Where : in pub/C-numanal on usc.edu Description : summary about FFT code in C, including lots of source Author : Peter J. McKinney (pm860605@longs.LANCE.ColoState.Edu) and Ron Mayer (mayer@acuson.com) Version : 19 March 1993 Name : fftsing Where : in edu/math/msdos/modelling on wuarchive.wustl.edu Description : FFT of extremely long series; Singleton's mixed radix algo Author : Javier Soley, FJSOLEY@UCRVM2.BITNET Name : frac Where : in c on Netlib Description : finds rational approximation to floating point value Author : Robert Craig, AT&T Bell Labs - Naperville Name : fromskip Where : send email to Skip Carter (address at EOF) Language : C++ Description : numerical derivatives with richardson extrapolation, runge-kutta code, monte-carlo integration, fredholm and voltera integral equation solvers, etc. Name : FSQP, CFSQP Where : send email to andre@eng.umd.edu Systems : many (including DOS) Language : FORTRAN (FSQP), C (CFSQP) Authors : J.L. Zhou (jzhou@eng.umd.edu) and Andre' L. Tits (andre@eng.umd.edu); translated to C by C.T. Lawrence (craigl@eng.umd.edu) Version : FSQP: 3.2, 3/93; CFSQP: 1.1, 3 April 93 Description : solution of constrained continuous optimization problems, possibly minimax (cost function is max of finitely many functions). Comments : modified SQP scheme; successive iterates are all feasible (inequality constraints) or "semi-feasible" (equality constraints) keywords nonlinear minimisation maximisation nonlinear programming Name : fudgit_2.31.tar.Z (451691 bytes) Author : Martin-D. Lacasse, isaac@physics.mcgill.ca Where : pub/Fudgit on ftp.physics.mcgill.ca Description : C-based fitting and data manipulation program (works on top of gnuplot). Gives you a C-like interpreted script language. Systems : Unix only. Comments : FYI, you can pick up gnuplot from pub/gnu on prep.ai.mit.edu Version : 2.31, 13 April 1993 Name : gaut Where : in general on Statlib Description : upper-tail probabilities on normal and t densities Author : Ajay Shah, ajayshah@rcf.usc.edu Version : 12 May 1991 Name : ga's Where : pub/galist/source-code/ga-source on ftp.aic.nrl.navy.mil (192.26.18.74) Description : many genetic algorithm optimisation libraries, all in C Comments : they are GAucsd 1.4 (Nici Schraudolph, nici@cs.ucsd.edu), GENEsYS 1.0 (Thomas Baeck, baeck@home.informatik.uni-dortmund.de) Genesis 5.0 (John J. Grefenstette, gref@aic.nrl.navy.mil), Goldberg's SGA in C (with a nCube version) by Rob Smith, rob@galab2.mh.ua.edu Also see survey of GA software in file GAsoft.txt at cs.ucsd.edu Name : gemmw Description : a highly portable Level 3 BLAS implementation of Winograd's variant of Strassen's matrix multiplication algorithm Where : in misc on Netlib Author : Craig C. Douglas, douglas-craig@CS.YALE.EDU Version : 22 May 1992 Name : genocop Where : somewhere on unccsun.uncc.edu (152.15.10.88) Description : nonlinear maximisation with linear constraints. You write C code for the function to optimise and link into genocop. Allowable ranges for each parameter can be defined. Author plans to do nonlinear constraints "soon". Author : ??, zbyszek@unccvax.ucc.edu Name : gle Description : graphics layout editor script or menu driven program for composing a graphics page. Graphics primitives + PostScript file inclusion, plot generation from equations or tabular data + manipulation. Various output formats (X,ps,hpgl..) and utility programs (contour, surface, fits..) Systems : Unix, PC Where : wuarchive.wustl.edu:/graphics/graphics/packages/gle Version : 3.3b Language : ANSI C Author : Chris Pugmire, srghcxp@grv.grace.cri.nz Name : gmp-1.2.tar.z (146993 bytes) Description : GNU multiple precision library Where : in pub/gnu on prep.ai.mit.edu Version : 1.2, 9 Dec 1991 Author : ? Name : go.c.Z (7288 bytes) Where : in pub/C-numanal on usc.edu Description : Calculate gaussian quadrature rules. Translation of Netlib: go/gausq.f using f2c with some hand-cleaning. You need a log gamma function. Comments : numerical integration Name : hare (Hazard Regression) Where : file hare (a shar file) in S directory on statlib Author : Charles Kooperberg (clk@stat.washington.edu) Description : estimates the conditional hazard rate based on possibly censored data and covariates. Includes parametric and non-parametric, additive and non-additive proportional and non-proportional hazards model as special cases. Addition and deletion of basis functions make the fit highly adaptive. Version : statlib, last update April 21, 1993 Comments : actually the objective of this file is to give a end-user of the S statistical package this functionality. But the actual computation is done in C. Described in Univ. of California, Berkeley, Stat tech rep 389. Available from the author. Name : heft (Hazard Estimation with Flexible Tails) Where : file heft (a shar file) in S directory on statlib Author : Charles Kooperberg (clk@stat.washington.edu) Description : estimates the unconditional hazard rate using splines. Knot addition, deletion and two extra tail terms make the fit highly adaptive. Version : statlib, last update April 21, 1993 Comments : actually the objective of this file is to give a end-user of the S statistical package this functionality. But the actual computation is done in C. Described in Univ. of California, Berkeley, Stat tech rep 388. Available from the author. Name : ieeetest.zoo (65783 bytes) Where : in pub/C-numanal on usc.edu Author : Stephen L. Moshier, moshier@world.std.com Description : includes a improved version of paranoia, and code for testing the precision of the C I/O library on FP I/O. Version : 8 March 1993 Name : IND Tree Package Where : available in the US only, contact author Systems : Unix Description : Tree classification routines (supervised learning) including reimplementations of parts of CART, C4.5, and Bayesian and MDL methods with tree smoothing and "decision graphs". The package is made up of a collection of interconnected Unix tools. It comes with a lot of documentation. Author : Wray Buntine, wray@kronos.arc.nasa.gov Version : Version 2.1, January 1993 Name : in-spice Where : part of Spice. SPICE3E1 is free, SPICE3E2 is not-free less-buggy. Description : files src/lib/ni/ni{integ,comcof}.c are first- (backward euler) and second- (trapezoidal) order integrator and a >6 order GEAR. Name : kalman.zoo (27417 bytes) Where : in pub/C-numanal on usc.edu Author : Skip Carter (skip@taygeta.oc.nps.navy.mil) Description : A class library for Kalman filtering Language : C++ Version : v1.0, 6 October 1992 Name : Kaskade Description : Linear elliptic FEM solver written in C. Reads problem description from plain text file - can be (mis)used as triangular mesh generator. Graphical output under X11 and MacOS. Mailing list. Authors : 2-D -- Rainer Roitzsch (roitzsch@sc.zib-berlin.de) 3-D -- Bodo Erdmann (erdmann@sc.zib-berlin.de) Konrad-Zuse-Zentrum fuer Informationstechnik (ZIB) Systems : compiles on Unix and Macintosh Where : elib.zib-berlin.de:/pub/kaskade. (The slightly outdated user manual is in pub/kaskade/AltesZeug/tr-89-4.ps - in english) Name : LASSPTools Where : /pub/LASSPTools at helios.tn.cornell.edu Systems : Unix Description : Data manipulation and entry tools for Unix. Author : Various people in the Cornell physics department Comments : A diverse set of tools by various people at the Laboratory of Atomic and Solid State Physics at Cornell. Most useful for a set of X-windows applications and UNIX filters for interactive data manipulation. For instance, there's a mouse-operated track-ball that outputs a rotation matrix describing the orientation of the ball. Name : leda Description : library of efficient data types and algorithms Version : v3.0, 26 Nov 1992 Where : in pub/LEDA on ftp.cs.uni-sb.de (134.96.252.31) Author : Stefan Naeher (stefan@mpi-sb.mpg.de) Comments : includes code on computational geometry Name : lin_alg.shar.Z Where : in c++ on Netlib Description : BLAS 1 and 2 in C++ Name : logspline Where : file logspline (a shar file) in S directory on statlib Author : Charles Kooperberg (clk@stat.washington.edu) Description : logspline density estimation fully automatic nonparametric density estimation adaptive smoothing using splines Version : statlib, last update April 21, 1993 Comments : actually the objective of this file is to give a end-user of the S statistical package this functionality. But the actual computation is done in C. Described in Journal of Computational and Graphical Statistics, (1993), vol 1, 301-328. Name : lpsolve Where : volume02 of comp.sources.reviewed Description : very good mixed integer linear program solver Author : Michel Berkelaar (michel@es.ele.tue.nl) Comments : Its core is a sparse matrix dual simplex LP solver. MILP problems are solved with a branch-and-bound iteration over LP solutions. It uses a lex+yacc parser to read a human-friendly algebraic input format. The author has used the program to solve LP problems up to about 30000 variables and 50000 constraints (on a 22 MFLOPS HP9000/750). Name : machar Where : in misc on Netlib Description : find out properties of floating point hardware Author : William J. Cody, cody@antares.mcs.anl.gov, and Tim Hopkins Version : October 1985 Name : madpack Where : Netlib, in pdes/madpack Description : MADPACK is a a compact package for solving systems of linear equations using multigrid or aggregation disaggregation methods. Imbedded in the algorithms are implementations for sparse Gaussian elimination and symmetric Gauss-Seidel (unaccelerated or accelerated by conjugate gradients or Orthomin(1)). This package is particularly useful for solving problems which arise from discretizing partial differential equations, regardless of whether finite differences, finite elements, or finite volumes are used. Author : Craig Douglas, douglas-craig@cs.yale.edu Comments : see directory mgnet on casper.cs.yale.edu too Name : marsaglia-random Where : bugs.nosc.mil:pub/ada/random/* Systems : highly portable Language : C, Pascal, Ada Authors : G Marsaglia, M G Harmon & T P Baker, V Broman. Description : highly machine-independent uniform RNG, requires 24-bit fixed point or floating point arithmetic. 953118087 different seed pairs give pseudo-random sequences with period about 2**144. passes stringent randomness tests. Comments : correct operation with 24-bit floats seems to require a guard bit. failing that, try fixed point arithmetic. Name : matcalc Author : M. Gerberg, E.J. Moore, University of New South Wales, Australia Version : 2.1 Systems : Unix, VMS and DOS installation scripts exist Description : Matlab-like numerical solver. Good support of singular problems. Well structured - easy extension with own C routines which can use the matcalc library. Where : netlib/matcalc on draci.cs.uow.edu.au Name : matrices.asc Where : inside ddj9106.zip in published/dr-dobbs on ftp.uu.net Description : efficiently raise matrices to an integer power Author : Victor Duvanenko Version : June 1991 Name : matrix-multiply (18229 bytes) Where : in pub/C-numanal on usc.edu Description : collection of net postings and email about fast matrix multiply Includes C source. Version : 1 May 1993 Name : matrix.tar.Z Where : in ftp-raimund/pub/src/Math on nestroy.wu-wien.ac.at (137.208.3.4) Author : Paul Schmidt, TI Description : Small matrix library, including SOR, WLS Name : matrix04.zip Where : in mirrors/msdos/c on wuarchive.wustl.edu Description : Small matrix toolbox Name : Matrix.tar.Z Where : in pub ftp.cs.ucla.edu Description : The C++ Matrix class, including a matrix implementation of the backward error propagation (backprop) algorithm for training multi-layer, feed-forward artificial neural networks Version : 15 April 1993 Author : E. Robert (Bob) Tisdale, edwin@cs.ucla.edu Name : mclaughl.lst Where : inside ddj8909.arc in published/dr-dobbs on ftp.uu.net Description : source code (500 lines) associated with article on Simulated Annealing by Michael P. McLaughlin. Version : September 1989 Name : meschach Where : in c/meschach on netlib Systems : Unix, PC Description : a library for matrix computation; matrix, vector, permutation, sparse matrix data structures; basic linear algebra; min/max, sorting & componentwise operations; dense LU, Cholesky, QR, LDL factorisations; dense eigenvalues/vectors, singular value decomposition; sparse matrix factorisations (LU, Cholesky, BKP); iterative methods; error handling; input/output Author : David E. Stewart, des@thrain.anu.edu.au Version : 1.1, April 1993 Name : meschach Where : in c/meschach on netlib Systems : Unix, PC Description : a library for matrix computation; more functionality than Linpack; nonstandard matrices Author : David E. Stewart, des@thrain.anu.edu.au Version : 1.1, 8 April 1993 Name : minit Where : volume 7 of comp.sources.misc Systems : Unix Description : linear programming by dual simplex method Author : Badri Lokanathan Version : 1.0, July 1989 Comments : don't miss minit.p1 Name : morrow.arc and gamaze.asc Where : inside ddj9104.zip in published/dr-dobbs on ftp.uu.net Description : genetic algorithm for optimisation, associated with article on the subject by Mike Morrow. Version : April 1991 Name : Mrandom (version 1) Where : Comp.sources.unix, Volume 25, Issue 23, December 1991 Systems : 4.3bsd Unix Language : C Author : Clark Thomborson Version : 1, 12/91 Description : bug fix for 4.3bsd Unix random() Comments : random number generator, 4.3bsd Unix library routine Name : Mrandom (version 2.3) Where : anon ftp from theory.lcs.mit.edu, directory pub/cthombor, have submitted to comp.sources.unix Systems : 4.3bsd Unix Language : C Author : Clark Thomborson Version : 2.3, 8/92 Description : bug fix for 4.3bsd Unix random(), interface to other RNGs Comments : random number generator, 4.3bsd Unix library routine Name : newmat Where : volume34, issue 107 of comp.sources.misc Language : C++ Systems : Unix (g++ 2.3.3 ok), MS-DOS (Borland C++) Description : a very thorough matrix class Author : Robert Davies (robertd@kauri.vuw.ac.nz) Version : v7, 11 Jan 1993 Name : nlmdl Where : in pub/arg/nlmdl at ccvr1.cc.ncsu.edu (128.109.212.20) Language : C++ Systems : Unix, MS-DOS (Turbo C++) Description : a library for estimation of nonlinear models Author : A. Ronald Gallant, arg@ccvr1.cc.ncsu.edu Comments : nonlinear maximisation, estimation, includes a real matrix class Version : January 1991 Name : nonlinear Where : in pub on lyapunov.ucsd.edu (132.239.86.10) Language : various Description : archive of programs in nonlinear dynamics, signal processing Author : various, contact person is mbk@lyapunov.ucsd.edu (Matt Kennel) Name : nrutil Where : pub/incoming/nrutil.shar.Z on hilbert.math.ksu.edu or usenet/alt.sources/articles/6772.Z on wuarchive.wustl.edu Description : Appendix B of Numerical Recipes 2nd ed, a group of vector/matrix initialisation function which NR has standardised on. Author : Numerical Recipes is by William Press et al, posted on alt.sources by James C. Hu (jxh@math.ksu.edu) Version : 8 Dec 1992 Comments : Note this is public domain, while none of the other NR source is. Name : nurbs.tar.Z Where : in /pub/misc/unix/nurbs/nurbs.tar.Z on unix.hensa.ac.uk Author : W. T. Hewitt et.al. Description : Data structures and procedures for creation and manipulation of B-Spline curves and surfaces. Name : Octave Where : ftp.che.utexas.edu:/pub/octave/octave-M.N.tar.Z Systems : Compiles and runs on SPARC, RS/6000, DEC/Ultrix, i386/Linux Language : C/C++/Fortran Author : John W. Eaton Version : In alpha test. Currently 0.70. Description : Matlab-like interactive system for numerical computations Comments : Includes C++ classes for matrix manipulation, numerical integration, and the solution of systems of nonlinear equations, ODEs and DAEs. Distributed under the GPL. Name : ols Where : ftp.uu.net in usenet/comp.sources.reviewed/volume01/ols Systems : almost anything, but it's most useful under Unix Description : A small linear regression package dressed as a Unix tool Author : Ajay Shah, ajayshah@rcf.usc.edu Version : v1.00, late 1991 Name : p4.tar.Z Where : pub/p4 on info.mcs.anl.gov Description : a library for writing parallel programs for shared-memory or message-passing. It will work on a network of workstations or on parallel hardware. Author : lusk@mcs.anl.gov Version : July 28, 1992 Name : paranoia Where : research.att.com in dist; check netlib/paranoia too Systems : Unix Description : exercise the edges of your floating point implementation Comments : also see `ieeetest' in this file. Name : Pari/GP Where : math.ucla.edu, ftp.infia.fr, other sites Description : mainly oriented towards number theory, can and is used for numerical computation. Contains arbitrary precision code for all elementary transcendental functions, many higher ones, numerical integration and summation, etc. Systems : all 32 bit OS. Name : pca Where : in multi on Statlib Description : principal component analysis Name : perlman Where : in misc on Netlib Description : normal, chi-squared and F distributions Author : Gary Perlman Name : pierreQP.tar.Z (17680 bytes) Where : in pub/C-numanal on usc.edu Author : Pierre Asselin, pa@verano.sba.ca.us Description : Extremely good package for calculation of gaussian quadrature rules Comments : numerical integration Name : pinv Where : in dhlib on elib.ZIB-Berlin.de Description : cholesky decomp. for possibly rank-deficient PD matrices, householder Name : polyfit.tar.Z Description : fit polynomials to data Where : in ftp-raimund/pub/src/Math on nestroy.wu-wien.ac.at (137.208.3.4) Author : Ted Stefanik, ted@adelie.Adelie.COM Version : 8 August 1989 Name : praxis Where : in math on Simtel Description : derivative-free maximisation Version : July 1987 Name : presto Where : pub/presto1.0.tar.Z on cs.washington.edu Language : C++ Systems : Unix-like OS on (moderate) multiprocessor machines Description : C++ routines for fine-grained parallel programming (lightweight threads) on multiprocessors. Tuned for the Sequent machines, but highly adaptable and customizable. Author : Brian N. Bershad, Edward D. Lazowska, Henry M. Levy Version : Version 1.0 is an optimized version by John E. Faust. (All above are from U. Washington, Seattle) Comments : Presto was the subject of a number of research papers in multiprocessor OS. Version 1.0 looks usable (ie not experimental anymore). Name : psuedo.asc Where : inside ddj9105.zip in published/dr-dobbs on ftp.uu.net Description : implements R250 random number generator, from S. Kirkpatrick and E. Stoll, Journal of Computational Physics, 40, p. 517 (1981). Author : W. L. Maier Name : random Where : bsd-sources/src/lib/libc/gen on gatekeeper.dec.com Description : the BSD C library random number generator Name : random-c Where : in c on Simtel Description : portable, good random number generator Name : range.tar.Z (191867 bytes) Where : in pub/range on math.tamu.edu Description : C++ class for interval arithmetic. Associated with article in TOMS, Dec 1992 title "Precise computation using range arithmetic, via C++" Author : Oliver Aberth and Mark J. Schaefer Version : Dec 1992 (?) Name : ranpm Where : in prog/libraries on nuri.inria.fr (128.93.1.26) also in volume5 of comp.sources.misc in "random" Description : the Park-Miller "minimal standard" random-number generator Author : Ajay Shah, ajayshah@rcf.usc.edu Version : February 1992 Comments : there are several other independent implementations, all are quite alike Name : ranlib-c Where : pub/unix on odin.mda.uth.tmc.edu or in general on Statlib Description : large library for random variate generation from many univariate and multivariate distributions Author : Barry Brown, bwb@odin.mda.uth.tmc.edu Version : 16 Jan 1992 Name : rktec.Z Where : in misc on netlib Description : computes the truncation error coefficients, tecs, of a Runge-Kutta formula, or a pair of formulas, specified in an input file. Author : Mike Hosea (mhosea@sun.cis.smu.edu) Version : Sep 26 14:04:23 1992 Name : rlab Where : /pub/alpha/RLaB/rlab-0.50.tar.Z on evans.ee.adfa.oz.au Systems : Compiles and runs on Sun4, RS/6000, DEC/Ultrix, SysV/R4 i386, Linux, HP-UX, SGI Language : C + Fortran Author : Ian Searle (ians@eskimo.com) Version : In alpha test, currently v0.75, 25 April 1993 Description : "Matlab-like" interactive programming environment for numerical computations. Comments : Includes online help and LaTeX manual. Name : robot Description : a scientific graph plotting and data analysis package. Works for Xview v3, and knows to generates postscript. Where : in pub/astrod on ftp.astro.psu.edu (128.118.147.28) Version : v0.46, 7 Feb 1993 Author : Robin Corbet (corbet@astro.psu.edu) Name : rpart Where : in general on Statlib Description : Routines for recursive partitioning Author : Terry Therneau, therneau@mayo.edu Version : Feb 1991 Name : sa.zoo (40682 bytes) Where : in pub/C-numanal on usc.edu Description : library for simulated annealing Language : versions for C, C++ and Ada exist. Author : Skip Carter (skip@taygeta.oc.nps.navy.mil) Version : Tue Nov 10 12:00:42 PST 1992 Name : sabre.tar.Z (813499 bytes) Where : in pub on athena.erc.msstate.edu Description : (not clear) a linear/nonlinear simulation system Comments : the `portable math library' directory is definitely very useful (5k lines). I noticed some interesting interpolation, integration, banded LU decomposition, nonlinear solver, etc. Author : ? Version : ? Name : sge.shar Where : in c on Netlib Description : Linpack functions geco, gefa, gesl and a little of BLAS; nonstandard matrices Author : Mark K. Seager, seager@lll-crg.llnl.gov Version : April 88 Name : SIMATH Author : SIMATH-Gruppe, Saarbruecken, Germany Systems : Unix Where : via anonymous ftp: ftp.math.uni-sb.de (134.96.32.23), ftp.math.orst.edu (128.193.160) in pub/simath Version : 3.6.1 Description : SIMATH contains a lot of C-functions over algebraic structures as arbitrary long integers, rational numbers, polynomials, Galois fields, matrices, elliptic curves, algebraic number fields, modular integers, etc. There is also an interactive calculator (simath) which uses the C-libraries of SIMATH. Comments : version 3.6.1 contains a handbook written in English. The SIMATH package also includes a user interface, which makes it possible to use the on-line documentation of the functions and the keyword index. Name : simpack Author : Paul A. Fishwick, fishwick@cis.ufl.edu Description : tools for writing simulations with a EECS bias Where : pub/simdigest/tools on bikini.cis.ufl.edu, also see tr92-022.ps.Z from cis/tech-reports/tr92 Language : C and C++ versions exist Version : v2.0, June 1992 Name : smirnov.shar.Z (3599 bytes) Author : David Rapoport (actize@cea.berkeley.edu) Version : 22 February 1993 Description : Kolmogorov Smirnov two-sample statistic Where : in pub/C-numanal on usc.edu Name : smooth.tar.Z Description : Unix tool for smoothing Where : in ftp-raimund/pub/src/Math on nestroy.wu-wien.ac.at (137.208.3.4) Author : Bill Davidsen (davisen@crd.ge.com) Version : v1.9, 15 Aug 1989 Name : SPARSE Where : in sparse on Netlib Description : library for LU factorisation for large sparse matrices Author : Ken Kundert, Alberto Sangiovanni-Vincentelli, sparse@ic.berkeley.edu Name : spline29.zip Where : in mirrors/msdos/c on wuarchive.wustl.edu Description : Interpolation using splines under tension, dressed up as a Unix tool Author : James. R. Van Zandt Version : v2.9, 21 Nov 1992 Name : submit1 Where : in jcgs on Statlib Description : damped convex minorant algorithm Author : David Eberly, eberly@cs.unc.edu Version : May 1992 Name : svd.c.Z (8704 bytes) Where : in pub/C-numanal on usc.edu Description : SVD based on pascal from J. C. Nash book Author : Bryant Marks (bryant@sioux.stanford.edu) Brian Collett (bcollett@hamilton.edu) Version : 14 April 1993 Name : taranto-1.0.shar.Z Where : in prog/libraries on nuri.inria.fr (128.93.1.26) Description : portable, accurate FP to decimal conversion. Name : totinfo Where : in volume7 of comp.sources.misc Description : info statistic and chi-square for 2-D contingency tables Date : August 1989 Name : tsp Where : pub/dank/tsp.zip at punisher.caltech.edu Systems : Any C environment Description : Simple heuristic Travelling Salesman Problem solver Author : Dan Kegel - from "Discrete Optimization Algorithms," Maciej Syslo Version : 1.1 Name : using-lapack.Z (8478 bytes) Where : pub/C-numanal on usc.edu Description : Notes on using Lapack through f2c. Author : S. Sullivan (sullivan@mathcom.com) Version : 14 April 1993 Name : vis5d Where : vis5d.ssec.wisc.edu (128.104.231.66) Systems : SGI, Stardent, IBM PC Language : C, Fortran Authors : Brian Paul (bpaul@vms.macc.wisc.edu) and Bill Hibbard Version : 3.0 (soon to be 3.1) Description : visualizing/animating data made by numerical weather models and similar sources Comments : vis5d interactively provides 3-D isosurfaces, vector-field slices, horizontal and vertical contour and colored slices, and ribbon "particle" trajectories (integral curves) Name : vspline Where : in gcv on Netlib Description : non-parametric estimate of a smooth vector-valued function from noisy data Author : Jeff Fessler Comments : splines Name : weisfeld-simplex.shar (7457 bytes) Where : pub/C-numanal on usc.edu Description : small implementation of simplex method for linear programming. Author : Matt Weisfeld (not on Internet) Version : Feb 1993 Comments : associated with article in Feb 1993 CUJ. For production use (where you want a black-box solver), the `lpsolve' package (above) is better. If you want to open up a simplex implementation and modify it, then this is quite good, using the article as documentation. Name : xgobi Where : in general on Statlib Systems : Unix, needs X Windows Description : a data analysis package emphasising graphical data exploration Author : Debby Swayne, dfs@bellcore.com Dianne Cook, dcook@fisher.rutgers.edu Andreas Buja, andreas@bellcore.com Date : 23 March 1993 Comments : EDA Name : XLispStat Where : pub/xlispstat on umnstat.stat.umn.edu Systems : Unix, Macintosh, MSW Description : a statistical package Author : Luke Tierney, luke%umnstat@umn-cs.cs.umn.edu Version : Comments : object-oriented, EDA, graphics, lisp Name : xtrap.c.Z (4463 bytes) Author : Bryan M. Gorman, gorman@scri.fsu.edu Version : 28 July 1992 Description : extrapolation program. Supports 6 algorithms: VBS approximants, Aitken delta-squared, Wynn epsilon algo, Wynn rho algo, Brezenski theta algo, Levin u-transform. Is dressed up as a Unix tool. Where : pub/C-numanal on usc.edu Name : xvgr/xmgr (open look or motif versions) Where : /CCALMR/pub/acegr on amb4.ccalmr.ogi.edu Systems : Unix, with either open look or motif Description : graphics for EDA Author : Paul J. Turner, pturner@amb4.ccalmr.ogi.edu Version : 2.10, 2 May 1993 f2c --- In case you had not already noticed it: a public domain, industrial strength, fortran-to-C translator named f2c exists. It has one great strength and one great weakness: "It is a true compiler". Thus the code generated always "works", at the price of frequently looking like fortran. A lot of useful fortran libraries can readily be turned into working C using f2c, and the resulting C can often be made almost human after some hand-editing. The weakest link of f2c is code which involves matrices. A pointer to f2c is at EOF. f2c is also inside Netlib, so you are probably better off figuring out how to use Netlib. Other pointers -------------- There is a lot of interesting C source in these fields which I know nothing about: - signal processing - pattern recognition, neural networks The comp.dsp FAQ has some pointers to source code. Please send me complete entries to include in the above index. A lot of 3rd party source code which hooks into the S statistical package uses computational engines written in C. With a little work you can extract useful source from this. Look in the S directory on Statlib for more pointers. If you find something which is remarkably useful and easy to extract, please tell me about it. The same phenomenon operates to some extent for the XLispStat package. Look around on the umnstat.stat.umn.edu site. Interesting sites ----------------- If you don't have ftp access, send email to ftpmail@decwrl.dec.com saying "help". You will get instructions on how to do ftp via email. source-code newsgroups: ftp.uu.net (e.g. usenet/comp.sources.reviewed archives the comp.sources.reviewed newsgroup). f2c: dist/f2c on research.att.com pub/gnu on prep.ai.mit.edu Netlib: research.att.com email, ftp ornl.gov email, xnetlib nac.no email, xnetlib for Europe (e.g. send email to netlib@ornl.gov to access by email) unix.hensa.ac.uk is a mail server useful for Europe. ci.cs.uow.edu.au (130.130.64.3) in Australia Statlib: lib.stat.cmu.edu (as statlib) dmssyd.syd.dms.csiro.au (130.155.96.1) others: qiclab.scn.rain.com has a small collection in pub/math, including fft stuff not listed above. elib.ZIB-Berlin.de is quite interesting too. Books ----- Name : C Mathematical Function Handbook Author : Louis Baker Language : C and C++ Version : 757 pages, soft, including floppy, McGraw Hill, 1992, $50 Description : Code implementing the algorithms and formulas in Abramovitz and Stegun, with several chapters added. It will save you a lot of time as compared with writing code out of A&S. 95% of the pages in the book are merely the source code, without even doing pretty printing. It improves on A&S in (broadly) mathematical physics. The code does not show very good C competence. The code and the book betray their development on a computer running MS-DOS. Sometimes, more-recent algorithms which improve on A&S are ignored. Name : Applied Numerical Methods in C Author : Shoichiro Nakamura Version : Prentice Hall, hardback, $48; disk+manual costs $35. 604 pages. Name : Numerical Recipes in C Author : William H. Press, Saul A. Teukolsky, William T. Vetterling and Brian P. Plannery Language : C Version : 2nd edition, 933 pages, Cambridge University Press, 1992, $50 hard, $20 for the floppy. Description : A very thorough first book on numerical computation, with accompanying source code. The methods are often not industrial-strength, and a expert on (say) linear algebra will be disappointed at the treatment of linear algebra. But to a relative novice it's easy to start using, and likely to work pretty well pretty often. Within the constraint of being accessible to a novice to numerical computation, the methods here are uptodate. The text is refreshing and a real pleasure to read. Thus, for example, even if you plan to use Linpack source code to do a SVD, it's well worth reading the text here. The authors are often opinionated in situations where the relative merits of alternative methods are not known "for sure", this gives the reader the benefit of their wisdom (in ways that experts will sometimes consider superficial). I think such editorialising is very useful to the novice, even though it is bound to be misleading at times. The typesetting is superb: it is done using TeX. The second edition has a two-tier treatment where advanced topics are in smaller type. All the source code is printed in the book, and very beautifully at that -- i.e., it's not a mere waste of paper. The floppy has examples of usage of every function; these examples are not in the book. The source code is widely used, but not as much as Linpack. Hence we often hear complaints on the net about subtle errors in their FFT and SVD functions. Presumably there are other errors too. The book exists in a fortran version too, and the development of the C version is not done independently of the fortran. Hence their C is a bit fortran-like. Their C uses base-1 arrays. This is inconsistent with C idiom and incorrect according to the ANSI C standard. It can be fixed by wasting a little memory and fixing nrutil. Perhaps the worst drawback of the source code is that it is copyrighted (unlike (say) Linpack). Thus while you can use it in your programs (after buying the floppy), you are not allowed to send a program containing this source code to anyone else. Thus when you choose to use Numerical Recipes source code for your work, you implicitly give up the right to {give your program to a colleague, or post it on the net, or sell it} without dealing with their lawyers. The file usc.edu:pub/C-numanal/nr.experiences (16158 bytes) will tell why a lot of "real numerical analysts" dislike Numerical Recipes. Name : Computing for Scientists and Engineers: A workbook for analysis, numerics and applications Author : William J. Thompson Language : C Version : 464 pages, $55, John Wiley and Sons Credits ------- The following people helped me put this index together: Bardo Muller bardo@gonzales.ief-paris-sud.fr David E. Stewart des@thrain.anu.edu.au Skip Carter skip@taygeta.oc.nps.navy.mil John Gregory jwg@db.cray.com John Eaton jwe@che.utexas.edu P. G. Hamer P.G.Hamer@bnr.co.uk Alan Magnuson awm@osc.edu David Rapoport actize@garnet.berkeley.edu Peter Fraenkel pnf@pwcm.com Martin-D. Lacasse isaac@physics.mcgill.ca Matthew Koebbe phaedrus@alioth.cc.nps.navy.mil Nicolas Ratier ratier@laas.laas.fr Henri Cohen cohen@merak.greco-prog.fr Bill Hutchison bhutchi@godiva.ssw.com Ronald F. Guilmette segfault!rfg@netcom.com Jay Han han@corto.inria.fr Van Snyder vsnyder@math.Jpl.Nasa.Gov Alan Cabrera adc@tardis.cl.msu.edu Vincent Broman broman@peanuts.nosc.mil Piercarlo Grandi pcg@aberystwyth.ac.uk Of course, we owe infinite gratitude to the authors themselves, for making their work available in the public domain.