|
void | eval_diag (const TMatrix *A, TVector *v, const matop_t op, const tri_eval_option_t &options) |
| evaluate D·x=y with (block) diagonal D More...
|
|
void | eval (const TMatrix *A, TVector *v, const matop_t op, const tri_eval_option_t &options) |
| evaluate L·U·x=y with lower triangular L and upper triangular U More...
|
|
void | eval_lower (const TMatrix *A, TVector *v, const matop_t op, const tri_eval_option_t &options) |
| evaluate A·x=y with lower triangular A More...
|
|
void | eval_upper (const TMatrix *A, TVector *v, const matop_t op, const tri_eval_option_t &options) |
| evaluate A·x = y with upper triangular A More...
|
|
void | invert (TMatrix *A, const TTruncAcc &acc, const inv_options_t opts=inv_options_t()) |
| compute More...
|
|
TVector * | inverse_diag (TMatrix *A, const TTruncAcc &acc, const inv_options_t opts=inv_options_t()) |
| Compute diagonal of . More...
|
|
void | multiply_diag (const real alpha, const matop_t op_A, const TMatrix *A, const matop_t op_D, const TMatrix *D, const matop_t op_B, const TMatrix *B, const real beta, TMatrix *C, const TTruncAcc &acc, TProgressBar *progress=NULL) |
| compute C ≔ β·C + α·op(A)·op(D)·op(B) where D is a block diagonal matrix
|
|
size_t | multiply_diag_steps (const matop_t op_A, const TMatrix *A, const matop_t op_D, const TMatrix *D, const matop_t op_B, const TMatrix *B, const TMatrix *C) |
| return number of steps for computing C ≔ C + op(A)·op(D)·op(B)
|
|
void | mul_diag_left (const TScalarVector &v, TMatrix *A) |
| compute B = diag(v)·A and overwrite A
|
|
void | mul_diag_right (TMatrix *A, const TScalarVector &v) |
| compute B = A·diag(v) and overwrite A
|
|
|
Functions related to matrix factorisation, e.g. LU or Cholesky factorisation.
|
TLinearOperator * | factorise (TMatrix *A, const TTruncAcc &acc, const fac_options_t &options=fac_options_t()) |
| compute factorisation of A More...
|
|
TLinearOperator * | factorise_inv (TMatrix *A, const TTruncAcc &acc, const fac_options_t &options=fac_options_t()) |
| compute factorisation of A and return inverse operator More...
|
|
void | lu (TMatrix *A, const TTruncAcc &acc, const fac_options_t &options=fac_options_t()) |
| compute LU factorisation using TLU
|
|
void | ldu (TMatrix *A, const TTruncAcc &acc, const fac_options_t &options=fac_options_t()) |
| compute LDU factorisation using TLDU
|
|
void | ll (TMatrix *A, const TTruncAcc &acc, const fac_options_t &options=fac_options_t()) |
| compute LL^H factorisation using TLL
|
|
void | ldl (TMatrix *A, const TTruncAcc &acc, const fac_options_t &options=fac_options_t()) |
| compute LDL^H factorisation using TLDL
|
|
|
Functions for matrix multiplication.
|
template<typename T_value > |
void | multiply (const T_value alpha, const matop_t op_A, const TMatrix *A, const matop_t op_B, const TMatrix *B, const T_value beta, TMatrix *C, const TTruncAcc &acc, TProgressBar *progress=NULL) |
| compute C ≔ β·C + α·op(A)·op(B) More...
|
|
template<typename T_value > |
void | multiply (const T_value alpha, const TMatrix *A, const TMatrix *B, const T_value beta, TMatrix *C, const TTruncAcc &acc, TProgressBar *progress=NULL) |
| compute C = β·C + α·A·B More...
|
|
size_t | multiply_steps (const matop_t op_A, const TMatrix *A, const matop_t op_B, const TMatrix *B, const TMatrix *C) |
| return number of steps for computation of C ≔ C + op(A)·op(B) for progress meter initialisation
|
|
template<typename T_value > |
void | multiply (const T_value alpha, const TMatrixView &A, const TMatrix *B, const T_value beta, TMatrix *C, const TTruncAcc &acc, TProgressBar *progress=NULL) |
|
template<typename T_value > |
void | multiply (const T_value alpha, const TMatrix *A, const TMatrixView &B, const T_value beta, TMatrix *C, const TTruncAcc &acc, TProgressBar *progress=NULL) |
|
template<typename T_value > |
void | multiply (const T_value alpha, const TMatrixView &A, const TMatrixView &B, const T_value beta, TMatrix *C, const TTruncAcc &acc, TProgressBar *progress=NULL) |
|
|
Functions for (parallel) matrix-vector multiplication
|
void | mul_vec (const TProcSet &ps, const real alpha, const TMatrix *A, const TVector *x, const real beta, TVector *y, const matop_t op) |
| compute y ≔ α·A·x + β·y on (possibly) distributed matrix A on all processors in ps More...
|
|
void | cmul_vec (const TProcSet &ps, const complex alpha, const TMatrix *A, const TVector *x, const complex beta, TVector *y, const matop_t op) |
| same as mul_vec but with complex valued scalars ( More...
|
|
void | mul_vec_diag (const real alpha, const matop_t op_A, const TMatrix *A, const matop_t op_D, const TMatrix *D, const TVector *x, const real beta, TVector *y) |
| compute y ≔ α·A·D·x + β·y with diagonal matrix D More...
|
|
This module provides most higher level algebra functions, e.g. matrix multiplication, inversion and factorisation. See also Basic Matrix Algebra and Matrix Factorisation for an introduction into 𝓗-arithmetic.
to your source files.
TLinearOperator* HLIB::factorise |
( |
TMatrix * |
A, |
|
|
const TTruncAcc & |
acc, |
|
|
const fac_options_t & |
options = fac_options_t() |
|
) |
| |
Compute triangular factorisation of A while choosing appropriate factorisation method depending on the format of A, e.g. if unsymmetric, symmetric or hermitian.
The return value is an operator object representing the factorised form and suitable for evaluation, e.g. matrix-vector multiplication (see TFacMatrix). A will be overwritten with the actual factorisation data.
void HLIB::multiply |
( |
const T_value |
alpha, |
|
|
const matop_t |
op_A, |
|
|
const TMatrix * |
A, |
|
|
const matop_t |
op_B, |
|
|
const TMatrix * |
B, |
|
|
const T_value |
beta, |
|
|
TMatrix * |
C, |
|
|
const TTruncAcc & |
acc, |
|
|
TProgressBar * |
progress = NULL |
|
) |
| |
The function computes to matrix product where and may be the non-modified, transposed or adjoint matrices and respectively.
The result of the multiplication is written to , whereby the block structure of C is not changed, e.g. the resulting block structure of the product is defined by C.
Thread-parallel execution is supported by the matrix multiplication.
This function is available in various versions without corresponding parameters, e.g. without op_A, op_B.
- Parameters
-
alpha | scaling factor of product |
op_A | matrix modifier for A |
A | first matrix factor |
op_B | matrix modifier for B |
B | second matrix factor |
beta | scaling factor for C |
C | matrix to update |
acc | accuracy of multiplication |
progress | optional progress bar |