ReproBLAS
Functions
binnedBLAS.h File Reference

binnedBLAS.h defines BLAS Methods that operate on binned types. More...

#include "binned.h"
#include "reproBLAS.h"

Go to the source code of this file.

Functions

float binnedBLAS_samax (const int N, const float *X, const int incX)
 Find maximum absolute value in vector of single precision. More...
 
double binnedBLAS_damax (const int N, const double *X, const int incX)
 Find maximum absolute value in vector of double precision. More...
 
void binnedBLAS_camax_sub (const int N, const void *X, const int incX, void *amax)
 Find maximum magnitude in vector of complex single precision. More...
 
void binnedBLAS_zamax_sub (const int N, const void *X, const int incX, void *amax)
 Find maximum magnitude in vector of complex double precision. More...
 
float binnedBLAS_samaxm (const int N, const float *X, const int incX, const float *Y, const int incY)
 Find maximum absolute value pairwise product between vectors of single precision. More...
 
double binnedBLAS_damaxm (const int N, const double *X, const int incX, const double *Y, const int incY)
 Find maximum absolute value pairwise product between vectors of double precision. More...
 
void binnedBLAS_camaxm_sub (const int N, const void *X, const int incX, const void *Y, const int incY, void *amaxm)
 Find maximum magnitude pairwise product between vectors of complex single precision. More...
 
void binnedBLAS_zamaxm_sub (const int N, const void *X, const int incX, const void *Y, const int incY, void *amaxm)
 Find maximum magnitude pairwise product between vectors of complex double precision. More...
 
void binnedBLAS_dbdsum (const int fold, const int N, const double *X, const int incX, double_binned *Y)
 Add to binned double precision Y the sum of double precision vector X. More...
 
void binnedBLAS_dmdsum (const int fold, const int N, const double *X, const int incX, double *priY, const int incpriY, double *carY, const int inccarY)
 Add to manually specified binned double precision Y the sum of double precision vector X. More...
 
void binnedBLAS_dbdasum (const int fold, const int N, const double *X, const int incX, double_binned *Y)
 Add to binned double precision Y the absolute sum of double precision vector X. More...
 
void binnedBLAS_dmdasum (const int fold, const int N, const double *X, const int incX, double *priY, const int incpriY, double *carY, const int inccarY)
 Add to manually specified binned double precision Y the absolute sum of double precision vector X. More...
 
double binnedBLAS_dbdssq (const int fold, const int N, const double *X, const int incX, const double scaleY, double_binned *Y)
 Add to scaled binned double precision Y the scaled sum of squares of elements of double precision vector X. More...
 
double binnedBLAS_dmdssq (const int fold, const int N, const double *X, const int incX, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY)
 Add to scaled manually specified binned double precision Y the scaled sum of squares of elements of double precision vector X. More...
 
void binnedBLAS_dbddot (const int fold, const int N, const double *X, const int incX, const double *Y, const int incY, double_binned *Z)
 Add to binned double precision Z the dot product of double precision vectors X and Y. More...
 
void binnedBLAS_dmddot (const int fold, const int N, const double *X, const int incX, const double *Y, const int incY, double *manZ, const int incmanZ, double *carZ, const int inccarZ)
 Add to manually specified binned double precision Z the dot product of double precision vectors X and Y. More...
 
void binnedBLAS_zbzsum (const int fold, const int N, const void *X, const int incX, double_binned *Y)
 Add to binned complex double precision Y the sum of complex double precision vector X. More...
 
void binnedBLAS_zmzsum (const int fold, const int N, const void *X, const int incX, double *priY, const int incpriY, double *carY, const int inccarY)
 Add to manually specified binned complex double precision Y the sum of complex double precision vector X. More...
 
void binnedBLAS_dbzasum (const int fold, const int N, const void *X, const int incX, double_binned *Y)
 Add to binned double precision Y the absolute sum of complex double precision vector X. More...
 
