
                  MODULA-2 NUMERICAL ANALYSIS SOFTWARE

Current version: Numana04
Last updated: 21 April 2016.

This package is freeware.  Do with it what you wish, but don't expect
it to be a fully professional package.  Its main purpose is to give
you some ideas about how to deal with variable-sized data structures.

Like all free software, this comes "as is" with no warranties as to
its fitness for a particular purpose.  If you use it, you must agree
to accept full responsibility for any consequences of its use.
If you don't agree with this condition, don't use the software.

You have permission to extend and modify the software, and indeed
this is encouraged.  (If enough volunteers do this, we can build up
to a more complete numerical analysis library.)

If you are going to use this material for something like a homework
assignment, then I (and presumably also your instructor) expect a
citation to the original source material.  Just like a paper in a
research journal, this software collection is a "publication" with
an identified author.  (See the end of this document.)


CONTENTS

After unzipping this package you should find several directories.
The top-level directory contains some project files - you can
throw these away if your compiler doesn't use them.
Sources are contained in the following subdirectories:

      DEF       The definition modules
      SRC       This is where the interesting stuff is.
      SRC\TESTS Some test programs for exercising the modules.

The main library modules are:

    Cx           Complex number arithmetic
    Fourier      Fast Fourier transform.
    Integration  Routines to solve ordinary differential equations.
    Vec          Vector operations.
    Mat          Matrix operations, including eigenvalues, inverse, etc.
    MatExtra     Some more matrix operations: QR and LQ factorisation,
                           Cholesky decomposition, pseudoinverse,
                           singular value decomposition.
    Poly         Manipulation of polynomials, including root-finding.
    Rational     Manipulation of rational functions (ratios of polynomials)
    MiscM2       Miscellaneous procedures, collected in one module to
                 ease the porting of the other modules to various
                 environments.

The software is written in ISO Modula-2. It should not be too
difficult to translate it into any other language, if that's
what you want to do.

You'll notice that all modules use the data type LONGREAL extensively.
This is because of a peculiar feature of the floating point hardware
in a PC: although LONGREAL gives better precision than REAL, the
extra time overhead is negligible.  (There is of course a space
overhead.)  If you don't like this decision, you can safely change
LONGREAL to REAL in all modules.

You'll also notice that the modules use some features of
ISO standard Modula-2 (notably 2-dimensional open arrays)
which aren't supported by some older compilers.  If you
have a PIM-style compiler (e.g. FST, TopSpeed), then you
need an older version of this package.  You can find
the older (DOS) version on the web site below.


AUTHOR INFORMATION

            Peter Moylan
            e-mail:   peter@pmoylan.org
            WWW:      http://www.pmoylan.org
