
JLAPACK 0.3a

This directory should contain:

  README                - this file
  INSTALL               - installation details
  CHANGES               - what has changed in this version
  DdotTest.java         - simple example of how to call a BLAS routine
  SimpleDdotTest.java   - example of calling the simplified interface
  DlaruvTest.java       - simple example of how to call a LAPACK routine
  src/                  - directory containing the translated java source code
  intsrc/               - the source code for the simplified interfaces
  classes.zip           - the BLAS and LAPACK packages (DO NOT UNZIP)

Optionally, you may have downloaded:
  jlapack.f             - the original fortran code that formed the basis of
                          this translation (from LAPACK 2.0)

In addition to translations of the numerical routines, the src directory 
contains classes that provide a more Java-like interface to the underlying
numerical functions.  There is one such class for each numerical routine.
The name of the class is simply the function name in all caps.  For example, 
the fortran routine 'ddot' is translated into two classes: Ddot.java and 
DDOT.java.  Ddot.java contains the actual translation of the fortran code 
while DDOT.java contains only a call to the real ddot (Ddot), but provides 
a more simple interface.  Since the interface may have to do matrix 
transposition and copying for some routines, it is faster to use the 'raw' 
numerical routines.

API documentation for the BLAS and LAPACK can be found online at the 
following URL:

  http://www.cs.utk.edu/f2j/docs/html/packages.html

NOTES:

1.  This release has not been tuned for performance - it is a simple,
    automatic translation.

2.  Some scalars must be wrapped in objects.  The objects are
    located in the org.netlib.util package.  Therefore, your code 
    should contain "import org.netlib.util.*;" to have access to the
    wrappers.  The source code may be found in:
       jlapack-0.3a/src/org/netlib/util/
    In addition, your code should import org.netlib.lapack.Blah or
    org.netlib.blas.Blah, where Blah represents the routine your
    code calls.  See the files DdotTest.java and DlaruvTest.java
    for examples.

3.  See the warnings on recompilation in the INSTALL file.

4.  If you are using a JVM with a JIT complier, please read the 
    warning at http://www.cs.utk.edu/f2j/jitnote.html

The following two notes only apply to interfacing with the 'raw'
numerical routines, not the Java style front-ends.

5.  All array arguments are followed by an extra "offset" argument.
    This allows passing array subsections.

6.  It is important to keep this in mind when interfacing Java code
    to the JLAPACK routines:  all multidimensional arrays are mapped 
    to one-dimensional arrays in the translated code and the original 
    column-major layout is maintained.

The following note only applies to using the Java style front-ends.

7.  When you pass Java 2D arrays to one of the interface routines,
    it will make a copy of it and convert it into a linearized 1D
    array to be passed to the underlying numerical routine.  If some
    routine takes two matrices and you pass the same matrix for both
    arguments, the interface will generate two copies of the same
    array rather than the single copy that would normally be provided
    to the underlying routine.  Therefore, some inconsistency in the
    results could occur. 

Contact seymour@cs.utk.edu with any questions, comments, or suggestions.