void binnedBLAS_dmzasum (const int fold, const int N, const void *X, const int incX, double *priY, const int incpriY, double *carY, const int inccarY)
 Add to manually specified binned double precision Y the absolute sum of complex double precision vector X. More...
 
double binnedBLAS_dbzssq (const int fold, const int N, const void *X, const int incX, const double scaleY, double_binned *Y)
 Add to scaled binned double precision Y the scaled sum of squares of elements of complex double precision vector X. More...
 
double binnedBLAS_dmzssq (const int fold, const int N, const void *X, const int incX, const double scaleY, double *priY, const int incpriY, double *carY, const int inccarY)
 Add to scaled manually specified binned double precision Y the scaled sum of squares of elements of complex double precision vector X. More...
 
void binnedBLAS_zbzdotu (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, double_binned *Z)
 Add to binned complex double precision Z the unconjugated dot product of complex double precision vectors X and Y. More...
 
void binnedBLAS_zmzdotu (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, double *manZ, const int incmanZ, double *carZ, const int inccarZ)
 Add to manually specified binned complex double precision Z the unconjugated dot product of complex double precision vectors X and Y. More...
 
void binnedBLAS_zbzdotc (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, double_binned *Z)
 Add to binned complex double precision Z the conjugated dot product of complex double precision vectors X and Y. More...
 
void binnedBLAS_zmzdotc (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, double *manZ, const int incmanZ, double *carZ, const int inccarZ)
 Add to manually specified binned complex double precision Z the conjugated dot product of complex double precision vectors X and Y. More...
 
void binnedBLAS_sbssum (const int fold, const int N, const float *X, const int incX, float_binned *Y)
 Add to binned single precision Y the sum of single precision vector X. More...
 
void binnedBLAS_smssum (const int fold, const int N, const float *X, const int incX, float *priY, const int incpriY, float *carY, const int inccarY)
 Add to manually specified binned single precision Y the sum of single precision vector X. More...
 
void binnedBLAS_sbsasum (const int fold, const int N, const float *X, const int incX, float_binned *Y)
 Add to binned single precision Y the absolute sum of single precision vector X. More...
 
void binnedBLAS_smsasum (const int fold, const int N, const float *X, const int incX, float *priY, const int incpriY, float *carY, const int inccarY)
 Add to manually specified binned single precision Y the absolute sum of double precision vector X. More...
 
float binnedBLAS_sbsssq (const int fold, const int N, const float *X, const int incX, const float scaleY, float_binned *Y)
 Add to scaled binned single precision Y the scaled sum of squares of elements of single precision vector X. More...
 
float binnedBLAS_smsssq (const int fold, const int N, const float *X, const int incX, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY)
 Add to scaled manually specified binned single precision Y the scaled sum of squares of elements of single precision vector X. More...
 
void binnedBLAS_sbsdot (const int fold, const int N, const float *X, const int incX, const float *Y, const int incY, float_binned *Z)
 Add to binned single precision Z the dot product of single precision vectors X and Y. More...
 
void binnedBLAS_smsdot (const int fold, const int N, const float *X, const int incX, const float *Y, const int incY, float *manZ, const int incmanZ, float *carZ, const int inccarZ)
 Add to manually specified binned single precision Z the dot product of single precision vectors X and Y. More...
 
void binnedBLAS_cbcsum (const int fold, const int N, const void *X, const int incX, float_binned *Y)
 Add to binned complex single precision Y the sum of complex single precision vector X. More...
 
void binnedBLAS_cmcsum (const int fold, const int N, const void *X, const int incX, float *priY, const int incpriY, float *carY, const int inccarY)
 Add to manually specified binned complex single precision Y the sum of complex single precision vector X. More...
 
void binnedBLAS_sbcasum (const int fold, const int N, const void *X, const int incX, float_binned *Y)
 Add to binned single precision Y the absolute sum of complex single precision vector X. More...
 
void binnedBLAS_smcasum (const int fold, const int N, const void *X, const int incX, float *priY, const int incpriY, float *carY, const int inccarY)
 Add to manually specified binned single precision Y the absolute sum of complex single precision vector X. More...
 
