ReproBLAS
|
reproBLAS.h defines reproducible BLAS Methods. More...
#include <complex.h>
Go to the source code of this file.
Functions | |
double | reproBLAS_rdsum (const int fold, const int N, const double *X, const int incX) |
Compute the reproducible sum of double precision vector X. More... | |
double | reproBLAS_rdasum (const int fold, const int N, const double *X, const int incX) |
Compute the reproducible absolute sum of double precision vector X. More... | |
double | reproBLAS_rdnrm2 (const int fold, const int N, const double *X, const int incX) |
Compute the reproducible Euclidian norm of double precision vector X. More... | |
double | reproBLAS_rddot (const int fold, const int N, const double *X, const int incX, const double *Y, const int incY) |
Compute the reproducible dot product of double precision vectors X and Y. More... | |
float | reproBLAS_rsdot (const int fold, const int N, const float *X, const int incX, const float *Y, const int incY) |
Compute the reproducible dot product of single precision vectors X and Y. More... | |
float | reproBLAS_rsasum (const int fold, const int N, const float *X, const int incX) |
Compute the reproducible absolute sum of single precision vector X. More... | |
float | reproBLAS_rssum (const int fold, const int N, const float *X, const int incX) |
Compute the reproducible sum of single precision vector X. More... | |
float | reproBLAS_rsnrm2 (const int fold, const int N, const float *X, const int incX) |
Compute the reproducible Euclidian norm of single precision vector X. More... | |
void | reproBLAS_rzsum_sub (const int fold, const int N, const void *X, int incX, void *sum) |
Compute the reproducible sum of complex double precision vector X. More... | |
double | reproBLAS_rdzasum (const int fold, const int N, const void *X, const int incX) |
Compute the reproducible absolute sum of complex double precision vector X. More... | |
double | reproBLAS_rdznrm2 (const int fold, const int N, const void *X, int incX) |
Compute the reproducible Euclidian norm of complex double precision vector X. More... | |
void | reproBLAS_rzdotc_sub (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc) |
Compute the reproducible conjugated dot product of complex double precision vectors X and Y. More... | |
void | reproBLAS_rzdotu_sub (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu) |
Compute the reproducible unconjugated dot product of complex double precision vectors X and Y. More... | |
void | reproBLAS_rcsum_sub (const int fold, const int N, const void *X, const int incX, void *sum) |
Compute the reproducible sum of complex single precision vector X. More... | |
float | reproBLAS_rscasum (const int fold, const int N, const void *X, const int incX) |
Compute the reproducible absolute sum of complex single precision vector X. More... | |
float | reproBLAS_rscnrm2 (const int fold, const int N, const void *X, const int incX) |
Compute the reproducible Euclidian norm of complex single precision vector X. More... | |
void | reproBLAS_rcdotc_sub (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc) |
Compute the reproducible conjugated dot product of complex single precision vectors X and Y. More... | |
void | reproBLAS_rcdotu_sub (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu) |
Compute the reproducible unconjugated dot product of complex single precision vectors X and Y. More... | |
void | reproBLAS_rdgemv (const int fold, const char Order, const char TransA, const int M, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY) |
Add to double precision vector Y the reproducible matrix-vector product of double precision matrix A and double precision vector X. More... | |
void | reproBLAS_rdgemm (const int fold, const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc) |
Add to double precision matrix C the reproducible matrix-matrix product of double precision matrices A and B. More... | |
void | reproBLAS_rsgemv (const int fold, const char Order, const char TransA, const int M, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY) |
Add to single precision vector Y the reproducible matrix-vector product of single precision matrix A and single precision vector X. More... | |
void | reproBLAS_rsgemm (const int fold, const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc) |
Add to single precision matrix C the reproducible matrix-matrix product of single precision matrices A and B. More... | |
void | reproBLAS_rzgemv (const int fold, const char Order, const char TransA, const int M, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY) |
Add to complex double precision vector Y the reproducible matrix-vector product of complex double precision matrix A and complex double precision vector X. More... | |
void | reproBLAS_rzgemm (const int fold, const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc) |
Add to complex double precision matrix C the reproducible matrix-matrix product of complex double precision matrices A and B. More... | |
void | reproBLAS_rcgemv (const int fold, const char Order, const char TransA, const int M, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY) |
Add to complex single precision vector Y the reproducible matrix-vector product of complex single precision matrix A and complex single precision vector X. More... | |
void | reproBLAS_rcgemm (const int fold, const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc) |
Add to complex single precision matrix C the reproducible matrix-matrix product of complex single precision matrices A and B. More... | |
double | reproBLAS_dsum (const int N, const double *X, const int incX) |
Compute the reproducible sum of double precision vector X. More... | |
double | reproBLAS_dasum (const int N, const double *X, const int incX) |
Compute the reproducible absolute sum of double precision vector X. More... | |
double | reproBLAS_dnrm2 (const int N, const double *X, const int incX) |
Compute the reproducible Euclidian norm of double precision vector X. More... | |
double | reproBLAS_ddot (const int N, const double *X, const int incX, const double *Y, const int incY) |
Compute the reproducible dot product of double precision vectors X and Y. More... | |
float | reproBLAS_sdot (const int N, const float *X, const int incX, const float *Y, const int incY) |
Compute the reproducible dot product of single precision vectors X and Y. More... | |
float | reproBLAS_sasum (const int N, const float *X, const int incX) |
Compute the reproducible absolute sum of single precision vector X. More... | |
float | reproBLAS_ssum (const int N, const float *X, const int incX) |
Compute the reproducible sum of single precision vector X. More... | |
float | reproBLAS_snrm2 (const int N, const float *X, const int incX) |
Compute the reproducible Euclidian norm of single precision vector X. More... | |
void | reproBLAS_zsum_sub (const int N, const void *X, int incX, void *sum) |
Compute the reproducible sum of complex double precision vector X. More... | |
double | reproBLAS_dzasum (const int N, const void *X, const int incX) |
Compute the reproducible absolute sum of complex double precision vector X. More... | |
double | reproBLAS_dznrm2 (const int N, const void *X, int incX) |
Compute the reproducible Euclidian norm of complex double precision vector X. More... | |
void | reproBLAS_zdotc_sub (const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc) |
Compute the reproducible conjugated dot product of complex double precision vectors X and Y. More... | |
void | reproBLAS_zdotu_sub (const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu) |
Compute the reproducible unconjugated dot product of complex double precision vectors X and Y. More... | |
void | reproBLAS_csum_sub (const int N, const void *X, const int incX, void *sum) |
Compute the reproducible sum of complex single precision vector X. More... | |
float | reproBLAS_scasum (const int N, const void *X, const int incX) |
Compute the reproducible absolute sum of complex single precision vector X. More... | |
float | reproBLAS_scnrm2 (const int N, const void *X, const int incX) |
Compute the reproducible Euclidian norm of complex single precision vector X. More... | |
void | reproBLAS_cdotc_sub (const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc) |
Compute the reproducible conjugated dot product of complex single precision vectors X and Y. More... | |
void | reproBLAS_cdotu_sub (const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu) |
Compute the reproducible unconjugated dot product of complex single precision vectors X and Y. More... | |
void | reproBLAS_dgemv (const char Order, const char TransA, const int M, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY) |
Add to double precision vector Y the reproducible matrix-vector product of double precision matrix A and double precision vector X. More... | |
void | reproBLAS_dgemm (const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc) |
Add to double precision matrix C the reproducible matrix-matrix product of double precision matrices A and B. More... | |
void | reproBLAS_sgemv (const char Order, const char TransA, const int M, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY) |
Add to single precision vector Y the reproducible matrix-vector product of single precision matrix A and single precision vector X. More... | |
void | reproBLAS_sgemm (const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc) |
Add to single precision matrix C the reproducible matrix-matrix product of single precision matrices A and B. More... | |
void | reproBLAS_zgemv (const char Order, const char TransA, const int M, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY) |
Add to complex double precision vector Y the reproducible matrix-vector product of complex double precision matrix A and complex double precision vector X. More... | |
void | reproBLAS_zgemm (const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc) |
Add to complex double precision matrix C the reproducible matrix-matrix product of complex double precision matrices A and B. More... | |
void | reproBLAS_cgemv (const char Order, const char TransA, const int M, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY) |
Add to complex single precision vector Y the reproducible matrix-vector product of complex single precision matrix A and complex single precision vector X. More... | |
void | reproBLAS_cgemm (const char Order, const char TransA, const char TransB, const int M, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc) |
Add to complex single precision matrix C the reproducible matrix-matrix product of complex single precision matrices A and B. More... | |
reproBLAS.h defines reproducible BLAS Methods.
This header is modeled after cblas.h, and as such functions are prefixed with character sets describing the data types they operate upon. For example, the function dfoo
would perform the function foo
on double
possibly returning a double
.
If two character sets are prefixed, the first set of characters describes the output and the second the input type. For example, the function dzbar
would perform the function bar
on double
complex
and return a double
.
Such character sets are listed as follows:
double
)*void
)float
)*void
)Throughout the library, complex types are specified via *void
pointers. These routines will sometimes be suffixed by sub, to represent that a function has been made into a subroutine. This allows programmers to use whatever complex types they are already using, as long as the memory pointed to is of the form of two adjacent floating point types, the first and second representing real and imaginary components of the complex number.
The goal of using binned types is to obtain either more accurate or reproducible summation of floating point numbers. In reproducible summation, floating point numbers are split into several slices along predefined boundaries in the exponent range. The space between two boundaries is called a bin. Binned types are composed of several accumulators, each accumulating the slices in a particular bin. The accumulators correspond to the largest consecutive nonzero bins seen so far.
The parameter fold
describes how many accumulators are used in the binned types supplied to a subroutine (an binned type with k
accumulators is k-fold
). The default value for this parameter can be set in config.h. If you are unsure of what value to use for fold
, we recommend 3. Note that the fold
of binned types must be the same for all binned types that interact with each other. Operations on more than one binned type assume all binned types being operated upon have the same fold
. Note that the fold
of an binned type may not be changed once the type has been allocated. A common use case would be to set the value of fold
as a global macro in your code and supply it to all binned functions that you use.
In reproBLAS, two copies of the BLAS are provided. The functions that share the same name as their BLAS counterparts perform reproducible versions of their corresponding operations using the default fold value specified in config.h. The functions that are prefixed by the character 'r' allow the user to specify their own fold for the underlying binned types.
void reproBLAS_cdotc_sub | ( | const int | N, |
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotc | ||
) |
Compute the reproducible conjugated dot product of complex single precision vectors X and Y.
Return the sum of the pairwise products of X and conjugated Y.
The reproducible dot product is computed with binned types of default fold using binnedBLAS_cbcdotc()
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex single precision vector |
incY | Y vector stride (use every incY'th element) |
dotc | scalar return |
void reproBLAS_cdotu_sub | ( | const int | N, |
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotu | ||
) |
Compute the reproducible unconjugated dot product of complex single precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types of default fold using binnedBLAS_cbcdotu()
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex single precision vector |
incY | Y vector stride (use every incY'th element) |
dotu | scalar return |
void reproBLAS_cgemm | ( | const char | Order, |
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | B, | ||
const int | ldb, | ||
const void * | beta, | ||
void * | C, | ||
const int | ldc | ||
) |
Add to complex single precision matrix C the reproducible matrix-matrix product of complex single precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T or op(X) = X**H,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types of default fold with binnedBLAS_cbcgemm()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | complex single precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | complex single precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | complex single precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_cgemv | ( | const char | Order, |
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | X, | ||
const int | incX, | ||
const void * | beta, | ||
void * | Y, | ||
const int | incY | ||
) |
Add to complex single precision vector Y the reproducible matrix-vector product of complex single precision matrix A and complex single precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y or y := alpha*A**H*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types of default fold with binnedBLAS_cbcgemv()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | complex single precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | complex single precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | complex single precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_csum_sub | ( | const int | N, |
const void * | X, | ||
const int | incX, | ||
void * | sum | ||
) |
Compute the reproducible sum of complex single precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types of default fold using binnedBLAS_cbcsum()
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
sum | scalar return |
double reproBLAS_dasum | ( | const int | N, |
const double * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of double precision vector X.
Return the sum of absolute values of elements in X.
The reproducible absolute sum is computed with binned types of default fold using binnedBLAS_dbdasum()
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_ddot | ( | const int | N, |
const double * | X, | ||
const int | incX, | ||
const double * | Y, | ||
const int | incY | ||
) |
Compute the reproducible dot product of double precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types of default fold using binnedBLAS_dbddot()
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
Y | double precision vector |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_dgemm | ( | const char | Order, |
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const double | alpha, | ||
const double * | A, | ||
const int | lda, | ||
const double * | B, | ||
const int | ldb, | ||
const double | beta, | ||
double * | C, | ||
const int | ldc | ||
) |
Add to double precision matrix C the reproducible matrix-matrix product of double precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types of default fold with binnedBLAS_dbdgemm()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | double precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | double precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | double precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_dgemv | ( | const char | Order, |
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const double | alpha, | ||
const double * | A, | ||
const int | lda, | ||
const double * | X, | ||
const int | incX, | ||
const double | beta, | ||
double * | Y, | ||
const int | incY | ||
) |
Add to double precision vector Y the reproducible matrix-vector product of double precision matrix A and double precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types of default fold with binnedBLAS_dbdgemv()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | double precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | double precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | double precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
double reproBLAS_dnrm2 | ( | const int | N, |
const double * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of double precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types of default fold using binnedBLAS_dbdssq()
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_dsum | ( | const int | N, |
const double * | X, | ||
const int | incX | ||
) |
Compute the reproducible sum of double precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types of default fold using binnedBLAS_dbdsum()
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_dzasum | ( | const int | N, |
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of complex double precision vector X.
Return the sum of magnitudes of elements of X.
The reproducible absolute sum is computed with binned types of default fold using binnedBLAS_dbzasum()
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_dznrm2 | ( | const int | N, |
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of complex double precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types of default fold using binnedBLAS_dbzssq()
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
void reproBLAS_rcdotc_sub | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotc | ||
) |
Compute the reproducible conjugated dot product of complex single precision vectors X and Y.
Return the sum of the pairwise products of X and conjugated Y.
The reproducible dot product is computed with binned types using binnedBLAS_cbcdotc()
fold | the fold of the binned types |
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex single precision vector |
incY | Y vector stride (use every incY'th element) |
dotc | scalar return |
void reproBLAS_rcdotu_sub | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotu | ||
) |
Compute the reproducible unconjugated dot product of complex single precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types using binnedBLAS_cbcdotu()
fold | the fold of the binned types |
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex single precision vector |
incY | Y vector stride (use every incY'th element) |
dotu | scalar return |
void reproBLAS_rcgemm | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | B, | ||
const int | ldb, | ||
const void * | beta, | ||
void * | C, | ||
const int | ldc | ||
) |
Add to complex single precision matrix C the reproducible matrix-matrix product of complex single precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T or op(X) = X**H,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types with binnedBLAS_cbcgemm()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | complex single precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | complex single precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | complex single precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_rcgemv | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | X, | ||
const int | incX, | ||
const void * | beta, | ||
void * | Y, | ||
const int | incY | ||
) |
Add to complex single precision vector Y the reproducible matrix-vector product of complex single precision matrix A and complex single precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y or y := alpha*A**H*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types with binnedBLAS_cbcgemv()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | complex single precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | complex single precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | complex single precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_rcsum_sub | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX, | ||
void * | sum | ||
) |
Compute the reproducible sum of complex single precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types using binnedBLAS_cbcsum()
fold | the fold of the binned types |
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
sum | scalar return |
double reproBLAS_rdasum | ( | const int | fold, |
const int | N, | ||
const double * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of double precision vector X.
Return the sum of absolute values of elements in X.
The reproducible absolute sum is computed with binned types using binnedBLAS_dbdasum()
fold | the fold of the binned types |
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_rddot | ( | const int | fold, |
const int | N, | ||
const double * | X, | ||
const int | incX, | ||
const double * | Y, | ||
const int | incY | ||
) |
Compute the reproducible dot product of double precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types using binnedBLAS_dbddot()
fold | the fold of the binned types |
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
Y | double precision vector |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_rdgemm | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const double | alpha, | ||
const double * | A, | ||
const int | lda, | ||
const double * | B, | ||
const int | ldb, | ||
const double | beta, | ||
double * | C, | ||
const int | ldc | ||
) |
Add to double precision matrix C the reproducible matrix-matrix product of double precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types with binnedBLAS_dbdgemm()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | double precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | double precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | double precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_rdgemv | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const double | alpha, | ||
const double * | A, | ||
const int | lda, | ||
const double * | X, | ||
const int | incX, | ||
const double | beta, | ||
double * | Y, | ||
const int | incY | ||
) |
Add to double precision vector Y the reproducible matrix-vector product of double precision matrix A and double precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types with binnedBLAS_dbdgemv()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | double precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | double precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | double precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
double reproBLAS_rdnrm2 | ( | const int | fold, |
const int | N, | ||
const double * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of double precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types using binnedBLAS_dbdssq()
fold | the fold of the binned types |
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_rdsum | ( | const int | fold, |
const int | N, | ||
const double * | X, | ||
const int | incX | ||
) |
Compute the reproducible sum of double precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types using binnedBLAS_dbdsum()
fold | the fold of the binned types |
N | vector length |
X | double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_rdzasum | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of complex double precision vector X.
Return the sum of magnitudes of elements of X.
The reproducible absolute sum is computed with binned types using binnedBLAS_dbzasum()
fold | the fold of the binned types |
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
double reproBLAS_rdznrm2 | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of complex double precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types using binnedBLAS_dbzssq()
fold | the fold of the binned types |
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_rsasum | ( | const int | fold, |
const int | N, | ||
const float * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of single precision vector X.
Return the sum of absolute values of elements in X.
The reproducible absolute sum is computed with binned types using binnedBLAS_sbsasum()
fold | the fold of the binned types |
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_rscasum | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of complex single precision vector X.
Return the sum of magnitudes of elements of X.
The reproducible absolute sum is computed with binned types using binnedBLAS_sbcasum()
fold | the fold of the binned types |
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_rscnrm2 | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of complex single precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types using binnedBLAS_sbcssq()
fold | the fold of the binned types |
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_rsdot | ( | const int | fold, |
const int | N, | ||
const float * | X, | ||
const int | incX, | ||
const float * | Y, | ||
const int | incY | ||
) |
Compute the reproducible dot product of single precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types using binnedBLAS_sbsdot()
fold | the fold of the binned types |
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
Y | single precision vector |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_rsgemm | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const float | alpha, | ||
const float * | A, | ||
const int | lda, | ||
const float * | B, | ||
const int | ldb, | ||
const float | beta, | ||
float * | C, | ||
const int | ldc | ||
) |
Add to single precision matrix C the reproducible matrix-matrix product of single precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types with binnedBLAS_sbsgemm()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | single precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | single precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | single precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_rsgemv | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const float | alpha, | ||
const float * | A, | ||
const int | lda, | ||
const float * | X, | ||
const int | incX, | ||
const float | beta, | ||
float * | Y, | ||
const int | incY | ||
) |
Add to single precision vector Y the reproducible matrix-vector product of single precision matrix A and single precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types with binnedBLAS_sbsgemv()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | single precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | single precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | single precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
float reproBLAS_rsnrm2 | ( | const int | fold, |
const int | N, | ||
const float * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of single precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types using binnedBLAS_sbsssq()
fold | the fold of the binned types |
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_rssum | ( | const int | fold, |
const int | N, | ||
const float * | X, | ||
const int | incX | ||
) |
Compute the reproducible sum of single precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types using binnedBLAS_sbssum()
fold | the fold of the binned types |
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
void reproBLAS_rzdotc_sub | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotc | ||
) |
Compute the reproducible conjugated dot product of complex double precision vectors X and Y.
Return the sum of the pairwise products of X and conjugated Y.
The reproducible dot product is computed with binned types using binnedBLAS_zbzdotc()
fold | the fold of the binned types |
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex double precision vector |
incY | Y vector stride (use every incY'th element) |
dotc | scalar return |
void reproBLAS_rzdotu_sub | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotu | ||
) |
Compute the reproducible unconjugated dot product of complex double precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types using binnedBLAS_zbzdotu()
fold | the fold of the binned types |
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex double precision vector |
incY | Y vector stride (use every incY'th element) |
dotu | scalar return |
void reproBLAS_rzgemm | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | B, | ||
const int | ldb, | ||
const void * | beta, | ||
void * | C, | ||
const int | ldc | ||
) |
Add to complex double precision matrix C the reproducible matrix-matrix product of complex double precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T or op(X) = X**H,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types with binnedBLAS_zbzgemm()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | complex double precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | complex double precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | complex double precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_rzgemv | ( | const int | fold, |
const char | Order, | ||
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | X, | ||
const int | incX, | ||
const void * | beta, | ||
void * | Y, | ||
const int | incY | ||
) |
Add to complex double precision vector Y the reproducible matrix-vector product of complex double precision matrix A and complex double precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y or y := alpha*A**H*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types with binnedBLAS_zbzgemv()
fold | the fold of the binned types |
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | complex double precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | complex double precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | complex double precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_rzsum_sub | ( | const int | fold, |
const int | N, | ||
const void * | X, | ||
const int | incX, | ||
void * | sum | ||
) |
Compute the reproducible sum of complex double precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types using binnedBLAS_zbzsum()
fold | the fold of the binned types |
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
sum | scalar return |
float reproBLAS_sasum | ( | const int | N, |
const float * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of single precision vector X.
Return the sum of absolute values of elements in X.
The reproducible absolute sum is computed with binned types of default fold using binnedBLAS_sbsasum()
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_scasum | ( | const int | N, |
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible absolute sum of complex single precision vector X.
Return the sum of magnitudes of elements of X.
The reproducible absolute sum is computed with binned types of default fold using binnedBLAS_sbcasum()
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_scnrm2 | ( | const int | N, |
const void * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of complex single precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types of default fold using binnedBLAS_sbcssq()
N | vector length |
X | complex single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_sdot | ( | const int | N, |
const float * | X, | ||
const int | incX, | ||
const float * | Y, | ||
const int | incY | ||
) |
Compute the reproducible dot product of single precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types of default fold using binnedBLAS_sbsdot()
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
Y | single precision vector |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_sgemm | ( | const char | Order, |
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const float | alpha, | ||
const float * | A, | ||
const int | lda, | ||
const float * | B, | ||
const int | ldb, | ||
const float | beta, | ||
float * | C, | ||
const int | ldc | ||
) |
Add to single precision matrix C the reproducible matrix-matrix product of single precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types of default fold with binnedBLAS_sbsgemm()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | single precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | single precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | single precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_sgemv | ( | const char | Order, |
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const float | alpha, | ||
const float * | A, | ||
const int | lda, | ||
const float * | X, | ||
const int | incX, | ||
const float | beta, | ||
float * | Y, | ||
const int | incY | ||
) |
Add to single precision vector Y the reproducible matrix-vector product of single precision matrix A and single precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types of default fold with binnedBLAS_sbsgemv()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' or 'c' or 'C' to transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | single precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | single precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | single precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
float reproBLAS_snrm2 | ( | const int | N, |
const float * | X, | ||
const int | incX | ||
) |
Compute the reproducible Euclidian norm of single precision vector X.
Return the square root of the sum of the squared elements of X.
The reproducible Euclidian norm is computed with scaled binned types of default fold using binnedBLAS_sbsssq()
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
float reproBLAS_ssum | ( | const int | N, |
const float * | X, | ||
const int | incX | ||
) |
Compute the reproducible sum of single precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types of default fold using binnedBLAS_sbssum()
N | vector length |
X | single precision vector |
incX | X vector stride (use every incX'th element) |
void reproBLAS_zdotc_sub | ( | const int | N, |
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotc | ||
) |
Compute the reproducible conjugated dot product of complex double precision vectors X and Y.
Return the sum of the pairwise products of X and conjugated Y.
The reproducible dot product is computed with binned types of default fold using binnedBLAS_zbzdotc()
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex double precision vector |
incY | Y vector stride (use every incY'th element) |
dotc | scalar return |
void reproBLAS_zdotu_sub | ( | const int | N, |
const void * | X, | ||
const int | incX, | ||
const void * | Y, | ||
const int | incY, | ||
void * | dotu | ||
) |
Compute the reproducible unconjugated dot product of complex double precision vectors X and Y.
Return the sum of the pairwise products of X and Y.
The reproducible dot product is computed with binned types of default fold using binnedBLAS_zbzdotu()
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
Y | complex double precision vector |
incY | Y vector stride (use every incY'th element) |
dotu | scalar return |
void reproBLAS_zgemm | ( | const char | Order, |
const char | TransA, | ||
const char | TransB, | ||
const int | M, | ||
const int | N, | ||
const int | K, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | B, | ||
const int | ldb, | ||
const void * | beta, | ||
void * | C, | ||
const int | ldc | ||
) |
Add to complex double precision matrix C the reproducible matrix-matrix product of complex double precision matrices A and B.
Performs one of the matrix-matrix operations
C := alpha*op(A)*op(B) + beta*C,
where op(X) is one of
op(X) = X or op(X) = X**T or op(X) = X**H,
alpha and beta are scalars, A and B and C are matrices with op(A) an M by K matrix, op(B) a K by N matrix, and C is an M by N matrix.
The matrix-matrix product is computed using binned types of default fold with binnedBLAS_zbzgemm()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
TransB | a character specifying whether or not to transpose B before taking the matrix-matrix product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix op(A) and of the matrix C. |
N | number of columns of matrix op(B) and of the matrix C. |
K | number of columns of matrix op(A) and columns of the matrix op(B). |
alpha | scalar alpha |
A | complex double precision matrix of dimension (ma, lda) in row-major or (lda, na) in column-major. (ma, na) is (M, K) if A is not transposed and (K, M) otherwise. |
lda | the first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major. |
B | complex double precision matrix of dimension (mb, ldb) in row-major or (ldb, nb) in column-major. (mb, nb) is (K, N) if B is not transposed and (N, K) otherwise. |
ldb | the first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major. |
beta | scalar beta |
C | complex double precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major. |
ldc | the first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major. |
void reproBLAS_zgemv | ( | const char | Order, |
const char | TransA, | ||
const int | M, | ||
const int | N, | ||
const void * | alpha, | ||
const void * | A, | ||
const int | lda, | ||
const void * | X, | ||
const int | incX, | ||
const void * | beta, | ||
void * | Y, | ||
const int | incY | ||
) |
Add to complex double precision vector Y the reproducible matrix-vector product of complex double precision matrix A and complex double precision vector X.
Performs one of the matrix-vector operations
y := alpha*A*x + beta*y or y := alpha*A**T*x + beta*y or y := alpha*A**H*x + beta*y,
where alpha and beta are scalars, x and y are vectors, and A is an M by N matrix.
The matrix-vector product is computed using binned types of default fold with binnedBLAS_zbzgemv()
Order | a character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major) |
TransA | a character specifying whether or not to transpose A before taking the matrix-vector product ('n' or 'N' not to transpose, 't' or 'T' to transpose, 'c' or 'C' to conjugate transpose) |
M | number of rows of matrix A |
N | number of columns of matrix A |
alpha | scalar alpha |
A | complex double precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major |
lda | the first dimension of A as declared in the calling program |
X | complex double precision vector of at least size N if not transposed or size M otherwise |
incX | X vector stride (use every incX'th element) |
beta | scalar beta |
Y | complex double precision vector Y of at least size M if not transposed or size N otherwise |
incY | Y vector stride (use every incY'th element) |
void reproBLAS_zsum_sub | ( | const int | N, |
const void * | X, | ||
const int | incX, | ||
void * | sum | ||
) |
Compute the reproducible sum of complex double precision vector X.
Return the sum of X.
The reproducible sum is computed with binned types of default fold using binnedBLAS_zbzsum()
N | vector length |
X | complex double precision vector |
incX | X vector stride (use every incX'th element) |
sum | scalar return |