Blas.h File Reference

#include "./cimpl.h"
#include <cmath>

Go to the source code of this file.

Namespaces

namespace  Blas

Functions

float Asum (Vector< float > &x)
 |x(0)|+...+|x(n)|
double Asum (Vector< double > &x)
float Asum (Vector< ComplexFloat > &x)
double Asum (Vector< ComplexDouble > &x)
void Axpy (float alpha, Vector< float > &x, Vector< float > &y)
 y += alpha*x
void Axpy (double alpha, Vector< double > &x, Vector< double > &y)
void Axpy (ComplexFloat alpha, Vector< ComplexFloat > &x, Vector< ComplexFloat > &y)
void Axpy (ComplexDouble alpha, Vector< ComplexDouble > &x, Vector< ComplexDouble > &y)
void Copy (Vector< float > &x, Vector< float > &y)
 y = x
void Copy (Vector< double > &x, Vector< double > &y)
void Copy (Vector< ComplexFloat > &x, Vector< ComplexFloat > &y)
void Copy (Vector< ComplexDouble > &x, Vector< ComplexDouble > &y)
float Dot (Vector< float > &x, Vector< float > &y)
 Dot product of x and y.
double Dot (Vector< double > &x, Vector< double > &y)
ComplexFloat Dot (Vector< ComplexFloat > &x, Vector< ComplexFloat > &y, bool conjugated)
ComplexDouble Dot (Vector< ComplexDouble > &x, Vector< ComplexDouble > &y, bool conjugated)
ComplexFloat Dot (Vector< ComplexFloat > &x, Vector< ComplexFloat > &y)
ComplexDouble Dot (Vector< ComplexDouble > &x, Vector< ComplexDouble > &y)
float Nrm2 (Vector< float > &x)
double Nrm2 (Vector< double > &x)
float Nrm2 (Vector< ComplexFloat > &x)
double Nrm2 (Vector< ComplexDouble > &x)
void Rot (Vector< float > &x, Vector< float > &y, const float c, const float s)
void Rot (Vector< double > &x, Vector< double > &y, const double c, const double s)
void Rot (Vector< ComplexFloat > &x, Vector< ComplexFloat > &y, const float c, const float s)
void Rot (Vector< ComplexDouble > &x, Vector< ComplexDouble > &y, const double c, const double s)
void Rotg (float &a, float &b, float &c, float &s)
 Generate elements for a givens plane rotation.
void Rotg (double &a, double &b, double &c, double &s)
void Rotg (ComplexFloat &a, ComplexFloat &b, float &c, ComplexFloat &s)
void Rotg (ComplexDouble &a, ComplexDouble &b, double &c, ComplexDouble &s)
void Rotm (Vector< float > &x, Vector< float > &y, float *param)
 Apply modified givens transformation.
void Rotm (Vector< double > &x, Vector< double > &y, double *param)
void Rotmg (float &d1, float &d2, float &b1, float &b2, float *param)
 Generate elements for a modified Givens transform.
void Rotmg (double &d1, double &d2, double &b1, double &b2, double *param)
void Scal (float alpha, Vector< float > &x)
 x *= alpha
void Scal (double alpha, Vector< double > &x)
void Scal (float alpha, Vector< ComplexFloat > &x)
void Scal (double alpha, Vector< ComplexDouble > &x)
void Scal (ComplexFloat alpha, Vector< ComplexFloat > &x)
void Scal (ComplexDouble alpha, Vector< ComplexDouble > &x)
void Swap (Vector< float > &x, Vector< float > &y)
 Swap elements of two vectors.
void Swap (Vector< double > &x, Vector< double > &y)
void Swap (Vector< ComplexFloat > &x, Vector< ComplexFloat > &y)
void Swap (Vector< ComplexDouble > &x, Vector< ComplexDouble > &y)
int IAmax (Vector< float > &x)
 index of the maximum element (First element is indexed as 1)
int IAmax (Vector< double > &x)
int IAmax (Vector< ComplexFloat > &x)
int IAmax (Vector< ComplexDouble > &x)
int IAmin (Vector< float > &x)
 index of the minimum element (First element is indexed as 1)
int IAmin (Vector< double > &x)
int IAmin (Vector< ComplexFloat > &x)
int IAmin (Vector< ComplexDouble > &x)
Vector< float > Gemv (Matrix< float > &A, Vector< float > &x)
 m*v for general matrix