float binnedBLAS_sbcssq (const int fold, const int N, const void *X, const int incX, const float scaleY, float_binned *Y)
 Add to scaled binned single precision Y the scaled sum of squares of elements of complex single precision vector X. More...
 
float binnedBLAS_smcssq (const int fold, const int N, const void *X, const int incX, const float scaleY, float *priY, const int incpriY, float *carY, const int inccarY)
 Add to scaled manually specified binned single precision Y the scaled sum of squares of elements of complex single precision vector X. More...
 
void binnedBLAS_cbcdotu (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, float_binned *Z)
 Add to binned complex single precision Z the unconjugated dot product of complex single precision vectors X and Y. More...
 
void binnedBLAS_cmcdotu (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, float *manZ, const int incmanZ, float *carZ, const int inccarZ)
 Add to manually specified binned complex single precision Z the unconjugated dot product of complex single precision vectors X and Y. More...
 
void binnedBLAS_cbcdotc (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, float_binned *Z)
 Add to binned complex single precision Z the conjugated dot product of complex single precision vectors X and Y. More...
 
void binnedBLAS_cmcdotc (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, float *manZ, const int incmanZ, float *carZ, const int inccarZ)
 Add to manually specified binned complex single precision Z the conjugated dot product of complex single precision vectors X and Y. More...
 
void binnedBLAS_dbdgemv (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, double_binned *Y, const int incY)
 Add to binned double precision vector Y the matrix-vector product of double precision matrix A and double precision vector X. More...
 
void binnedBLAS_dbdgemm (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, double_binned *C, const int ldc)
 Add to binned double precision matrix C the matrix-matrix product of double precision matrices A and B. More...
 
void binnedBLAS_sbsgemv (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, float_binned *Y, const int incY)
 Add to binned single precision vector Y the matrix-vector product of single precision matrix A and single precision vector X. More...
 
void binnedBLAS_sbsgemm (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, float_binned *C, const int ldc)
 Add to binned single precision matrix C the matrix-matrix product of single precision matrices A and B. More...
 
void binnedBLAS_zbzgemv (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, double_complex_binned *Y, const int incY)
 Add to binned complex double precision vector Y the matrix-vector product of complex double precision matrix A and complex double precision vector X. More...
 
void binnedBLAS_zbzgemm (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, double_complex_binned *C, const int ldc)
 Add to binned complex double precision matrix C the matrix-matrix product of complex double precision matrices A and B. More...
 
void binnedBLAS_cbcgemv (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, float_complex_binned *Y, const int incY)
 Add to binned complex single precision vector Y the matrix-vector product of complex single precision matrix A and complex single precision vector X. More...
 
void binnedBLAS_cbcgemm (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, float_complex_binned *C, const int ldc)
 Add to binned complex single precision matrix C the matrix-matrix product of complex single precision matrices A and B. More...
 

Detailed Description

binnedBLAS.h defines BLAS Methods that operate on binned types.

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:

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.

Power users of the library may find themselves wanting to manually specify the underlying primary and carry vectors of an binned type themselves. If you do not know what these are, don't worry about the manually specified binned types.

Function Documentation

void binnedBLAS_camax_sub ( const int  N,
const void *  X,
const int  incX,
void *  amax 
)

Find maximum magnitude in vector of complex single precision.

Returns the magnitude of the element of maximum magnitude in an array.

Parameters
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
amaxscalar return
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_camaxm_sub ( const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
void *  amaxm 
)

Find maximum magnitude pairwise product between vectors of complex single precision.

Returns the magnitude of the pairwise product of maximum magnitude between X and Y.

Parameters
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Ycomplex single precision vector
incYY vector stride (use every incY'th element)
amaxmscalar return
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_cbcdotc ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
float_complex_binned Z 
)

Add to binned complex single precision Z the conjugated dot product of complex single precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and conjugated Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Ycomplex single precision vector
incYY vector stride (use every incY'th element)
Zbinned scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_cbcdotu ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
float_complex_binned Z 
)

