ReproBLAS
Functions
idxdBLAS.h File Reference

idxdBLAS.h defines BLAS Methods that operate on indexed types. More...

#include "idxd.h"
#include "reproBLAS.h"

Go to the source code of this file.

Functions

float idxdBLAS_samax (const int N, const float *X, const int incX)
 Find maximum absolute value in vector of single precision. More...
 
double idxdBLAS_damax (const int N, const double *X, const int incX)
 Find maximum absolute value in vector of double precision. More...
 
void idxdBLAS_camax_sub (const int N, const void *X, const int incX, void *amax)
 Find maximum magnitude in vector of complex single precision. More...
 
void idxdBLAS_zamax_sub (const int N, const void *X, const int incX, void *amax)
 Find maximum magnitude in vector of complex double precision. More...
 
float idxdBLAS_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 idxdBLAS_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 idxdBLAS_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 idxdBLAS_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 idxdBLAS_didsum (const int fold, const int N, const double *X, const int incX, double_indexed *Y)
 Add to indexed double precision Y the sum of double precision vector X. More...
 
void idxdBLAS_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 indexed double precision Y the sum of double precision vector X. More...
 
void idxdBLAS_didasum (const int fold, const int N, const double *X, const int incX, double_indexed *Y)
 Add to indexed double precision Y the absolute sum of double precision vector X. More...
 
void idxdBLAS_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 indexed double precision Y the absolute sum of double precision vector X. More...
 
double idxdBLAS_didssq (const int fold, const int N, const double *X, const int incX, const double scaleY, double_indexed *Y)
 Add to scaled indexed double precision Y the scaled sum of squares of elements of double precision vector X. More...
 
double idxdBLAS_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 indexed double precision Y the scaled sum of squares of elements of double precision vector X. More...
 
void idxdBLAS_diddot (const int fold, const int N, const double *X, const int incX, const double *Y, const int incY, double_indexed *Z)
 Add to indexed double precision Z the dot product of double precision vectors X and Y. More...
 
void idxdBLAS_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 indexed double precision Z the dot product of double precision vectors X and Y. More...
 
void idxdBLAS_zizsum (const int fold, const int N, const void *X, const int incX, double_indexed *Y)
 Add to indexed complex double precision Y the sum of complex double precision vector X. More...
 
void idxdBLAS_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 indexed complex double precision Y the sum of complex double precision vector X. More...
 
void idxdBLAS_dizasum (const int fold, const int N, const void *X, const int incX, double_indexed *Y)
 Add to indexed double precision Y the absolute sum of complex double precision vector X. More...
 
void idxdBLAS_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 indexed double precision Y the absolute sum of complex double precision vector X. More...
 
double idxdBLAS_dizssq (const int fold, const int N, const void *X, const int incX, const double scaleY, double_indexed *Y)
 Add to scaled indexed double precision Y the scaled sum of squares of elements of complex double precision vector X. More...
 
double idxdBLAS_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 indexed double precision Y the scaled sum of squares of elements of complex double precision vector X. More...
 
void idxdBLAS_zizdotu (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, double_indexed *Z)
 Add to indexed complex double precision Z the unconjugated dot product of complex double precision vectors X and Y. More...
 
void idxdBLAS_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 indexed complex double precision Z the unconjugated dot product of complex double precision vectors X and Y. More...
 
void idxdBLAS_zizdotc (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, double_indexed *Z)
 Add to indexed complex double precision Z the conjugated dot product of complex double precision vectors X and Y. More...
 
void idxdBLAS_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 indexed complex double precision Z the conjugated dot product of complex double precision vectors X and Y. More...
 
void idxdBLAS_sissum (const int fold, const int N, const float *X, const int incX, float_indexed *Y)
 Add to indexed single precision Y the sum of single precision vector X. More...
 
void idxdBLAS_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 indexed single precision Y the sum of single precision vector X. More...
 
void idxdBLAS_sisasum (const int fold, const int N, const float *X, const int incX, float_indexed *Y)
 Add to indexed single precision Y the absolute sum of single precision vector X. More...
 
void idxdBLAS_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 indexed single precision Y the absolute sum of double precision vector X. More...
 
float idxdBLAS_sisssq (const int fold, const int N, const float *X, const int incX, const float scaleY, float_indexed *Y)
 Add to scaled indexed single precision Y the scaled sum of squares of elements of single precision vector X. More...
 
float idxdBLAS_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 indexed single precision Y the scaled sum of squares of elements of single precision vector X. More...
 
void idxdBLAS_sisdot (const int fold, const int N, const float *X, const int incX, const float *Y, const int incY, float_indexed *Z)
 Add to indexed single precision Z the dot product of single precision vectors X and Y. More...
 
