From: ajayshah@usc.edu
Newsgroups: comp.lang.c,comp.lang.c++,sci.math.num-analysis
Subject: Index of free C or C++ source code for numerical computation
Date: 11 Sep 1992 11:33:29 -0700
Organization: University of Southern California, Los Angeles, CA, US
Distribution: world
Reply-To: ajayshah@usc.edu
NNTP-Posting-Host: almaak.usc.edu
Keywords: source code, numerical statistical scientific computation


Welcome to $Revision: 1.1 $ of the index of free source code for
numerical computation written in either of C or C++.  The most
recent version of this file may be found in netlib/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, Ajay_Shah@rand.org
        $Date: 1992/07/28 13:08:31 $


* 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     If it does not run on "almost any computer on earth", a
            list of systems is shown.
Language    If it's not ANSI C, then the language is shown.  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: 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
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
Description: extremely good library of > 100 special functions and probability densities
Where: in pub/C-numanal on usc.edu, should soon appear on Netlib too
Version: 2.0, April 1987

Name: dcg.shar
Where: in c on Netlib
Description: preconditioned conjugate gradient method
Author: Mark K. Seager, seager@lll-crg.llnl.gov

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: 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: 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: 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: lin_alg.shar
Where: in c++ on Netlib
Description: BLAS 1 and 2 in C++

Name: lpsolver
Where: volume02 of comp.sources.reviewed (Real Soon Now)
Description: very good mixed integer linear problem solver
Author:
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: 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++
Where: some site in UCLA
Description: a recently released C++ matrix class

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: newmat
Where: volume26 of comp.sources.misc
Language: C++
Systems: Unix, MS-DOS (Turbo C++)
Description: a very thorough matrix class
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: 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
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: rpart
Where: in general on Statlib
Description: Routines for recursive partitioning
Author: Terry Therneau, therneau@mayo.edu
Version: Feb 1991

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

Name: xvgr/xmgr (open look or motif versions)
Where: pub/grtool on ese3.ese.ogi.edu
Systems: Unix, with either open look or motif
Description: graphics for EDA
Author: Paul J. Turner, pturner@ese.ese.ogi.edu
Versions: 2.0?


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


* Other pointers:

There is a lot of interesting C source in these fields which I know nothing
about:
        - signal processing
        - pattern recognition, neural networks
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:

source-code newsgroups:
        ftp.uu.net
f2c:
        research.att.com
        prep.ai.mit.edu
Netlib:
        research.att.com
        ci.cs.uow.edu.au (130.130.64.3)
        lanl.gov (ornl.gov?) in pub/clamsx/MATH.SOFTWARE
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
-- 
Ajay Shah, (213)749-8133, ajayshah@usc.edu