Add to binned complex single precision Z the unconjugated dot product of complex single precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Ycomplex single precision vector
incYY vector stride (use every incY'th element)
Zbinned scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_cbcgemm ( 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,
float_complex_binned C,
const int  ldc 
)

Add to binned complex single precision matrix C the matrix-matrix product of complex single precision matrices A and B.

Performs one of the matrix-matrix operations

C := alpha*op(A)*op(B) + C,

where op(X) is one of

op(X) = X or op(X) = X**T or op(X) = X**H,

alpha is a scalar, A and B are matrices with op(A) an M by K matrix and op(B) a K by N matrix, and C is an binned M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
TransBa 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)
Mnumber of rows of matrix op(A) and of the matrix C.
Nnumber of columns of matrix op(B) and of the matrix C.
Knumber of columns of matrix op(A) and columns of the matrix op(B).
alphascalar alpha
Acomplex 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.
ldathe first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major.
Bcomplex 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.
ldbthe first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major.
Cbinned complex single precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major.
ldcthe first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major.
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_cbcgemv ( 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,
float_complex_binned Y,
const int  incY 
)

Add to binned complex single precision vector Y the 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 + y or y := alpha*A**T*x + y or y := alpha*A**H*x + y,

where alpha is a scalar, x is a vector, y is an binned vector, and A is an M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
Mnumber of rows of matrix A
Nnumber of columns of matrix A
alphascalar alpha
Acomplex single precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major
ldathe first dimension of A as declared in the calling program
Xcomplex single precision vector of at least size N if not transposed or size M otherwise
incXX vector stride (use every incX'th element)
Ybinned complex single precision vector Y of at least size M if not transposed or size N otherwise
incYY vector stride (use every incY'th element)
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_cbcsum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
float_complex_binned Y 
)

Add to binned complex single precision Y the sum of complex single precision vector X.

Add to Y the binned sum of X.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_cmcdotc ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
float *  priZ,
const int  incpriZ,
float *  carZ,
const int  inccarZ 
)

Add to manually specified binned complex single precision Z the conjugated dot product of complex single precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and conjugated Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Ycomplex single precision vector
incYY vector stride (use every incY'th element)
priZZ's primary vector
incpriZstride within Z's primary vector (use every incpriZ'th element)
carZZ's carry vector
inccarZstride within Z's carry vector (use every inccarZ'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_cmcdotu ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
float *  priZ,
const int  incpriZ,
float *  carZ,
const int  inccarZ 
)

Add to manually specified binned complex single precision Z the unconjugated dot product of complex single precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Ycomplex single precision vector
incYY vector stride (use every incY'th element)
priZZ's primary vector
incpriZstride within Z's primary vector (use every incpriZ'th element)
carZZ's carry vector
inccarZstride within Z's carry vector (use every inccarZ'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_cmcsum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
float *  priY,
const int  incpriY,
float *  carY,
const int  inccarY 
)

Add to manually specified binned complex single precision Y the sum of complex single precision vector X.

Add to Y the binned sum of X.

Parameters
foldthe fold of the binned types
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016
double binnedBLAS_damax ( const int  N,
const double *  X,
const int  incX 
)

Find maximum absolute value in vector of double precision.

Returns the absolute value of the element of maximum absolute value in an array.

Parameters
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
Returns
absolute maximum value of X
Author
Peter Ahrens
Date
15 Jan 2016
double binnedBLAS_damaxm ( const int  N,
const double *  X,
const int  incX,
const double *  Y,
const int  incY 
)

Find maximum absolute value pairwise product between vectors of double precision.

Returns the absolute value of the pairwise product of maximum absolute value between X and Y.

