blas3pp.h File Reference

Blas Level-3 Routines: Matrix-Matrix Operations and Matrix norms. More...

Go to the source code of this file.

Real-valued general matrices

void Blas_Mat_Mat_Mult (const LaGenMatDouble &A, const LaGenMatDouble &B, LaGenMatDouble &C, bool transpose_A, bool transpose_B=false, double alpha=1.0, double beta=0.0)
void Blas_Mat_Mat_Mult (const LaGenMatDouble &A, const LaGenMatDouble &B, LaGenMatDouble &C, double alpha=1.0, double beta=0.0)
void Blas_Mat_Trans_Mat_Mult (const LaGenMatDouble &A, const LaGenMatDouble &B, LaGenMatDouble &C, double alpha=1.0, double beta=0.0)
void Blas_Mat_Mat_Trans_Mult (const LaGenMatDouble &A, const LaGenMatDouble &B, LaGenMatDouble &C, double alpha=1.0, double beta=0.0)
void Blas_Mat_Mat_Mult (const LaGenMatDouble &A, const LaGenMatDouble &B, LaVectorDouble &C)
void Blas_Mat_Trans_Mat_Mult (const LaGenMatDouble &A, const LaGenMatDouble &B, LaVectorDouble &C)
void Blas_Mat_Mat_Trans_Mult (const LaGenMatDouble &A, const LaGenMatDouble &B, LaVectorDouble &C)
void Blas_Scale (double s, LaGenMatDouble &A)

Complex-valued matrices

void Blas_Mat_Mat_Mult (const LaGenMatComplex &A, const LaGenMatComplex &B, LaGenMatComplex &C, bool hermit_A, bool hermit_B=false, LaComplex alpha=1.0, LaComplex beta=0.0)
void Blas_Mat_Mat_Mult (const LaGenMatComplex &A, const LaGenMatComplex &B, LaGenMatComplex &C, LaComplex alpha=1.0, LaComplex beta=0.0)
void Blas_Mat_Trans_Mat_Mult (const LaGenMatComplex &A, const LaGenMatComplex &B, LaGenMatComplex &C, LaComplex alpha=1.0, LaComplex beta=0.0)
void Blas_Mat_Mat_Trans_Mult (const LaGenMatComplex &A, const LaGenMatComplex &B, LaGenMatComplex &C, LaComplex alpha=1.0, LaComplex beta=0.0)
void Blas_Scale (COMPLEX s, LaGenMatComplex &A)

Symmetric matrices

void Blas_Mat_Mat_Mult (LaSymmMatDouble &A, LaGenMatDouble &B, LaGenMatDouble &C, double alpha=1.0, double beta=1.0, bool b_left_side=true)
void Blas_R1_Update (LaSymmMatDouble &C, LaGenMatDouble &A, double alpha=1.0, double beta=1.0, bool right_transposed=true)
void Blas_R2_Update (LaSymmMatDouble &C, LaGenMatDouble &A, LaGenMatDouble &B, double alpha=1.0, double beta=1.0, bool right_transposed=true)

Matrix Norms

double Blas_Norm1 (const LaGenMatDouble &A)
 1-Norm: Maximum column sum
double Blas_Norm_Inf (const LaGenMatDouble &A)
 Infinity-Norm: Maximum row sum.
double Blas_NormF (const LaGenMatDouble &A)
 Frobenius-Norm.
double Blas_Norm1 (const LaGenMatComplex &A)
 1-Norm: Maximum column sum
double Blas_Norm_Inf (const LaGenMatComplex &A)
 Infinity-Norm: Maximum row sum.
double Blas_NormF (const LaGenMatComplex &A)
 Frobenius-Norm.
double Norm_Inf (const LaBandMatDouble &A)
double Norm_Inf (const LaSymmMatDouble &S)
double Norm_Inf (const LaSpdMatDouble &S)
double Norm_Inf (const LaSymmTridiagMatDouble &S)
double Norm_Inf (const LaTridiagMatDouble &T)