void idxdBLAS_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 indexed single precision Z the dot product of single precision vectors X and Y. More...
 
void idxdBLAS_cicsum (const int fold, const int N, const void *X, const int incX, float_indexed *Y)
 Add to indexed complex single precision Y the sum of complex single precision vector X. More...
 
void idxdBLAS_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 indexed complex single precision Y the sum of complex single precision vector X. More...
 
void idxdBLAS_sicasum (const int fold, const int N, const void *X, const int incX, float_indexed *Y)
 Add to indexed single precision Y the absolute sum of complex single precision vector X. More...
 
void idxdBLAS_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 indexed single precision Y the absolute sum of complex single precision vector X. More...
 
float idxdBLAS_sicssq (const int fold, const int N, const void *X, const int incX, const float scaleY, float_indexed *Y)
 Add to scaled indexed single precision Y the scaled sum of squares of elements of complex single precision vector X. More...
 
float idxdBLAS_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 indexed single precision Y the scaled sum of squares of elements of complex single precision vector X. More...
 
void idxdBLAS_cicdotu (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, float_indexed *Z)
 Add to indexed complex single precision Z the unconjugated dot product of complex single precision vectors X and Y. More...
 
void idxdBLAS_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 indexed complex single precision Z the unconjugated dot product of complex single precision vectors X and Y. More...
 
void idxdBLAS_cicdotc (const int fold, const int N, const void *X, const int incX, const void *Y, const int incY, float_indexed *Z)
 Add to indexed complex single precision Z the conjugated dot product of complex single precision vectors X and Y. More...
 
void idxdBLAS_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 indexed complex single precision Z the conjugated dot product of complex single precision vectors X and Y. More...
 
void idxdBLAS_didgemv (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_indexed *Y, const int incY)
 Add to indexed double precision vector Y the matrix-vector product of double precision matrix A and double precision vector X. More...
 
void idxdBLAS_didgemm (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_indexed *C, const int ldc)
 Add to indexed double precision matrix C the matrix-matrix product of double precision matrices A and B. More...
 
void idxdBLAS_sisgemv (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_indexed *Y, const int incY)
 Add to indexed single precision vector Y the matrix-vector product of single precision matrix A and single precision vector X. More...
 
void idxdBLAS_sisgemm (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_indexed *C, const int ldc)
 Add to indexed single precision matrix C the matrix-matrix product of single precision matrices A and B. More...
 
void idxdBLAS_zizgemv (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_indexed *Y, const int incY)
 Add to indexed complex double precision vector Y the matrix-vector product of complex double precision matrix A and complex double precision vector X. More...
 
void idxdBLAS_zizgemm (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_indexed *C, const int ldc)
 Add to indexed complex double precision matrix C the matrix-matrix product of complex double precision matrices A and B. More...
 
void idxdBLAS_cicgemv (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_indexed *Y, const int incY)
 Add to indexed complex single precision vector Y the matrix-vector product of complex single precision matrix A and complex single precision vector X. More...
 
void idxdBLAS_cicgemm (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_indexed *C, const int ldc)
 Add to indexed complex single precision matrix C the matrix-matrix product of complex single precision matrices A and B. More...
 

Detailed Description

idxdBLAS.h defines BLAS Methods that operate on indexed 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 indexed 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. Indexed 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 indexed types supplied to a subroutine (an indexed 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 indexed types must be the same for all indexed types that interact with each other. Operations on more than one indexed type assume all indexed types being operated upon have the same fold. Note that the fold of an indexed 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 indexed functions that you use.

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

Function Documentation

void idxdBLAS_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 idxdBLAS_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 idxdBLAS_cicdotc ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
float_complex_indexed Z 
)

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

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

Parameters
foldthe fold of the indexed 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)
Zindexed scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_cicdotu ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
float_complex_indexed Z 
)

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

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

Parameters
foldthe fold of the indexed 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)
Zindexed scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_cicgemm ( 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_indexed C,
const int  ldc 
)

Add to indexed 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 indexed M by N matrix.

Parameters
foldthe fold of the indexed 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.
Cindexed 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 idxdBLAS_cicgemv ( 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_indexed Y,
const int  incY 
)

Add to indexed 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 indexed vector, and A is an M by N matrix.

Parameters
foldthe fold of the indexed 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)
Yindexed 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 idxdBLAS_cicsum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
float_complex_indexed Y 
)

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

Add to Y the indexed sum of X.