Parameters
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
Ydouble precision vector
incYY vector stride (use every incY'th element)
Returns
absolute maximum value multiple of X and Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_dbdasum ( const int  fold,
const int  N,
const double *  X,
const int  incX,
double_binned Y 
)

Add to binned double precision Y the absolute sum of double precision vector X.

Add to Y the binned sum of absolute values of elements in X.

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_dbddot ( const int  fold,
const int  N,
const double *  X,
const int  incX,
const double *  Y,
const int  incY,
double_binned Z 
)

Add to binned double precision Z the dot product of double precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
Ydouble precision vector
incYY vector stride (use every incY'th element)
Zbinned scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_dbdgemm ( 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,
double_binned C,
const int  ldc 
)

Add to binned double precision matrix C the matrix-matrix product of double precision matrices A and B.

Performs one of the matrix-matrix operations

C := alpha*op(A)*op(B) + C,

where op(X) is one of

op(X) = X or op(X) = X**T,

alpha is a scalar, A and B are matrices with op(A) an M by K matrix and op(B) a K by N matrix, and C is an binned M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
TransBa 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)
Mnumber of rows of matrix op(A) and of the matrix C.
Nnumber of columns of matrix op(B) and of the matrix C.
Knumber of columns of matrix op(A) and columns of the matrix op(B).
alphascalar alpha
Adouble 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.
ldathe first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major.
Bdouble 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.
ldbthe first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major.
Cbinned double precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major.
ldcthe first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major.
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_dbdgemv ( 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,
double_binned Y,
const int  incY 
)

Add to binned double precision vector Y the matrix-vector product of double precision matrix A and double precision vector X.

Performs one of the matrix-vector operations

y := alpha*A*x + y or y := alpha*A**T*x + y,

where alpha is a scalar, x is a vector, y is an binned vector, and A is an M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
Mnumber of rows of matrix A
Nnumber of columns of matrix A
alphascalar alpha
Adouble precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major
ldathe first dimension of A as declared in the calling program
Xdouble precision vector of at least size N if not transposed or size M otherwise
incXX vector stride (use every incX'th element)
Ybinned double precision vector Y of at least size M if not transposed or size N otherwise
incYY vector stride (use every incY'th element)
Author
Peter Ahrens
Date
18 Jan 2016
double binnedBLAS_dbdssq ( const int  fold,
const int  N,
const double *  X,
const int  incX,
const double  scaleY,
double_binned Y 
)

Add to scaled binned double precision Y the scaled sum of squares of elements of double precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_dscale()

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
Ybinned scalar Y
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_dbdsum ( const int  fold,
const int  N,
const double *  X,
const int  incX,
double_binned Y 
)

Add to binned double precision Y the sum of double precision vector X.

Add to Y the binned sum of X.

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_dbzasum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
double_binned Y 
)

Add to binned double precision Y the absolute sum of complex double precision vector X.

Add to Y the binned sum of magnitudes of elements of X.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
double binnedBLAS_dbzssq ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const double  scaleY,
double_binned Y 
)

Add to scaled binned double precision Y the scaled sum of squares of elements of complex double precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_dscale()

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
Ybinned scalar Y
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_dmdasum ( const int  fold,
const int  N,
const double *  X,
const int  incX,
double *  priY,
const int  incpriY,
double *  carY,
const int  inccarY 
)

Add to manually specified binned double precision Y the absolute sum of double precision vector X.

Add to Y the binned sum of absolute values of elements in X.

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_dmddot ( const int  fold,
const int  N,
const double *  X,
const int  incX,
const double *  Y,
const int  incY,
double *  priZ,
const int  incpriZ,
double *  carZ,
const int  inccarZ 
)

Add to manually specified binned double precision Z the dot product of double precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
Ydouble precision vector
incYY vector stride (use every incY'th element)
priZZ's primary vector
incpriZstride within Z's primary vector (use every incpriZ'th element)
carZZ's carry vector
inccarZstride within Z's carry vector (use every inccarZ'th element)
Author
Peter Ahrens
Date
15 Jan 2016
double binnedBLAS_dmdssq ( const int  fold,
const int  N,
const double *  X,
const int  incX,
const double  scaleY,
double *  priY,
const int  incpriY,
double *  carY,
const int  inccarY 
)