Vector< double > Gemv (Matrix< double > &A, Vector< double > &x)
Vector< ComplexFloatGemv (Matrix< ComplexFloat > &A, Vector< ComplexFloat > &x)
Vector< ComplexDoubleGemv (Matrix< ComplexDouble > &A, Vector< ComplexDouble > &x)
void Ger (float alpha, Vector< float > &x, Vector< float > &y, Matrix< float > &A)
void Ger (double alpha, Vector< double > &x, Vector< double > &y, Matrix< double > &A)
void Ger (ComplexFloat alpha, Vector< ComplexFloat > &x, Vector< ComplexFloat > &y, Matrix< ComplexFloat > &A)
void Ger (ComplexDouble alpha, Vector< ComplexDouble > &x, Vector< ComplexDouble > &y, Matrix< ComplexDouble > &A)
void Ger (ComplexFloat alpha, Vector< ComplexFloat > x, Vector< ComplexFloat > y, Matrix< ComplexFloat > &A, bool conjugated)
void Ger (ComplexDouble alpha, Vector< ComplexDouble > &x, Vector< ComplexDouble > &y, Matrix< ComplexDouble > &A, bool conjugated)
Vector< float > Symv (Matrix< float > &A, Vector< float > x)
 Symv, Hemv: m*v for symmetric or hermitian matrix.
Vector< double > Symv (Matrix< double > &A, Vector< double > x)
Vector< ComplexFloatHemv (Matrix< ComplexFloat > &A, Vector< ComplexFloat > &x)
Vector< ComplexDoubleHemv (Matrix< ComplexDouble > &A, Vector< ComplexDouble > &x)
void Syr (float alpha, Vector< float > &x, Matrix< float > &A)
void Syr (double alpha, Vector< double > &x, Matrix< double > &A)
void Her (float alpha, Vector< ComplexFloat > &x, Matrix< ComplexFloat > &A)
void Her (double alpha, Vector< ComplexDouble > &x, Matrix< ComplexDouble > &A)
void Syr2 (float alpha, Vector< float > &x, Vector< float > &y, Matrix< float > &A)
void Syr2 (double alpha, Vector< double > &x, Vector< double > &y, Matrix< double > &A)
void Her2 (ComplexFloat alpha, Vector< ComplexFloat > &x, Vector< ComplexFloat > &y, Matrix< ComplexFloat > &A)
void Her2 (ComplexDouble alpha, Vector< ComplexDouble > &x, Vector< ComplexDouble > &y, Matrix< ComplexDouble > &A)
Vector< float > Trmv (Matrix< float > &A, Vector< float > &x)
 Trmv: m*v for triangular matrix.
Vector< double > Trmv (Matrix< double > &A, Vector< double > &x)
Vector< ComplexFloatTrmv (Matrix< ComplexFloat > &A, Vector< ComplexFloat > &x)
Vector< ComplexDoubleTrmv (Matrix< ComplexDouble > &A, Vector< ComplexDouble > &x)
Vector< float > Trsv (Matrix< float > &A, Vector< float > &b)
 Trsv: Solver of a system of linear equations with a triangular matrix.
Vector< double > Trsv (Matrix< double > &A, Vector< double > &b)
Vector< ComplexFloatTrsv (Matrix< ComplexFloat > &A, Vector< ComplexFloat > &b)
Vector< ComplexDoubleTrsv (Matrix< ComplexDouble > &A, Vector< ComplexDouble > &b)
Matrix< float > Gemm (Matrix< float > &A, Matrix< float > &B)
Matrix< double > Gemm (Matrix< double > &A, Matrix< double > &B)
Matrix< ComplexFloatGemm (Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B)
Matrix< ComplexDoubleGemm (Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B)
Matrix< float > Symm (Matrix< float > &A, Matrix< float > &B)
 C = A*B or C = B*A.
Matrix< double > Symm (Matrix< double > &A, Matrix< double > &B)
Matrix< ComplexFloatSymm (Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B)
Matrix< ComplexDoubleSymm (Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B)
Matrix< float > Symm (Matrix< float > &A, Matrix< float > &B, bool orderReversed)
Matrix< double > Symm (Matrix< double > &A, Matrix< double > &B, bool orderReversed)
Matrix< ComplexFloatSymm (Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B, bool orderReversed)
Matrix< ComplexDoubleSymm (Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B, bool orderReversed)
Matrix< ComplexFloatHemm (Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B)
Matrix< ComplexDoubleHemm (Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B)
Matrix< ComplexFloatHemm (Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B, bool orderReversed)
Matrix< ComplexDoubleHemm (Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B, bool orderReversed)
void Syrk (float alpha, Matrix< float > &A, Matrix< float > &C)
void Syrk (double alpha, Matrix< double > &A, Matrix< double > &C)
void Syrk (ComplexFloat alpha, Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &C)
void Syrk (ComplexDouble alpha, Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &C)
void Syr2k (float alpha, Matrix< float > &A, Matrix< float > &B, Matrix< float > &C)
void Syr2k (double alpha, Matrix< double > &A, Matrix< double > &B, Matrix< double > &C)
void Syr2k (ComplexFloat alpha, Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B, Matrix< ComplexFloat > &C)
void Syr2k (ComplexDouble alpha, Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B, Matrix< ComplexDouble > &C)
void Herk (float alpha, Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &C)
void Herk (double alpha, Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &C)
void Her2k (ComplexFloat alpha, Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B, Matrix< ComplexFloat > &C)
void Her2k (ComplexDouble alpha, Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B, Matrix< ComplexDouble > &C)
Matrix< float > Trmm (Matrix< float > &A, Matrix< float > &B)
 C = A*B.
