# Linear Algebra Methods and Software

## "computer techniques and methods"

This section contains links to a variety of linear algebra methods
and solvers. Some of the software is ported to C or C++ from other languages and
some is unique or unavailable elsewhere.

The contents of some of the navigation subsections above are:

- NON-LINEAR — non-linear solvers, including Newton's and Broyden's,
- INTEGRATION — integrators, including QUADPACK and double exponential,
- ROOTS — advanced polynomial root-finders, original methods and ports,
- XBCD-MATH — an extended precision BCD math package for calculator use,
- PARSERS — a collection of math expression parsers: double and complex.

## C Ports from Linpack

- DGESL -- solves A * X = B or TRANS(A) * X = B using the factors computed by DGECO or DGEFA.
- DGEFA -- factors a real matrix by Gaussian elimination.
- DGEDI -- computes the determinant and inverse of a matrix
using the factors computed by DGECO or DGEFA.
- DGTSL -- given a general tridiagonal matrix and a right hand
side will find the solution.
- DGECO -- factors a real matrix by Gaussian elimination and estimates
the condition of the matrix.
- DPOFA -- factors a real symmetric positive definite matrix.
- DPOSL -- solves the real symmetric positive definite matrix A * X = B
using the factors computed by DPOFA.

There is also a header file available.
These C programs are functional equivalents to some of the double precision FORTRAN versions. The intent was to port the original code
rather than rewrite it, so there are weaknesses including extensive use of the now-disparaged 'goto's. The
manual is copyrighted, so you'll have to find it using an internet search. Then grab
your trusty Linpack manual for documentation and you're on your way. Note that
Linpack relies on the BLAS for low level vector operations. In this port, the
equivalent code is inserted directly into each routine.

## C Ports from Handbook for Automatic Computation

These are ports from Algol to C. The differences in the languages are such
that it is much easier to port from Algol to C than from FORTRAN to C. As above, the documentation
is copyrighted and use of these ports requires the 'Handbook'.

## Original C++ Code for Linear Systems

- GED -- Gaussian elimination routine
- CGED -- complex version of Gaussian
elimination routine
- MATINV -- bare-bones (simple pivoting)
matrix inverse using Gauss-Jordan elimination
- CMATINV -- complex version of matrix
inverse using Gauss-Jordan elimination

## Assembler Language (Tasm32) Linear Solvers

Here is a set of Gaussian elimination
routines for float, double and long double numeric types. A header file for
these routines is here.