Add to scaled manually specified binned double precision Y the scaled sum of squares of elements of double precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_dscale()

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_dmdsum ( const int  fold,
const int  N,
const double *  X,
const int  incX,
double *  priY,
const int  incpriY,
double *  carY,
const int  inccarY 
)

Add to manually specified binned double precision Y the sum of double precision vector X.

Set Y to the binned sum of X.

Parameters
foldthe fold of the binned types
Nvector length
Xdouble precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_dmzasum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
double *  priY,
const int  incpriY,
double *  carY,
const int  inccarY 
)

Add to manually specified binned double precision Y the absolute sum of complex double precision vector X.

Add to Y the binned sum of magnitudes of elements of X.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016
double binnedBLAS_dmzssq ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const double  scaleY,
double *  priY,
const int  incpriY,
double *  carY,
const int  inccarY 
)

Add to scaled manually specified binned double precision Y the scaled sum of squares of elements of complex double precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_dscale()

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
float binnedBLAS_samax ( const int  N,
const float *  X,
const int  incX 
)

Find maximum absolute value in vector of single precision.

Returns the absolute value of the element of maximum absolute value in an array.

Parameters
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
Returns
absolute maximum value of X
Author
Peter Ahrens
Date
15 Jan 2016
float binnedBLAS_samaxm ( const int  N,
const float *  X,
const int  incX,
const float *  Y,
const int  incY 
)

Find maximum absolute value pairwise product between vectors of single precision.

Returns the absolute value of the pairwise product of maximum absolute value between X and Y.

Parameters
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
Ysingle precision vector
incYY vector stride (use every incY'th element)
Returns
absolute maximum value multiple of X and Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_sbcasum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
float_binned Y 
)

Add to binned single precision Y the absolute sum of complex single precision vector X.

Add to Y the binned sum of magnitudes of elements of X.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
float binnedBLAS_sbcssq ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const float  scaleY,
float_binned Y 
)

Add to scaled binned single precision Y the scaled sum of squares of elements of complex single precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_sscale()

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
Ybinned scalar Y
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_sbsasum ( const int  fold,
const int  N,
const float *  X,
const int  incX,
float_binned Y 
)

Add to binned single precision Y the absolute sum of single precision vector X.

Add to Y the binned sum of absolute values of elements in X.

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_sbsdot ( const int  fold,
const int  N,
const float *  X,
const int  incX,
const float *  Y,
const int  incY,
float_binned Z 
)

Add to binned single precision Z the dot product of single precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
Ysingle precision vector
incYY vector stride (use every incY'th element)
Zbinned scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_sbsgemm ( 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,
float_binned C,
const int  ldc 
)

Add to binned single precision matrix C the matrix-matrix product of single precision matrices A and B.

Performs one of the matrix-matrix operations

C := alpha*op(A)*op(B) + C,

where op(X) is one of

op(X) = X or op(X) = X**T,

alpha is a scalar, A and B are matrices with op(A) an M by K matrix and op(B) a K by N matrix, and C is an binned M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
TransBa 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)
Mnumber of rows of matrix op(A) and of the matrix C.
Nnumber of columns of matrix op(B) and of the matrix C.
Knumber of columns of matrix op(A) and columns of the matrix op(B).
alphascalar alpha
Asingle 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.
ldathe first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major.
Bsingle 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.
ldbthe first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major.
Cbinned single precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major.
ldcthe first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major.
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_sbsgemv ( 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,
float_binned Y,
const int  incY 
)

Add to binned single precision vector Y the matrix-vector product of single precision matrix A and single precision vector X.

Performs one of the matrix-vector operations

y := alpha*A*x + y or y := alpha*A**T*x + y,

