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

Date : 23 March 1993

Comments : EDA

Name : XLispStat

Where : pub/xlispstat on umnstat.stat.umn.edu

Systems : Unix, Macintosh, MSW

Description : a statistical package

Version :

Comments : object-oriented, EDA, graphics, lisp

Name : xtrap.c.Z (4463 bytes)

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-num{*filter*}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

Version : 2.10, 2 May 1993

3.01 (Motif only), 17 August 1994.

Comments : Linux and SunOS 4.1.3 binaries are in bin directory

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

-----------------

saying "help". You will get instructions on how to do ftp via email.

Everything in this index (except for what is on {net,stat}lib) is

mirrored in pub/sci/math/numcomp-free-c on nic.funet.fi

Note: this site is in finland. If you are in the US, please try

to find a site closer to you.

source-code newsgroups:

ftp.uu.net (e.g. usenet/comp.sources.reviewed archives the

comp.sources.reviewed newsgroup).

f2c:

netlib/f2c on netlib.att.com

pub/gnu on prep.ai.mit.edu

Netlib:

netlib.att.com email, ftp

ornl.gov email, xnetlib

nac.no email, xnetlib for Europe

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

Name : Scientific and Engineering C++:

An introduction with advanced techniques and examples

Author : John J. Barton and Lee R. Nackman

Version : Hardback, 665 pages, 1994, Addison Wesley Publishing Company

ISBN 0-201-53393-6

A plethora of books on C++ exists; the above promises to

be a book on numerical computation in C++. The authors

are both from T. J. Watson Research Center and they do

numerical computation for a living.

Before we get to what the book offers, we should clarify

what it is not : It is not a Numerical Recipes. It does

not discuss the mathematical ideas underlying numerical

algorithms, and it presents no library which you can

start off using from day 1.

Instead the authors are attacking a different problem,

that of applying OOP in its C++ incarnation to do

numerical computation. The typical reader is expected to

be someone who is currently getting his work done in C

or Fortran and would like to migrate to C++. The authors

literally start from scratch in this enterprise; they

have two versions of chapter 1, one aimed at migrants

from C and another aimed at migrants from Fortran.

Does the book succeed in these objectives? For the major

part, my answer would be Yes. I will address two issues

here:

o Teaching C++ and OOP

This is done reasonably well. However, I expect anyone

who actually plunges into C++ seriously will want the

primary two books on C++ too (i.e. Stroustrup and

Lippman). They do a good job of the overall question of

applying OOP to scientific computation, but I have a

guess that you would come up with a lot of this

yourself, and that your sense of taste may differ from

theirs to some extent.

o Practical advice aimed at numerical computing applications

I felt the book does really well on this score. They

take up a series of problems and give us the benefit of

their good taste in coming up with designs. The last

chapter does maximum likelihood using automatic

differentiation to obtain derivatives -- this is a

lovely theme that has not been much explored in the

literature.

One of the big questions on the minds of anyone

thinking about using C or C++ for numerical computation

is the existence of libraries like linpack; they are

incredibly ugly on the score of software engineering,

but they are incredibly well done on debugging and

efficiency. Between f2c and C++, it appears quite

possible to hide these ugly (but working) beasts under

nice modern interfaces.

This issue is really important at a practical level,

and so far I've only seen net.wisdom on the

subject. The authors deal with it in detail. It would

have been awfully nice if they had just given us a full

C++ view to lapack :-) but their focus is on ideas, not

on giving blackboxes of code.

All the source code of the book is on the net.

I'm personally at the stage of having browsed in C++

for a while now but not having taken the plunge of

fully leaving C yet. This book feels very useful to me

at this point in my transition.

Credits

-------

The following people helped me put this index together:

Of course, we owe infinite gratitude to the authors themselves, for

making their work available in the public domain.

--

------------------------------------------------------------------------------

Ajay Shah Work: 91-22-4300531

Centre for Monitoring Indian Economy, Bombay Fax: 91-22-4370558