public class Blas extends Object
This class contains Java versions of a number of the LINPACK basic linear algebra subroutines (blas):
IMPORTANT: The "_j" suffixes indicate that these routines use Java style indexing. For example, you will see for (i = 0; i < n; i++) rather than (FORTRAN style) for (i = 1; i <= n; i++) To use the "_j" routines you will have to fill elements 0 through n - 1 of vectors rather than elements 1 through n. [Also, before using the isamax and colisamax methods make sure that they are doing what you expect them to do.] Versions of these programs that use FORTRAN style indexing are also available. They end with the suffix "_f77".
This class was translated by a statistician from FORTRAN versions of the LINPACK blas. It is NOT an official translation. When public domain Java numerical analysis routines become available from the people who produce LAPACK, then THE CODE PRODUCED BY THE NUMERICAL ANALYSTS SHOULD BE USED.
Meanwhile, if you have suggestions for improving this code, please contact Steve Verrill at sverrill@fs.fed.us.
Constructor and Description |
---|
Blas() |
Modifier and Type | Method and Description |
---|---|
static void |
colaxpy_j(int nrow,
double a,
double[][] x,
int begin,
int j1,
int j2)
This method multiplies a constant times a portion of a column
of a matrix and adds the product to the corresponding portion
of another column of the matrix --- a portion of col2 is
replaced by the corresponding portion of a*col1 + col2.
|
static double |
coldot_j(int nrow,
double[][] x,
int begin,
int j1,
int j2)
This method calculates the dot product of portions of two
columns of a matrix.
|
static int |
colisamax_j(int n,
double[][] x,
int incx,
int begin,
int j)
This method finds the index of the element of a portion of a
column of a matrix that has the maximum absolute value.
|
static double |
colnrm2_j(int nrow,
double[][] x,
int begin,
int j)
This method calculates the Euclidean norm of a portion of a
column of a matrix.
|
static void |
colrot_j(int n,
double[][] x,
int j1,
int j2,
double c,
double s)
This method "applies a plane rotation."
|
static void |
colscal_j(int nrow,
double a,
double[][] x,
int begin,
int j)
This method scales a portion of a column of a matrix by a constant.
|
static void |
colswap_j(int n,
double[][] x,
int j1,
int j2)
This method interchanges two columns of a matrix.
|
static void |
colvaxpy_j(int nrow,
double a,
double[][] x,
double[] y,
int begin,
int j)
This method multiplies a constant times a portion of a column
of a matrix x[ ][ ] and adds the product to the corresponding portion
of a vector y[ ] --- a portion of y[ ] is replaced by the corresponding
portion of ax[ ][j] + y[ ].
|
static double |
colvdot_j(int nrow,
double[][] x,
double[] y,
int begin,
int j)
This method calculates the dot product of a portion of a
column of a matrix and the corresponding portion of a
vector.
|
static void |
colvraxpy_j(int nrow,
double a,
double[] y,
double[][] x,
int begin,
int j)
This method multiplies a constant times a portion of a vector y[ ]
and adds the product to the corresponding portion
of a column of a matrix x[ ][ ] --- a portion of column j of x[ ][ ]
is replaced by the corresponding
portion of ay[ ] + x[ ][j].
|
static void |
daxpy_j(int n,
double da,
double[] dx,
int incx,
double[] dy,
int incy)
This method multiplies a constant times a vector and adds the product
to another vector --- dy[ ] = da*dx[ ] + dy[ ].
|
static void |
dcopy_j(int n,
double[] dx,
int incx,
double[] dy,
int incy)
This method copies the vector dx[ ] to the vector dy[ ].
|
static void |
dcopyp_j(int nrow,
double[] x,
double[] y,
int begin)
This method copies a portion of vector x[ ] to the corresponding
portion of vector y[ ].
|
static double |
ddot_j(int n,
double[] dx,
int incx,
double[] dy,
int incy)
This method calculates the dot product of two vectors.
|
static double |
dnrm2_j(int n,
double[] x,
int incx)
This method calculates the Euclidean norm of the vector
stored in dx[ ] with storage increment incx.
|
static double |
dnrm2p_j(int nrow,
double[] x,
int begin)
This method calculates the Euclidean norm of a portion
of a vector x[ ].
|
static void |
drotg_j(double[] rotvec)
This method constructs a Givens plane rotation.
|
static void |
dscal_j(int n,
double da,
double[] dx,
int incx)
This method scales a vector by a constant.
|
static void |
dscalp_j(int nrow,
double a,
double[] x,
int begin)
This method scales a portion of a vector by a constant.
|
static void |
dswap_j(int n,
double[] dx,
int incx,
double[] dy,
int incy)
This method interchanges two vectors.
|
static int |
isamax_j(int n,
double[] x,
int incx)
This method finds the index of the element of a vector
that has the maximum absolute value.
|
static void |
matmat_j(double[][] a,
double[][] b,
double[][] c,
int n,
int p,
int r)
This method multiplies an n x p matrix by a p x r matrix.
|
static void |
mattran_j(double[][] a,
double[][] at,
int n,
int p)
This method obtains the transpose of an n x p matrix.
|
static void |
matvec_j(double[][] a,
double[] b,
double[] c,
int n,
int p)
This method multiplies an n x p matrix by a p x 1 vector.
|
static double |
sign_j(double a,
double b)
This method implements the FORTRAN sign (not sin) function.
|
public static void colaxpy_j(int nrow, double a, double[][] x, int begin, int j1, int j2)
This method multiplies a constant times a portion of a column of a matrix and adds the product to the corresponding portion of another column of the matrix --- a portion of col2 is replaced by the corresponding portion of a*col1 + col2. It uses unrolled loops. It is a modification of the LINPACK subroutine DAXPY. In the LINPACK listing DAXPY is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, February 26, 1997.
nrow
- The number of rows involveda
- The constantx[ ][ ]
- The matrixbegin
- The starting rowj1
- The id of col1j2
- The id of col2public static double coldot_j(int nrow, double[][] x, int begin, int j1, int j2)
This method calculates the dot product of portions of two columns of a matrix. It uses unrolled loops. It is a modification of the LINPACK function DDOT. In the LINPACK listing DDOT is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, February 27, 1997.
nrow
- The number of rows involvedx[ ][ ]
- The matrixbegin
- The starting rowj1
- The id of the first columnj2
- The id of the second columnpublic static int colisamax_j(int n, double[][] x, int incx, int begin, int j)
This method finds the index of the element of a portion of a column of a matrix that has the maximum absolute value. It is a modification of the LINPACK function ISAMAX. In the LINPACK listing ISAMAX is attributed to Jack Dongarra with a date of March 11, 1978. Translated by Steve Verrill, March 10, 1998.
n
- The number of elements to be checkedx[ ][ ]
- The matrixincx
- The subscript increment for x[ ][ ]begin
- The starting rowj
- The id of the columnpublic static double colnrm2_j(int nrow, double[][] x, int begin, int j)
This method calculates the Euclidean norm of a portion of a column of a matrix. It is a modification of the LINPACK function dnrm2. In the LINPACK listing dnrm2 is attributed to C.L. Lawson with a date of January 8, 1978. The routine below is based on a more recent dnrm2 version that is attributed in LAPACK documentation to Sven Hammarling. Translated and modified by Steve Verrill, February 26, 1997.
nrow
- The number of rows involvedx[ ][ ]
- The matrixbegin
- The starting rowj
- The id of the columnpublic static void colrot_j(int n, double[][] x, int j1, int j2, double c, double s)
This method "applies a plane rotation." It is a modification of the LINPACK function DROT. In the LINPACK listing DROT is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, March 4, 1997.
n
- The order of x[ ][ ]x[ ][ ]
- The matrixj1
- The id of the first columnj2
- The id of the second columnc
- "cos"s
- "sin"public static void colscal_j(int nrow, double a, double[][] x, int begin, int j)
This method scales a portion of a column of a matrix by a constant. It uses unrolled loops. It is a modification of the LINPACK subroutine DSCAL. In the LINPACK listing DSCAL is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, February 27, 1997.
nrow
- The number of rows involveda
- The constantx[ ][ ]
- The matrixbegin
- The starting rowj
- The id of the columnpublic static void colswap_j(int n, double[][] x, int j1, int j2)
This method interchanges two columns of a matrix. It uses unrolled loops. It is a modification of the LINPACK function DSWAP. In the LINPACK listing DSWAP is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, February 26, 1997.
n
- The number of rows of the matrixx[ ][ ]
- The matrixj1
- The id of the first columnj2
- The id of the second columnpublic static void colvaxpy_j(int nrow, double a, double[][] x, double[] y, int begin, int j)
This method multiplies a constant times a portion of a column of a matrix x[ ][ ] and adds the product to the corresponding portion of a vector y[ ] --- a portion of y[ ] is replaced by the corresponding portion of ax[ ][j] + y[ ]. It uses unrolled loops. It is a modification of the LINPACK subroutine DAXPY. In the LINPACK listing DAXPY is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, March 1, 1997.
nrow
- The number of rows involveda
- The constantx[ ][ ]
- The matrixy[ ]
- The vectorbegin
- The starting rowj
- The id of the column of the x matrixpublic static double colvdot_j(int nrow, double[][] x, double[] y, int begin, int j)
This method calculates the dot product of a portion of a column of a matrix and the corresponding portion of a vector. It uses unrolled loops. It is a modification of the LINPACK function DDOT. In the LINPACK listing DDOT is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, March 1, 1997.
nrow
- The number of rows involvedx[ ][ ]
- The matrixy[ ]
- The vectorbegin
- The starting rowj
- The id of the column of the matrixpublic static void colvraxpy_j(int nrow, double a, double[] y, double[][] x, int begin, int j)
This method multiplies a constant times a portion of a vector y[ ] and adds the product to the corresponding portion of a column of a matrix x[ ][ ] --- a portion of column j of x[ ][ ] is replaced by the corresponding portion of ay[ ] + x[ ][j]. It uses unrolled loops. It is a modification of the LINPACK subroutine DAXPY. In the LINPACK listing DAXPY is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, March 3, 1997.
nrow
- The number of rows involveda
- The constanty[ ]
- The vectorx[ ][ ]
- The matrixbegin
- The starting rowj
- The id of the column of the x matrixpublic static void daxpy_j(int n, double da, double[] dx, int incx, double[] dy, int incy)
This method multiplies a constant times a vector and adds the product to another vector --- dy[ ] = da*dx[ ] + dy[ ]. It uses unrolled loops for increments equal to one. It is a translation from FORTRAN to Java of the LINPACK subroutine DAXPY. In the LINPACK listing DAXPY is attributed to Jack Dongarra with a date of 3/11/78. Translated by Steve Verrill, June 3, 1997.
n
- The order of the vectors dy[ ] and dx[ ]da
- The constantdx[ ]
- This vector will be multiplied by the constant daincx
- The subscript increment for dx[ ]dy[ ]
- This vector will be added to da*dx[ ]incy
- The subscript increment for dy[ ]public static void dcopy_j(int n, double[] dx, int incx, double[] dy, int incy)
This method copies the vector dx[ ] to the vector dy[ ]. It uses unrolled loops for increments equal to one. It is a translation from FORTRAN to Java of the LINPACK subroutine DCOPY. In the LINPACK listing DCOPY is attributed to Jack Dongarra with a date of 3/11/78. Translated by Steve Verrill, March 1, 1997.
n
- The order of dx[ ] and dy[ ]dx[ ]
- vectorincx
- The subscript increment for dx[ ]dy[ ]
- vectorincy
- The subscript increment for dy[ ]public static void dcopyp_j(int nrow, double[] x, double[] y, int begin)
This method copies a portion of vector x[ ] to the corresponding portion of vector y[ ]. It uses unrolled loops. It is a modification of the LINPACK subroutine dcopy. In the LINPACK listing dcopy is attributed to Jack Dongarra with a date of 3/11/78. Translated by Steve Verrill, March 1, 1997.
nrow
- The number of rows involvedx[ ]
- vectory[ ]
- vectorbegin
- The starting rowpublic static double ddot_j(int n, double[] dx, int incx, double[] dy, int incy)
This method calculates the dot product of two vectors. It uses unrolled loops for increments equal to one. It is a translation from FORTRAN to Java of the LINPACK function DDOT. In the LINPACK listing DDOT is attributed to Jack Dongarra with a date of 3/11/78. Translated by Steve Verrill, June 3, 1997.
n
- The order of the vectors dx[ ] and dy[ ]dx[ ]
- vectorincx
- The subscript increment for dx[ ]dy[ ]
- vectorincy
- The subscript increment for dy[ ]public static double dnrm2_j(int n, double[] x, int incx)
This method calculates the Euclidean norm of the vector stored in dx[ ] with storage increment incx. It is a translation from FORTRAN to Java of the LINPACK function DNRM2. In the LINPACK listing DNRM2 is attributed to C.L. Lawson with a date of January 8, 1978. The routine below is based on a more recent DNRM2 version that is attributed in LAPACK documentation to Sven Hammarling. Translated by Steve Verrill, June 3, 1997.
n
- The order of the vector x[ ]x[ ]
- vectorincx
- The subscript increment for x[ ]public static double dnrm2p_j(int nrow, double[] x, int begin)
This method calculates the Euclidean norm of a portion of a vector x[ ]. It is a modification of the LINPACK function dnrm2. In the LINPACK listing dnrm2 is attributed to C.L. Lawson with a date of January 8, 1978. The routine below is based on a more recent dnrm2 version that is attributed in LAPACK documentation to Sven Hammarling. Translated by Steve Verrill, March 3, 1997.
nrow
- The number of rows involvedx[ ]
- vectorbegin
- The starting rowpublic static void drotg_j(double[] rotvec)
This method constructs a Givens plane rotation. It is a translation from FORTRAN to Java of the LINPACK subroutine DROTG. In the LINPACK listing DROTG is attributed to Jack Dongarra with a date of 3/11/78. Translated by Steve Verrill, March 3, 1997.
rotvec[]
- Contains the a,b,c,s values. In Java they
cannot be passed as primitive types (e.g., double
or int or ...) if we want their return values to
be altered.public static void dscal_j(int n, double da, double[] dx, int incx)
This method scales a vector by a constant. It uses unrolled loops for an increment equal to one. It is a translation from FORTRAN to Java of the LINPACK subroutine DSCAL. In the LINPACK listing DSCAL is attributed to Jack Dongarra with a date of 3/11/78. Translated by Steve Verrill, June 3, 1997.
n
- The order of the vector dx[ ]da
- The constantdx[ ]
- This vector will be multiplied by the constant daincx
- The subscript increment for dx[ ]public static void dscalp_j(int nrow, double a, double[] x, int begin)
This method scales a portion of a vector by a constant. It uses unrolled loops. It is a modification of the LINPACK subroutine DSCAL. In the LINPACK listing DSCAL is attributed to Jack Dongarra with a date of 3/11/78. Translated and modified by Steve Verrill, March 3, 1997.
nrow
- The number of rows involveda
- The constantx[ ]
- The vectorbegin
- The starting rowpublic static void dswap_j(int n, double[] dx, int incx, double[] dy, int incy)
This method interchanges two vectors. It uses unrolled loops for increments equal to one. It is a translation from FORTRAN to Java of the LINPACK function DSWAP. In the LINPACK listing DSWAP is attributed to Jack Dongarra with a date of 3/11/78. Translated by Steve Verrill, June 3, 1997.
n
- The order of the vectors dx[ ] and dy[ ]dx[ ]
- vectorincx
- The subscript increment for dx[ ]dy[ ]
- vectorincy
- The subscript increment for dy[ ]public static int isamax_j(int n, double[] x, int incx)
This method finds the index of the element of a vector that has the maximum absolute value. It is a translation from FORTRAN to Java of the LINPACK function ISAMAX. In the LINPACK listing ISAMAX is attributed to Jack Dongarra with a date of March 11, 1978. Before you use this version of isamax, make certain that it is doing what you expect it to do. Translated by Steve Verrill, March 10, 1998.
n
- The number of elements to be checkedx[ ]
- vectorincx
- The subscript increment for x[ ]public static void matmat_j(double[][] a, double[][] b, double[][] c, int n, int p, int r)
This method multiplies an n x p matrix by a p x r matrix. Created by Steve Verrill, March 1997.
a[ ][ ]
- The left matrixb[ ][ ]
- The right matrixc[ ][ ]
- The productn
- np
- pr
- rpublic static void mattran_j(double[][] a, double[][] at, int n, int p)
a[ ][ ]
- matrixat[ ][ ]
- transpose of the matrixn
- np
- ppublic static void matvec_j(double[][] a, double[] b, double[] c, int n, int p)
a[ ][ ]
- The matrixb[ ]
- The vectorc[ ]
- The productn
- np
- ppublic static double sign_j(double a, double b)
a
- ab
- bCopyright © 2003–2023 UBC Michael Smith Laboratories. All rights reserved.