Part 3 of 3: Free C,C++ for numerical computation 
Author Message
 Part 3 of 3: Free C,C++ for numerical computation

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

Name        : xvgr/xmgr (open look or motif versions)
Where       : /CCALMR/pub/acegr on
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


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

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

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
        - 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 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
Note: this site is in finland.  If you are in the US, please try
to find a site closer to you.

source-code newsgroups:  (e.g. usenet/comp.sources.reviewed archives the
        comp.sources.reviewed newsgroup).
        netlib/f2c on
        pub/gnu on
Netlib:       email, ftp             email, xnetlib               email, xnetlib for Europe is a mail server useful for Europe. ( in Australia
Statlib: (as statlib) (
others: has a small collection in pub/math, including
        fft stuff not listed above. is quite interesting


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

              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

              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

              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

              The file (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

               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

               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.


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

Mon, 19 May 1997 14:00:41 GMT  
 [ 1 post ] 

 Relevant Pages 

1. Part 2 of 3: Free C,C++ for numerical computation

2. Part 1 of 3: Free C,C++ for numerical computation

3. Part 2 of 3: Free C,C++ for numerical computation

4. Part 2 of 3: Free C,C++ for numerical computation

5. Part 3 of 3: Free C,C++ for numerical computation

6. Part 1 of 3: Free C,C++ for numerical computation

7. Part 3 of 3: Free C,C++ for numerical computation

8. Part 2 of 3: Free C,C++ for numerical computation

9. Part 1 of 3: Free C,C++ for numerical computation

10. Part 3 of 3: Free C,C++ for numerical computation

11. Part 2 of 3: Free C,C++ for numerical computation

12. Part 1 of 3: Free C,C++ for numerical computation


Powered by phpBB® Forum Software