SLATE 2024.05.31
Software for Linear Algebra Targeting Exascale
|
Factor \(A = LQ\), multiply by \(Q\), generate \(Q\). More...
Functions | |
template<typename scalar_t > | |
void | slate::gelqf (Matrix< scalar_t > &A, TriangularFactors< scalar_t > &T, Options const &opts) |
Distributed parallel LQ factorization. | |
template<typename scalar_t > | |
void | slate::unmlq (Side side, Op op, Matrix< scalar_t > &A, TriangularFactors< scalar_t > &T, Matrix< scalar_t > &C, Options const &opts) |
Distributed parallel multiply by \(Q\) from LQ factorization. | |
Factor \(A = LQ\), multiply by \(Q\), generate \(Q\).
void slate::gelqf | ( | Matrix< scalar_t > & | A, |
TriangularFactors< scalar_t > & | T, | ||
Options const & | opts | ||
) |
Distributed parallel LQ factorization.
Computes a LQ factorization of an m-by-n matrix \(A\). The factorization has the form
\[ A = LQ, \]
where \(Q\) is a matrix with orthonormal columns and \(L\) is lower triangular (or lower trapezoidal if m > n).
scalar_t | One of float, double, std::complex<float>, std::complex<double>. |
[in,out] | A | On entry, the m-by-n matrix \(A\). On exit, the elements on and below the diagonal of the array contain the m-by-min(m,n) lower trapezoidal matrix \(L\) (lower triangular if m <= n); the elements above the diagonal represent the unitary matrix \(Q\) as a product of elementary reflectors. |
[out] | T | On exit, triangular matrices of the block reflectors. |
[in] | opts | Additional options, as map of name = value pairs. Possible options:
|
void slate::unmlq | ( | Side | side, |
Op | op, | ||
Matrix< scalar_t > & | A, | ||
TriangularFactors< scalar_t > & | T, | ||
Matrix< scalar_t > & | C, | ||
Options const & | opts | ||
) |
Distributed parallel multiply by \(Q\) from LQ factorization.
Multiplies the general m-by-n matrix \(C\) by \(Q\) from LQ factorization, according to:
op | side = Left | side = Right |
---|---|---|
op = NoTrans | \(Q C \) | \(C Q \) |
op = ConjTrans | \(Q^H C\) | \(C Q^H\) |
where \(Q\) is a unitary matrix defined as the product of k elementary reflectors
\[ Q = H(1) H(2) . . . H(k) \]
as returned by gelqf. \(Q\) is of order m if side = Left and of order n if side = Right.
scalar_t | One of float, double, std::complex<float>, std::complex<double>. |
[in] | side |
|
[in] | op |
|
[in] | A | Details of the LQ factorization of the original matrix \(A\) as returned by gelqf. |
[in] | T | Triangular matrices of the block reflectors as returned by gelqf. |
[in,out] | C | On entry, the m-by-n matrix \(C\). On exit, \(C\) is overwritten by \(Q C\), \(Q^H C\), \(C Q\), or \(C Q^H\). |
[in] | opts | Additional options, as map of name = value pairs. Possible options:
|