Parameters
foldthe fold of the indexed types
Nvector length
Xcomplex single precision vector
incXX vector stride (use every incX'th element)
Yindexed scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_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 indexed complex single precision Z the conjugated dot product of complex single precision vectors X and Y.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed complex single precision Z the unconjugated dot product of complex single precision vectors X and Y.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed complex single precision Y the sum of complex single precision vector X.

Add to Y the indexed sum of X.

Parameters
foldthe fold of the indexed types
foldthe fold of the indexed 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 idxdBLAS_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 idxdBLAS_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 idxdBLAS_didasum ( const int  fold,
const int  N,
const double *  X,
const int  incX,
double_indexed Y 
)

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

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

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

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

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

Parameters
foldthe fold of the indexed 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)
Zindexed scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_didgemm ( 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_indexed C,
const int  ldc 
)

Add to indexed 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 indexed M by N matrix.

Parameters
foldthe fold of the indexed 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.
Cindexed 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 idxdBLAS_didgemv ( 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_indexed Y,
const int  incY 
)

Add to indexed 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 indexed vector, and A is an M by N matrix.

Parameters
foldthe fold of the indexed 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)
Yindexed 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 idxdBLAS_didssq ( const int  fold,
const int  N,
const double *  X,
const int  incX,
const double  scaleY,
double_indexed Y 
)

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

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

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

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

Add to Y the indexed sum of X.

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

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

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

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

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

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

Parameters
foldthe fold of the indexed types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
scaleYthe scaling factor of Y
Yindexed scalar Y
Returns
the new scaling factor of Y
Author
Peter Ahrens
Date
18 Jan 2016
void idxdBLAS_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 indexed double precision Y the absolute sum of double precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed double precision Z the dot product of double precision vectors X and Y.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed double precision Y the scaled sum of squares of elements of double precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed double precision Y the sum of double precision vector X.

Set Y to the indexed sum of X.

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed double precision Y the absolute sum of complex double precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed double precision Y the scaled sum of squares of elements of complex double precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 idxdBLAS_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 idxdBLAS_sicasum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
float_indexed Y 
)

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

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

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

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

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

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

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

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

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

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

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

Parameters
foldthe fold of the indexed 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)
Zindexed scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_sisgemm ( 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_indexed C,
const int  ldc 
)

Add to indexed 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 indexed M by N matrix.

Parameters
foldthe fold of the indexed 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.
Cindexed 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 idxdBLAS_sisgemv ( 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_indexed Y,
const int  incY 
)

Add to indexed 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 indexed vector, and A is an M by N matrix.

Parameters
foldthe fold of the indexed 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)
Yindexed 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 idxdBLAS_sisssq ( const int  fold,
const int  N,
const float *  X,
const int  incX,
const float  scaleY,
float_indexed Y 
)

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

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

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

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

Add to Y the indexed sum of X.

Parameters
foldthe fold of the indexed types
Nvector length
Xsingle precision vector
incXX vector stride (use every incX'th element)
Yindexed scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_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 indexed single precision Y the absolute sum of complex single precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed single precision Y the scaled sum of squares of elements of complex single precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed single precision Y the absolute sum of double precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed single precision Z the dot product of single precision vectors X and Y.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed single precision Y the scaled sum of squares of elements of single precision vector X.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed single precision Y the sum of single precision vector X.

Add to Y the indexed sum of X.

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 idxdBLAS_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 idxdBLAS_zizdotc ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
double_complex_indexed Z 
)

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

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_zizdotu ( const int  fold,
const int  N,
const void *  X,
const int  incX,
const void *  Y,
const int  incY,
double_complex_indexed Z 
)

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

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

Parameters
foldthe fold of the indexed 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)
Zindexed scalar Z
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_zizgemm ( 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_indexed C,
const int  ldc 
)

Add to indexed 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 indexed M by N matrix.

Parameters
foldthe fold of the indexed 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.
Cindexed 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 idxdBLAS_zizgemv ( 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_indexed Y,
const int  incY 
)

Add to indexed 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 indexed vector, and A is an M by N matrix.

Parameters
foldthe fold of the indexed 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)
Yindexed 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 idxdBLAS_zizsum ( const int  fold,
const int  N,
const void *  X,
const int  incX,
double_complex_indexed Y 
)

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

Add to Y the indexed sum of X.

Parameters
foldthe fold of the indexed types
Nvector length
Xcomplex double precision vector
incXX vector stride (use every incX'th element)
Yindexed scalar Y
Author
Peter Ahrens
Date
15 Jan 2016
void idxdBLAS_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 indexed complex double precision Z the conjugated dot product of complex double precision vectors X and Y.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed complex double precision Z the unconjugated dot product of complex double precision vectors X and Y.

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

Parameters
foldthe fold of the indexed 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 idxdBLAS_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 indexed complex double precision Y the sum of complex double precision vector X.

Add to Y the indexed sum of X.

Parameters
foldthe fold of the indexed 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