Detailed Description

Blas Level-3 Routines: Matrix-Matrix Operations and Matrix norms.


Function Documentation

void Blas_Mat_Mat_Mult ( const LaGenMatDouble A,
const LaGenMatDouble B,
LaGenMatDouble C,
bool  transpose_A,
bool  transpose_B = false,
double  alpha = 1.0,
double  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A*B + beta*C where A and B are used in either non-transposed or transposed form, depending on the function arguments.

Internally this uses dgemm .

Parameters:
transpose_A If true, use transposed A, i.e. A' instead of A. If false, use A directly in non-transposed form.
transpose_B If true, use transposed B, i.e. B' instead of B. If false, use B directly in non-transposed form.
(New in lapackpp-2.4.14.)

void Blas_Mat_Mat_Mult ( const LaGenMatDouble A,
const LaGenMatDouble B,
LaGenMatDouble C,
double  alpha = 1.0,
double  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A*B + beta*C

void Blas_Mat_Trans_Mat_Mult ( const LaGenMatDouble A,
const LaGenMatDouble B,
LaGenMatDouble C,
double  alpha = 1.0,
double  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A'*B + beta*C

void Blas_Mat_Mat_Trans_Mult ( const LaGenMatDouble A,
const LaGenMatDouble B,
LaGenMatDouble C,
double  alpha = 1.0,
double  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A*B' + beta*C

void Blas_Mat_Mat_Mult ( const LaGenMatDouble A,
const LaGenMatDouble B,
LaVectorDouble C 
)

Perform a matrix-matrix multiplication, returning only the diagonal of the result: C := diag(A * B). FIXME: needs verification.

void Blas_Mat_Trans_Mat_Mult ( const LaGenMatDouble A,
const LaGenMatDouble B,
LaVectorDouble C 
)

Perform a matrix-matrix multiplication, returning only the diagonal of the result: C := diag(A' * B). FIXME: needs verification.

void Blas_Mat_Mat_Trans_Mult ( const LaGenMatDouble A,
const LaGenMatDouble B,
LaVectorDouble C 
)

Perform a matrix-matrix multiplication, returning only the diagonal of the result: C := diag(A * B'). FIXME: needs verification.

void Blas_Scale ( double  s,
LaGenMatDouble A 
)

Matrix scaling: A := s * A

(New in lapackpp-2.4.7.)

void Blas_Mat_Mat_Mult ( const LaGenMatComplex A,
const LaGenMatComplex B,
LaGenMatComplex C,
bool  hermit_A,
bool  hermit_B = false,
LaComplex  alpha = 1.0,
LaComplex  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A*B + beta*C where A and B are used in either non-hermitian or hermitian form (matrix transpose and complex conjugate), depending on the function arguments.

Internally this uses zgemm .

Parameters:
hermit_A If true, use hermitian A, i.e. A* (sometimes denoted conj(A')), the matrix transpose and complex conjugate, instead of A. If false, use A directly in non-hermitian form.
hermit_B If true, use hermitian B, i.e. B* (sometimes denoted conj(B')), the matrix transpose and complex conjugate, instead of B. If false, use B directly in non-hermitian form.
(New in lapackpp-2.4.14.)

void Blas_Mat_Mat_Mult ( const LaGenMatComplex A,
const LaGenMatComplex B,
LaGenMatComplex C,
LaComplex  alpha = 1.0,
LaComplex  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A*B + beta*C

void Blas_Mat_Trans_Mat_Mult ( const LaGenMatComplex A,
const LaGenMatComplex B,
LaGenMatComplex C,
LaComplex  alpha = 1.0,
LaComplex  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A'*B + beta*C

void Blas_Mat_Mat_Trans_Mult ( const LaGenMatComplex A,
const LaGenMatComplex B,
LaGenMatComplex C,
LaComplex  alpha = 1.0,
LaComplex  beta = 0.0 
)

Perform the matrix-matrix operation C := alpha*A*B' + beta*C

void Blas_Scale ( COMPLEX  s,
LaGenMatComplex A 
)

Matrix scaling: A := s * A

(New in lapackpp-2.4.7.)

void Blas_Mat_Mat_Mult ( LaSymmMatDouble A,
LaGenMatDouble B,
LaGenMatDouble C,
double  alpha = 1.0,
double  beta = 1.0,
bool  b_left_side = true 
)

Perform one of the matrix-matrix operations

void Blas_R1_Update ( LaSymmMatDouble C,
LaGenMatDouble A,
double  alpha = 1.0,
double  beta = 1.0,
bool  right_transposed = true 
)

Perform one of the matrix-matrix operations

with A' as transposition of A.

void Blas_R2_Update ( LaSymmMatDouble C,
LaGenMatDouble A,
LaGenMatDouble B,
double  alpha = 1.0,
double  beta = 1.0,
bool  right_transposed = true 
)

Perform one of the matrix-matrix operations

with A' and B' as transposition of A and B.

double Blas_Norm1 ( const LaGenMatDouble A  ) 

1-Norm: Maximum column sum

Returns the 1-Norm of matrix A, which is the maximum absolute column sum: $||A||_{\infty}=\max_j\sum_{i=1}^M|a_{ij}|$,

See also:
Eric W. Weisstein. "Matrix Norm." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/MatrixNorm.html

double Blas_Norm_Inf ( const LaGenMatDouble A  ) 

Infinity-Norm: Maximum row sum.

Returns the Infinity-Norm of matrix A, which is the maximum absolute row sum: $||A||_{\infty}=\max_i\sum_{j=1}^N|a_{ij}|$,

See also:
Eric W. Weisstein. "Matrix Norm." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/MatrixNorm.html

double Blas_NormF ( const LaGenMatDouble A  ) 

Frobenius-Norm.

Returns the Frobenius-Norm of matrix A (also called the Schur- or Euclidean norm): $||A||_F=\sqrt{\sum_{i,j}|a_{ij}|^2}$, i.e. the square root of the sum of the absolute squares of its elements.

See also:
Eric W. Weisstein. "Matrix Norm." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/MatrixNorm.html

double Blas_Norm1 ( const LaGenMatComplex A  ) 

1-Norm: Maximum column sum

Returns the 1-Norm of matrix A, which is the maximum absolute column sum: $||A||_{\infty}=\max_j\sum_{i=1}^M|a_{ij}|$,

See also:
Eric W. Weisstein. "Matrix Norm." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/MatrixNorm.html

double Blas_Norm_Inf ( const LaGenMatComplex A  ) 

Infinity-Norm: Maximum row sum.

Returns the Infinity-Norm of matrix A, which is the maximum absolute row sum: $||A||_{\infty}=\max_i\sum_{j=1}^N|a_{ij}|$,

See also:
Eric W. Weisstein. "Matrix Norm." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/MatrixNorm.html

double Blas_NormF ( const LaGenMatComplex A  ) 

Frobenius-Norm.

Returns the Frobenius-Norm of matrix A (also called the Schur- or Euclidean norm): $||A||_F=\sqrt{\sum_{i,j}|a_{ij}|^2}$, i.e. the square root of the sum of the absolute squares of its elements.

See also:
Eric W. Weisstein. "Matrix Norm." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/MatrixNorm.html

double Norm_Inf ( const LaBandMatDouble A  ) 

double Norm_Inf ( const LaSymmMatDouble S  ) 

double Norm_Inf ( const LaSpdMatDouble S  ) 

double Norm_Inf ( const LaSymmTridiagMatDouble S  ) 

double Norm_Inf ( const LaTridiagMatDouble T  ) 


Generated on Sat Jul 14 11:40:36 2007 for Lapack++ by  doxygen 1.5.0