where alpha is a scalar, x is a vector, y is an binned vector, and A is an M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
Mnumber of rows of matrix A
Nnumber of columns of matrix A
alphascalar alpha
Asingle precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major
ldathe first dimension of A as declared in the calling program
Xsingle precision vector of at least size N if not transposed or size M otherwise
incXX vector stride (use every incX'th element)
Ybinned single precision vector Y of at least size M if not transposed or size N otherwise
incYY vector stride (use every incY'th element)
Author
Peter Ahrens
Date
18 Jan 2016
float binnedBLAS_sbsssq ( const int  fold,
const int  N,
const float *  X,
const int  incX,
const float  scaleY,
float_binned Y 
)

Add to scaled binned single precision Y the scaled sum of squares of elements of single precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_sscale()

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
Ybinned scalar Y
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_sbssum ( const int  fold,
const int  N,
const float *  X,
const int  incX,
float_binned Y 
)

Add to binned single precision Y the sum of single precision vector X.

Add to Y the binned sum of X.

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_smcasum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
float *  priY,
const int  incpriY,
float *  carY,
const int  inccarY 
)

Add to manually specified binned single precision Y the absolute sum of complex single precision vector X.

Add to Y the binned sum of magnitudes of elements of X.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016
float binnedBLAS_smcssq ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const float  scaleY,
float *  priY,
const int  incpriY,
float *  carY,
const int  inccarY 
)

Add to scaled manually specified binned single precision Y the scaled sum of squares of elements of complex single precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_sscale()

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_smsasum ( const int  fold,
const int  N,
const float *  X,
const int  incX,
float *  priY,
const int  incpriY,
float *  carY,
const int  inccarY 
)

Add to manually specified binned single precision Y the absolute sum of double precision vector X.

Add to Y to the binned sum of absolute values of elements in X.

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_smsdot ( const int  fold,
const int  N,
const float *  X,
const int  incX,
const float *  Y,
const int  incY,
float *  priZ,
const int  incpriZ,
float *  carZ,
const int  inccarZ 
)

Add to manually specified binned single precision Z the dot product of single precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
Ysingle precision vector
incYY vector stride (use every incY'th element)
priZZ's primary vector
incpriZstride within Z's primary vector (use every incpriZ'th element)
carZZ's carry vector
inccarZstride within Z's carry vector (use every inccarZ'th element)
Author
Peter Ahrens
Date
15 Jan 2016
float binnedBLAS_smsssq ( const int  fold,
const int  N,
const float *  X,
const int  incX,
const float  scaleY,
float *  priY,
const int  incpriY,
float *  carY,
const int  inccarY 
)

Add to scaled manually specified binned single precision Y the scaled sum of squares of elements of single precision vector X.

Add to Y the scaled binned sum of the squares of each element of X. The scaling of each square is performed using binned_sscale()

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_smssum ( const int  fold,
const int  N,
const float *  X,
const int  incX,
float *  priY,
const int  incpriY,
float *  carY,
const int  inccarY 
)

Add to manually specified binned single precision Y the sum of single precision vector X.

Add to Y the binned sum of X.

Parameters
foldthe fold of the binned types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zamax_sub ( const int  N,
const void *  X,
const int  incX,
void *  amax 
)

Find maximum magnitude in vector of complex double precision.

Returns the magnitude of the element of maximum magnitude in an array.

Parameters
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
amaxscalar return
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zamaxm_sub ( const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
void *  amaxm 
)

Find maximum magnitude pairwise product between vectors of complex double precision.

Returns the magnitude of the pairwise product of maximum magnitude between X and Y.

Parameters
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Ycomplex double precision vector
incYY vector stride (use every incY'th element)
amaxmscalar return
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zbzdotc ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
double_complex_binned Z 
)

Add to binned complex double precision Z the conjugated dot product of complex double precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and conjugated Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Ycomplex double precision vector
incYY vector stride (use every incY'th element)
Zscalar return Z
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zbzdotu ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
double_complex_binned Z 
)

