This package contains **unofficial** Java versions of many of the
BLAS (Basic Linear Algebra Subroutines), and the
LINPACK
Cholesky decomposition (dpofa, dposl, and dpodi), QR decomposition
(dqrdc and dqrsl), singular
value decomposition (dsvdc), and LU decomposition
(dgefa, dgesl, and dgedi) routines. The nonprofit Society for Industrial and Applied
Mathematics (SIAM) sells copies of the
LINPACK
Users' Guide.

**New as of 8/7/98:** Numerical analysts at MathWorks and NIST have
combined to produce a public domain Java linear algebra package called
JAMA.
(MathWorks maintains links to a variety of Java-based tools for
science and engineering at
http://www.mathtools.net/Java/index.html.)

**New as of 2/24/99:** G.W. Stewart has produced
a public domain Java linear algebra package called
Jampack.

**New as of 7/21/99:**
A US Government NIST
(National Institute of Standards and Technology) site
links to a wide variety of numerical Java resources.

**New as of 7/21/99:** Links to
proprietary Java linear algebra packages.

- The routines discussed below were translated by a user of numerical analysis
routines rather than a developer. When routines by professional
numerical analysts become
available [
**see, for example, the links given above**], they should be used. - I have tried to be careful with the coding and have done some
simple testing (see the CholTest_f77, QRTest_f77, SVDCTest_f77, LUTest_f77,
CholTest_j, QRTest_j, SVDCTest_j, and LUTest_j
applications). However, it is quite possible that I have introduced
errors into the routines in the course of the translation. If you
detect any, PLEASE contact me
(Steve Verrill at
`sverrill@fs.fed.us`or 608-231-9375). A BUG LIST is provide below. - The classes/methods that make use of FORTRAN style indexing
have "_f77" suffixes. In these you will tend to see
for (i = 1; i <= n; i++)

rather thanfor (i = 0; i < n; i++)

To use the "_f77" routines you will have to declare your vectors and matrices to be one element larger (e.g., v[101] rather than v[100], and a[101][101] rather than a[100][100]), and you will have to fill elements 1 through n rather than elements 0 through n - 1.The classes/methods that make use of Java/C style indexing have "_j" suffixes. In these you will tend to see

for (i = 0; i < n; i++)

rather thanfor (i = 1; i <= n; i++)

To use the "_j" routines you will have to fill elements 0 through n - 1 rather than elements 1 through n.Why would one use the "_f77" material? If you were translating a FORTRAN program and didn't want to worry about the effects of changing index values, you could use the "_f77" routines. Of course, these waste memory.

- As of 6/11/97, in addition to the LINPACK translations, the
package also includes Cholesky decomposition routines that I have
written. These are deprecated and will eventually be removed. They
use Java style indexing. These routines are part of
CholTest.class, Cholesky.class, and Triangular.class.
I have tested the Cholesky.class and Triangular.class programs with CholTest. For reasonably scaled, well-conditioned problems, they appear to perform satisfactorily for matrices of order 50. As I am a statistician interested in regression problems, this is sufficient for many of my purposes. If you need to deal with larger problems, I STRONGLY encourage you to use CholTest to investigate whether these routines will be satisfactory for your purposes.

Sorry about that.

- Blas_f77.java,
- Cholesky_f77.java,
- CholTest_f77.java,
- QR_f77.java,
- QRTest_f77.java,
- SVDC_f77.java,
- SVDCTest_f77.java,
- LU_f77.java,
- LUTest_f77.java,
- Blas_j.java,
- Cholesky_j.java,
- CholTest_j.java,
- QR_j.java,
- QRTest_j.java,
- SVDC_j.java,
- SVDCTest_j.java,
- LU_j.java,
- LUTest_j.java,
- Cholesky.java,
- Triangular.java,
- CholTest.java,
- NotPosDefException.java,
- SVDCException.java,
- NotFullRankException.java,
- Console.java.

*Given the manner in which the routines are currently written,*
you will need to import them (see the beginning of
CholTest_f77.java). All of the classes
will have to be placed
in subdirectories of a directory in your CLASSPATH.
For the linear algebra classes, this subdirectory will
have to be called linear_algebra.
Console.class
will have to be placed in a
subdirectory called corejava.

Note that if you install the software in this manner,
then to run, for example, CholTest_f77 you will have to issue the command:

java linear_algebra.CholTest_f77

- Corrected 10/22/97.
There was an error in the dnrm2_j BLAS method. The code fragment
} else if (n == 1) { norm = Math.abs(x[1]);

was incorrect. It needed to be changed to} else if (n == 1) { norm = Math.abs(x[0]);

I thank Jon Campbell for detecting this error.

- Corrected 4/21/98. There was ugly code in the dgesl_j LU method. At two locations Blas_f77.colvdot_f77 was referenced rather than Blas_j.colvdot_j. Technically this is not a bug as the code in Blas_f77.colvdot_f77 is identical to that in Blas_j.colvdot_j. However, the _f77 names will cause problems if a user has only compiled the _j code. I thank Martin Chlond for pointing this out to me.

Last modified on 4/3/03.

As of last midnight, this page had been accessed times.