Matrix< double > Trmm (Matrix< double > &A, Matrix< double > &B)
Matrix< ComplexFloatTrmm (Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B)
Matrix< ComplexDoubleTrmm (Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B)
Matrix< float > Trsm (Matrix< float > &A, Matrix< float > &B)
 Solve AX=B for X.
Matrix< double > Trsm (Matrix< double > &A, Matrix< double > &B)
Matrix< ComplexFloatTrsm (Matrix< ComplexFloat > &A, Matrix< ComplexFloat > &B)
Matrix< ComplexDoubleTrsm (Matrix< ComplexDouble > &A, Matrix< ComplexDouble > &B)


Function Documentation

double Blas::Asum Vector< ComplexDouble > &  x  ) 
 

Definition at line 84 of file Blas1.cpp.

float Blas::Asum Vector< ComplexFloat > &  x  ) 
 

Definition at line 79 of file Blas1.cpp.

double Blas::Asum Vector< double > &  x  ) 
 

Definition at line 74 of file Blas1.cpp.

float Blas::Asum Vector< float > &  x  ) 
 

|x(0)|+...+|x(n)|

Definition at line 69 of file Blas1.cpp.

void Blas::Axpy ComplexDouble  alpha,
Vector< ComplexDouble > &  x,
Vector< ComplexDouble > &  y
 

Definition at line 123 of file Blas1.cpp.

void Blas::Axpy ComplexFloat  alpha,
Vector< ComplexFloat > &  x,
Vector< ComplexFloat > &  y
 

Definition at line 113 of file Blas1.cpp.

void Blas::Axpy double  alpha,
Vector< double > &  x,
Vector< double > &  y
 

Definition at line 103 of file Blas1.cpp.

void Blas::Axpy float  alpha,
Vector< float > &  x,
Vector< float > &  y
 

y += alpha*x

Definition at line 93 of file Blas1.cpp.

void Blas::Copy Vector< ComplexDouble > &  x,
Vector< ComplexDouble > &  y
 

Definition at line 169 of file Blas1.cpp.

void Blas::Copy Vector< ComplexFloat > &  x,
Vector< ComplexFloat > &  y
 

Definition at line 159 of file Blas1.cpp.

void Blas::Copy Vector< double > &  x,
Vector< double > &  y
 

Definition at line 149 of file Blas1.cpp.

void Blas::Copy Vector< float > &  x,
Vector< float > &  y
 

y = x

Definition at line 139 of file Blas1.cpp.

ComplexDouble Blas::Dot Vector< ComplexDouble > &  x,
Vector< ComplexDouble > &  y
 

Definition at line 248 of file Blas1.cpp.

ComplexFloat Blas::Dot Vector< ComplexFloat > &  x,
Vector< ComplexFloat > &  y
 

Definition at line 243 of file Blas1.cpp.

ComplexDouble Blas::Dot Vector< ComplexDouble > &  x,
Vector< ComplexDouble > &  y,
bool  conjugated
 

Definition at line 223 of file Blas1.cpp.

ComplexFloat Blas::Dot Vector< ComplexFloat > &  x,
Vector< ComplexFloat > &  y,
bool  conjugated
 

Definition at line 203 of file Blas1.cpp.

double Blas::Dot Vector< double > &  x,
Vector< double > &  y
 

Definition at line 193 of file Blas1.cpp.

float Blas::Dot Vector< float > &  x,
Vector< float > &  y
 

Dot product of x and y.

Definition at line 183 of file Blas1.cpp.

Matrix< ComplexDouble > Blas::Gemm Matrix< ComplexDouble > &  A,
Matrix< ComplexDouble > &  B
 

Definition at line 109 of file Blas3.cpp.

Matrix< ComplexFloat > Blas::Gemm Matrix< ComplexFloat > &  A,
Matrix< ComplexFloat > &  B
 

Definition at line 96 of file Blas3.cpp.

Matrix< double > Blas::Gemm Matrix< double > &  A,
Matrix< double > &  B
 

Definition at line 84 of file Blas3.cpp.

Matrix< float > Blas::Gemm Matrix< float > &  A,
Matrix< float > &  B
 

Gemm: General m*m C = A*B A is an m by k matrix, B is a k by n matrix, and C is an m by n matrix.

Definition at line 72 of file Blas3.cpp.

