|
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:
|