public interface FloatBlas
Subset of the BLAS (Basic Linear Algebra System); High quality "building block" routines for performing basic vector and matrix operations. Because the BLAS are efficient, portable, and widely available, they're commonly used in the development of high quality linear algebra software.
Mostly for compatibility with legacy notations. Most operations actually just delegate to the appropriate methods directly defined on matrices and vectors.
This class implements the BLAS functions for operations on matrices from the matrix package. It follows the spirit of the Draft Proposal for Java BLAS Interface, by Roldan Pozo of the National Institute of Standards and Technology. Interface definitions are also identical to the Ninja interface. Because the matrix package supports sections, the interface is actually simpler.
Currently, the following operations are supported:
Modifier and Type | Method and Description |
---|---|
void |
assign(FloatMatrix2D A,
FloatFunction function)
Assigns the result of a function to each cell;
x[row,col] = function(x[row,col]).
|
void |
assign(FloatMatrix2D x,
FloatMatrix2D y,
FloatFloatFunction function)
Assigns the result of a function to each cell;
x[row,col] = function(x[row,col],y[row,col]).
|
float |
dasum(FloatMatrix1D x)
Returns the sum of absolute values; |x[0]| + |x[1]| + ...
|
void |
daxpy(float alpha,
FloatMatrix1D x,
FloatMatrix1D y)
Combined vector scaling; y = y + alpha*x.
|
void |
daxpy(float alpha,
FloatMatrix2D A,
FloatMatrix2D B)
Combined matrix scaling; B = B + alpha*A.
|
void |
dcopy(FloatMatrix1D x,
FloatMatrix1D y)
Vector assignment (copying); y = x.
|
void |
dcopy(FloatMatrix2D A,
FloatMatrix2D B)
Matrix assignment (copying); B = A.
|
float |
ddot(FloatMatrix1D x,
FloatMatrix1D y)
Returns the dot product of two vectors x and y, which is
Sum(x[i]*y[i]).
|
void |
dgemm(boolean transposeA,
boolean transposeB,
float alpha,
FloatMatrix2D A,
FloatMatrix2D B,
float beta,
FloatMatrix2D C)
Generalized linear algebraic matrix-matrix multiply;
C = alpha*A*B + beta*C.
|
void |
dgemv(boolean transposeA,
float alpha,
FloatMatrix2D A,
FloatMatrix1D x,
float beta,
FloatMatrix1D y)
Generalized linear algebraic matrix-vector multiply;
y = alpha*A*x + beta*y.
|
void |
dger(float alpha,
FloatMatrix1D x,
FloatMatrix1D y,
FloatMatrix2D A)
Performs a rank 1 update; A = A + alpha*x*y'.
|
float |
dnrm2(FloatMatrix1D x)
Return the 2-norm; sqrt(x[0]^2 + x[1]^2 + ...).
|
void |
drot(FloatMatrix1D x,
FloatMatrix1D y,
float c,
float s)
Applies a givens plane rotation to (x,y);
x = c*x + s*y; y = c*y - s*x.
|
void |
drotg(float a,
float b,
float[] rotvec)
Constructs a Givens plane rotation for (a,b).
|
void |
dscal(float alpha,
FloatMatrix1D x)
Vector scaling; x = alpha*x.
|
void |
dscal(float alpha,
FloatMatrix2D A)
Matrix scaling; A = alpha*A.
|
void |
dswap(FloatMatrix1D x,
FloatMatrix1D y)
Swaps the elements of two vectors; y <==> x.
|
void |
dswap(FloatMatrix2D x,
FloatMatrix2D y)
Swaps the elements of two matrices; B <==> A.
|
void |
dsymv(boolean isUpperTriangular,
float alpha,
FloatMatrix2D A,
FloatMatrix1D x,
float beta,
FloatMatrix1D y)
Symmetric matrix-vector multiplication; y = alpha*A*x + beta*y.
|
void |
dtrmv(boolean isUpperTriangular,
boolean transposeA,
boolean isUnitTriangular,
FloatMatrix2D A,
FloatMatrix1D x)
Triangular matrix-vector multiplication; x = A*x or x = A'*x.
|
int |
idamax(FloatMatrix1D x)
Returns the index of largest absolute value;
i such that |x[i]| == max(|x[0]|,|x[1]|,...)..
|
void assign(FloatMatrix2D A, FloatFunction function)
A
- the matrix to modify.function
- a function object taking as argument the current cell's value.FloatFunctions
void assign(FloatMatrix2D x, FloatMatrix2D y, FloatFloatFunction function)
x
- the matrix to modify.y
- the secondary matrix to operate on.function
- a function object taking as first argument the current cell's
value of this, and as second argument the current
cell's value of y,IllegalArgumentException
- if
x.columns() != y.columns() || x.rows() != y.rows()FloatFunctions
float dasum(FloatMatrix1D x)
x
- the first vector.void daxpy(float alpha, FloatMatrix1D x, FloatMatrix1D y)
alpha
- a scale factor.x
- the first source vector.y
- the second source vector, this is also the vector where
results are stored.IllegalArgumentException
- x.size() != y.size()..void daxpy(float alpha, FloatMatrix2D A, FloatMatrix2D B)
alpha
- a scale factor.A
- the first source matrix.B
- the second source matrix, this is also the matrix where
results are stored.IllegalArgumentException
- if
A.columns() != B.columns() || A.rows() != B.rows().void dcopy(FloatMatrix1D x, FloatMatrix1D y)
x
- the source vector.y
- the destination vector.IllegalArgumentException
- x.size() != y.size().void dcopy(FloatMatrix2D A, FloatMatrix2D B)
A
- the source matrix.B
- the destination matrix.IllegalArgumentException
- if
A.columns() != B.columns() || A.rows() != B.rows().float ddot(FloatMatrix1D x, FloatMatrix1D y)
x
- the first vector.y
- the second vector.IllegalArgumentException
- if x.size() != y.size().void dgemm(boolean transposeA, boolean transposeB, float alpha, FloatMatrix2D A, FloatMatrix2D B, float beta, FloatMatrix2D C)
transposeA
- set this flag to indicate that the multiplication shall be
performed on A'.transposeB
- set this flag to indicate that the multiplication shall be
performed on B'.alpha
- a scale factor.A
- the first source matrix.B
- the second source matrix.beta
- a scale factor.C
- the third source matrix, this is also the matrix where results
are stored.IllegalArgumentException
- if B.rows() != A.columns().IllegalArgumentException
- if
C.rows() != A.rows() || C.columns() != B.columns().IllegalArgumentException
- if A == C || B == C.void dgemv(boolean transposeA, float alpha, FloatMatrix2D A, FloatMatrix1D x, float beta, FloatMatrix1D y)
transposeA
- set this flag to indicate that the multiplication shall be
performed on A'.alpha
- a scale factor.A
- the source matrix.x
- the first source vector.beta
- a scale factor.y
- the second source vector, this is also the vector where
results are stored.IllegalArgumentException
- A.columns() != x.size() || A.rows() != y.size())..void dger(float alpha, FloatMatrix1D x, FloatMatrix1D y, FloatMatrix2D A)
A = { {6,5}, {7,6} }, x = {1,2}, y = {3,4}, alpha = 1 --> A = { {9,9}, {13,14} }
alpha
- a scalar.x
- an m element vector.y
- an n element vector.A
- an m by n matrix.float dnrm2(FloatMatrix1D x)
x
- the vector.void drot(FloatMatrix1D x, FloatMatrix1D y, float c, float s)
x
- the first vector.y
- the second vector.c
- the cosine of the angle of rotation.s
- the sine of the angle of rotation.void drotg(float a, float b, float[] rotvec)
a
- rotational elimination parameter a.b
- rotational elimination parameter b.rotvec
- Must be at least of length 4. On output contains the values
{a,b,c,s}.void dscal(float alpha, FloatMatrix1D x)
alpha
- a scale factor.x
- the first vector.void dscal(float alpha, FloatMatrix2D A)
alpha
- a scale factor.A
- the matrix.void dswap(FloatMatrix1D x, FloatMatrix1D y)
x
- the first vector.y
- the second vector.IllegalArgumentException
- x.size() != y.size().void dswap(FloatMatrix2D x, FloatMatrix2D y)
x
- the first matrix.y
- the second matrix.IllegalArgumentException
- if
A.columns() != B.columns() || A.rows() != B.rows().void dsymv(boolean isUpperTriangular, float alpha, FloatMatrix2D A, FloatMatrix1D x, float beta, FloatMatrix1D y)
isUpperTriangular
- is A upper triangular or lower triangular part to be used?alpha
- scaling factor.A
- the source matrix.x
- the first source vector.beta
- scaling factor.y
- the second vector holding source and destination.void dtrmv(boolean isUpperTriangular, boolean transposeA, boolean isUnitTriangular, FloatMatrix2D A, FloatMatrix1D x)
isUpperTriangular
- is A upper triangular or lower triangular?transposeA
- set this flag to indicate that the multiplication shall be
performed on A'.isUnitTriangular
- true --> A is assumed to be unit triangular; false --> A is
not assumed to be unit triangularA
- the source matrix.x
- the vector holding source and destination.int idamax(FloatMatrix1D x)
x
- the vector to search through.Jump to the Parallel Colt Homepage