From: ajayshah@almaak.usc.edu (Ajay Shah)
Newsgroups: comp.lang.c
Subject: Re: Looking for public domain math software
Date: 23 Nov 1992 13:21:38 -0800
Organization: University of Southern California, Los Angeles, CA
NNTP-Posting-Host: almaak.usc.edu


Welcome to $Revision: 1.5 $ of the index of free source code for
numerical computation written in either of C or C++.
This file is also stored on netlib, it's c/free-c.

Table of Contents:

* Explanations of fields
* The index
* f2c
* Other pointers
* Interesting sites
* Credits

The index is biased towards fields I work in.
Please send me suggestions, corrections and improvements.

        -Ajay Shah, ajayshah@usc.edu
        $Date: 1992/11/05 00:58:47 $


* 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; please 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: BSDmath
Where: e.g. agate.berkeley.edu
Description: BSD implementation of math.h

Name: BigNum
Where: mail to librarian@decprl.dec.com or serpette@inria.inria.inria.fr
Systems: Unix
Description: Arbitrary Precision Integer Arithmetic
Author: Serpette, Vuillemin, Jean-Claude Herve 
Version: ??
Comments:  Excellent. very fast. possible problems with unalloc call. 

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: 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: ajay
Where: in general on Statlib
Description: cholesky decomposition and drawing from MVN
Author: Ajay Shah, ajayshah@usc.edu
Version: 23 Sept 1991

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: 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: in pub/C-numanal on usc.edu, should soon appear on Netlib too
Version: 2.2, June 1992

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 OW3.
Version: 21 Oct 1992
Author: Dave Watson, watson@maths.uwa.edu.au

Name: dstool
Where: in ?? on macomb.tn.cornell.edu
Description: dynamical systems simulation package (xview3 and ow3)
Author: ??
Version: 1.1

Name: dtoa.c
Where: in fp on Netlib
Description: correctly rounded decimal <--> binary conversion

Name: fft.shar
Where: in c++ on Netlib
Description: radix 2 FFT

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: fudgit
Author: Martin-D. Lacasse, isaac@physics.mcgill.ca
Where: from 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.

Name: gaut
Where: in general on Statlib
Description: upper-tail probabilities on normal and t densities
Author: Ajay Shah, ajayshah@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

Name: gemmw
Description: a highly portable Level 3 BLAS implementation of Winograd's variant 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: in ?? 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: go.c.Z
Where: in 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: ieeetest.zoo
Where: in 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 floating point I/O.
Version: v1.0, October 1992

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
Where: in 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: lin_alg.shar
Where: in c++ on Netlib
Description: BLAS 1 and 2 in C++
Comments: doesn't seem to exist -- can you tell me more?

Name: lpsolve
Where: volume02 of comp.sources.reviewed
Description: very good mixed integer linear program solver
Author: Michel Berkelaar, ??
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/c
DescriptioN: multigrid/aggregation/diaggregation package for PDEs

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
Author: E. Robert (Bob) Tisdale, edwin@cs.ucla.edu

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.0, Feb 1992

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: 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: volume26 of comp.sources.misc
Language: C++
Systems: Unix, MS-DOS (Borland C++)
Description: a very thorough matrix class
Author: Robert Davies (robertd@kauri.vuw.ac.nz)
Comments: Version 4 has problems with gnu g++, request v5 from author
Version: v4

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: 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: 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@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
Systems: Unix
Description: exercise the edges of your floating point implementation

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
Where: in 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: ??
Description: C++ routines for (simulating?) parallel programming

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: ranpm
Where: in prog/libraries on nuri.inria.fr (128.93.1.26)
Where: also in volume5 of comp.sources.misc in "random"
Description: the Park-Miller "minimal standard" random-number generator
Author: Ajay Shah, ajayshah@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: robot
Description: a scientific graph plotting and data analysis package
Where: in pub/astrod on astrod.astro.psu.edu (128.118.147.28)
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
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: 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: 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: 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: spline
Where: in misc on Netlib
Description: splines under tension, dressed as a Unix tool
Author: J. R. Van Zandt and A. K. Cline

Name: submit1
Where: in jcgs on Statlib
Description: damped convex minorant algorithm
Author: David Eberly, eberly@cs.unc.edu
Version: May 1992

Name: totinfo
Where: in volume7 of comp.sources.misc
Description: info statistic and chi-square for 2-D contingency tables
Date: August 1989

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: xgobi
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
Date: 25 March 1992
Comments: EDA

Name: xtrap.c.Z
Author: Bryan M. Gorman, gorman@scri.fsu.edu
Version: 28 July 1992
Descriptions: 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
Versions: 2.09

* 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
f2c:
        research.att.com
        prep.ai.mit.edu
Netlib:
        netlib@ornl.gov is a mail server useful for the US
        research.att.com
        ci.cs.uow.edu.au (130.130.64.3)
        lanl.gov (ornl.gov?) in pub/clamsx/MATH.SOFTWARE
        netlib@unix.hensa.ac.uk is a mail server useful for UK/Europe.
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


* 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

Of course, we owe infinite gratitude to the authors themselves, for
making their work available in the public domain.
-- 
Ajay Shah, (213)749-8133, ajayshah@usc.edu
Newsgroups: comp.lang.c