MyraMath
hetrf.h
Go to the documentation of this file.
1 // ========================================================================= //
2 // This file is part of MyraMath, copyright (c) 2014-2019 by Ryan A Chilton //
3 // and distributed by MyraCore, LLC. See LICENSE.txt for license terms. //
4 // ========================================================================= //
5 
6 #ifndef MYRAMATH_DENSE_HETRF_H
7 #define MYRAMATH_DENSE_HETRF_H
8 
14 #include <myramath/MYRAMATH_EXPORT.h>
16 
18 
19 namespace myra {
20 
21 // Forward declarations.
22 template <class Number> class MatrixRange;
23 template <class Number> class LowerMatrixRange;
24 
26 //
28 // Four different choices for uplo/side, each has a slightly different effect.
29 // Uplo controls whether the 'U'pper or 'L'ower triangle is accessed, and side
30 // controls whether the transpose' appears on the 'L'eft or 'R'ight triangle:
31 //
32 // uplo = 'L', side = 'R' -> factors A = P'*L *R *Q'*I*Q*R'*L'*P
33 // uplo = 'L', side = 'L' -> factors A = P'*L'*R'*Q'*I*Q*R *L *P
34 // uplo = 'U', side = 'R' -> factors A = P'*U *R *Q'*I*Q*R'*U'*P
35 // uplo = 'U', side = 'L' -> factors A = P'*U'*R'*Q'*I*Q*R *U *P
36 //
37 MYRAMATH_EXPORT LDLSwaps<NumberC> hetrf_inplace(char uplo, char side, const MatrixRange<NumberC>& A);
38 MYRAMATH_EXPORT LDLSwaps<NumberZ> hetrf_inplace(char uplo, char side, const MatrixRange<NumberZ>& A);
40 
42 MYRAMATH_EXPORT LDLSwaps<NumberC> hetrf_inplace(const LowerMatrixRange<NumberC>& A);
44 MYRAMATH_EXPORT LDLSwaps<NumberZ> hetrf_inplace(const LowerMatrixRange<NumberZ>& A);
46 
48 // Makes a deep copy into a square Matrix, then calls hetrf_inplace(MatrixRange). More stable
50 // than hetrf_inplace(LowerMatrixRange), because of more of the system is available for pivoting.
51 MYRAMATH_EXPORT LDLSwaps<NumberC> hetrf_outplace(const LowerMatrixRange<NumberC>& A);
52 MYRAMATH_EXPORT LDLSwaps<NumberZ> hetrf_outplace(const LowerMatrixRange<NumberZ>& A);
54 
55 } // namespace
56 
57 #endif
Definition: syntax.dox:1
Various utility functions/classes related to scalar Number types.
Pivoting metadata for LDL&#39;-type factorizations.