Add to binned complex double precision Z the unconjugated dot product of complex double precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Ycomplex double precision vector
incYY vector stride (use every incY'th element)
Zbinned scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zbzgemm ( 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,
double_complex_binned C,
const int  ldc 
)

Add to binned complex double precision matrix C the matrix-matrix product of complex double precision matrices A and B.

Performs one of the matrix-matrix operations

C := alpha*op(A)*op(B) + C,

where op(X) is one of

op(X) = X or op(X) = X**T or op(X) = X**H,

alpha is a scalar, A and B are matrices with op(A) an M by K matrix and op(B) a K by N matrix, and C is an binned M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
TransBa 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)
Mnumber of rows of matrix op(A) and of the matrix C.
Nnumber of columns of matrix op(B) and of the matrix C.
Knumber of columns of matrix op(A) and columns of the matrix op(B).
alphascalar alpha
Acomplex 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.
ldathe first dimension of A as declared in the calling program. lda must be at least na in row major or ma in column major.
Bcomplex 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.
ldbthe first dimension of B as declared in the calling program. ldb must be at least nb in row major or mb in column major.
Cbinned complex double precision matrix of dimension (M, ldc) in row-major or (ldc, N) in column-major.
ldcthe first dimension of C as declared in the calling program. ldc must be at least N in row major or M in column major.
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_zbzgemv ( 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,
double_complex_binned Y,
const int  incY 
)

Add to binned complex double precision vector Y the 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 + y or y := alpha*A**T*x + y or y := alpha*A**H*x + y,

where alpha is a scalar, x is a vector, y is an binned vector, and A is an M by N matrix.

Parameters
foldthe fold of the binned types
Ordera character specifying the matrix ordering ('r' or 'R' for row-major, 'c' or 'C' for column major)
TransAa 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)
Mnumber of rows of matrix A
Nnumber of columns of matrix A
alphascalar alpha
Acomplex double precision matrix of dimension (M, lda) in row-major or (lda, N) in column-major
ldathe first dimension of A as declared in the calling program
Xcomplex double precision vector of at least size N if not transposed or size M otherwise
incXX vector stride (use every incX'th element)
Ybinned complex double precision vector Y of at least size M if not transposed or size N otherwise
incYY vector stride (use every incY'th element)
Author
Peter Ahrens
Date
18 Jan 2016
void binnedBLAS_zbzsum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
double_complex_binned Y 
)

Add to binned complex double precision Y the sum of complex double precision vector X.

Add to Y the binned sum of X.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Ybinned scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zmzdotc ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
double *  priZ,
const int  incpriZ,
double *  carZ,
const int  inccarZ 
)

Add to manually specified binned complex double precision Z the conjugated dot product of complex double precision vectors X and Y.

Add to Z the binned sum of the pairwise products of X and conjugated Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Ycomplex double precision vector
incYY vector stride (use every incY'th element)
priZZ's primary vector
incpriZstride within Z's primary vector (use every incpriZ'th element)
carZZ's carry vector
inccarZstride within Z's carry vector (use every inccarZ'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zmzdotu ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
double *  priZ,
const int  incpriZ,
double *  carZ,
const int  inccarZ 
)

Add to manually specified binned complex double precision Z the unconjugated dot product of complex double precision vectors X and Y.

Add to Z to the binned sum of the pairwise products of X and Y.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Ycomplex double precision vector
incYY vector stride (use every incY'th element)
priZZ's primary vector
incpriZstride within Z's primary vector (use every incpriZ'th element)
carZZ's carry vector
inccarZstride within Z's carry vector (use every inccarZ'th element)
Author
Peter Ahrens
Date
15 Jan 2016
void binnedBLAS_zmzsum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
double *  priY,
const int  incpriY,
double *  carY,
const int  inccarY 
)

Add to manually specified binned complex double precision Y the sum of complex double precision vector X.

Add to Y the binned sum of X.

Parameters
foldthe fold of the binned types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
priYY's primary vector
incpriYstride within Y's primary vector (use every incpriY'th element)
carYY's carry vector
inccarYstride within Y's carry vector (use every inccarY'th element)
Author
Peter Ahrens
Date
15 Jan 2016