Vector< ComplexDouble > Blas::Gemv Matrix< ComplexDouble > &  A,
Vector< ComplexDouble > &  x
 

Definition at line 105 of file Blas2.cpp.

Vector< ComplexFloat > Blas::Gemv Matrix< ComplexFloat > &  A,
Vector< ComplexFloat > &  x
 

Definition at line 92 of file Blas2.cpp.

Vector< double > Blas::Gemv Matrix< double > &  A,
Vector< double > &  x
 

Definition at line 80 of file Blas2.cpp.

Vector< float > Blas::Gemv Matrix< float > &  A,
Vector< float > &  x
 

m*v for general matrix

Definition at line 68 of file Blas2.cpp.

void Blas::Ger ComplexDouble  alpha,
Vector< ComplexDouble > &  x,
Vector< ComplexDouble > &  y,
Matrix< ComplexDouble > &  A,
bool  conjugated
 

Definition at line 182 of file Blas2.cpp.

void Blas::Ger ComplexFloat  alpha,
Vector< ComplexFloat x,
Vector< ComplexFloat y,
Matrix< ComplexFloat > &  A,
bool  conjugated
 

Definition at line 164 of file Blas2.cpp.

void Blas::Ger ComplexDouble  alpha,
Vector< ComplexDouble > &  x,
Vector< ComplexDouble > &  y,
Matrix< ComplexDouble > &  A
 

Definition at line 153 of file Blas2.cpp.

void Blas::Ger ComplexFloat  alpha,
Vector< ComplexFloat > &  x,
Vector< ComplexFloat > &  y,
Matrix< ComplexFloat > &  A
 

Definition at line 142 of file Blas2.cpp.

void Blas::Ger double  alpha,
Vector< double > &  x,
Vector< double > &  y,
Matrix< double > &  A
 

Definition at line 132 of file Blas2.cpp.

void Blas::Ger float  alpha,
Vector< float > &  x,
Vector< float > &  y,
Matrix< float > &  A
 

Rank one update, general matrix A += alpha*x*transp(y) A += alpha*x*conjug_transp(y) if conjugate == true

Definition at line 122 of file Blas2.cpp.

Matrix< ComplexDouble > Blas::Hemm Matrix< ComplexDouble > &  A,
Matrix< ComplexDouble > &  B,
bool  orderReversed
 

Definition at line 394 of file Blas3.cpp.

Matrix< ComplexFloat > Blas::Hemm Matrix< ComplexFloat > &  A,
Matrix< ComplexFloat > &  B,
bool  orderReversed
 

Definition at line 361 of file Blas3.cpp.

Matrix< ComplexDouble > Blas::Hemm Matrix< ComplexDouble > &  A,
Matrix< ComplexDouble > &  B
 

Definition at line 214 of file Blas3.cpp.

Matrix< ComplexFloat > Blas::Hemm Matrix< ComplexFloat > &  A,
Matrix< ComplexFloat > &  B
 

Definition at line 196 of file Blas3.cpp.

Vector< ComplexDouble > Blas::Hemv Matrix< ComplexDouble > &  A,
Vector< ComplexDouble > &  x
 

Definition at line 255 of file Blas2.cpp.

Vector< ComplexFloat > Blas::Hemv Matrix< ComplexFloat > &  A,
Vector< ComplexFloat > &  x
 

Definition at line 237 of file Blas2.cpp.

void Blas::Her double  alpha,
Vector< ComplexDouble > &  x,
Matrix< ComplexDouble > &  A
 

Definition at line 326 of file Blas2.cpp.

void Blas::Her float  alpha,
Vector< ComplexFloat > &  x,
Matrix< ComplexFloat > &  A
 

Definition at line 311 of file Blas2.cpp.

void Blas::Her2 ComplexDouble  alpha,
Vector< ComplexDouble > &  x,
Vector< ComplexDouble > &  y,
Matrix< ComplexDouble > &  A
 

Definition at line 395 of file Blas2.cpp.

void Blas::Her2 ComplexFloat  alpha,
Vector< ComplexFloat > &  x,
Vector< ComplexFloat > &  y,
Matrix< ComplexFloat > &  A
 

Definition at line 379 of file Blas2.cpp.

void Blas::Her2k ComplexDouble  alpha,
Matrix< ComplexDouble > &  A,
Matrix< ComplexDouble > &  B,
Matrix< ComplexDouble > &  C
 

Definition at line 619 of file Blas3.cpp.

void Blas::Her2k ComplexFloat  alpha,
Matrix< ComplexFloat > &  A,
Matrix< ComplexFloat > &  B,
Matrix< ComplexFloat > &  C
 

C += alpha*A*conjug_transp(B) + alpha*B*conjug_transp(A) A and B are of size n by k

Definition at line 604 of file Blas3.cpp.

void Blas::Herk double  alpha,
Matrix< ComplexDouble > &