Hermitian solve¶
Solve \(AX=B\), \(A^T X = B\), or \(A^H X = B\) for \(X\)
given a Hermitian matrix \(A\) and a right-hand side matrix
\(B\). When \(A\) is dense, the default algorithm is Bunch-Kaufman,
whereas, when \(A\) is sparse, the default approach embeds the problem
in the same manner as LinearSolve()
, though it is possible to
override this behaviour and attempt a sparse \(LDL^H\) factorization which
only dynamically pivots within supernodes.
Note
Only the lower-triangular storage case (uplo=LOWER
) is supported by
the following routines.
Python API¶
-
HermitianSolve
(A, B[, tryLDL=False, uplo=LOWER, orient=NORMAL])¶ - Parameters
A – Dense or sparse Hermitian matrix to solve against
B – Right-hand sides (which will be overwritten with the solution).
tryLDL – (optional) if a sparse \(LDL^H\) factorization without pivoting should be attempted instead of embedding in a QSD system
uplo – (optional) which triangle the data is explicitly stored in
orient – (optional) whether to use \(A\), \(A^T\), or \(A^H\)
Type of \(A\) |
Type of B |
|
|
|
|
|
|
|
|
C++ API¶
-
void
HermitianSolve
(UpperOrLower uplo, Orientation orientation, const Matrix<F> &A, Matrix<F> &B, bool conjugate = false, const LDLPivotCtrl<Base<F>> &ctrl = LDLPivotCtrl<Base<F>>())¶
-
void
HermitianSolve
(UpperOrLower uplo, Orientation orientation, const AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &B, bool conjugate = false, const LDLPivotCtrl<Base<F>> &ctrl = LDLPivotCtrl<Base<F>>())¶
-
void
HermitianSolve
(const SparseMatrix<F> &A, Matrix<F> &B, bool tryLDL = false, const BisectCtrl &ctrl = BisectCtrl())¶
-
void
HermitianSolve
(const DistSparseMatrix<F> &A, DistMultiVec<F> &B, bool tryLDL = false, const BisectCtrl &ctrl = BisectCtrl())¶
Dense versions which factor in-place¶
-
void
herm_solve
::
Overwrite
(UpperOrLower uplo, Orientation orientation, const Matrix<F> &A, Matrix<F> &B, bool conjugate = false, const LDLPivotCtrl<Base<F>> &ctrl = LDLPivotCtrl<Base<F>>())¶
-
void
herm_solve
::
Overwrite
(UpperOrLower uplo, Orientation orientation, const AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &B, bool conjugate = false, const LDLPivotCtrl<Base<F>> &ctrl = LDLPivotCtrl<Base<F>>())¶
C API¶
Single-precision complex¶
-
ElError
ElHermitianSolve_c
(ElUpperOrLower uplo, ElOrientation orientation, ElConstMatrix_c A, ElMatrix_c B)¶
-
ElError
ElHermitianSolveDist_c
(ElUpperOrLower uplo, ElOrientation orientation, ElConstDistMatrix_c A, ElDistMatrix_c B)¶
Double-precision complex¶
-
ElError
ElHermitianSolve_z
(ElUpperOrLower uplo, ElOrientation orientation, ElConstMatrix_z A, ElMatrix_z B)¶
-
ElError
ElHermitianSolveDist_z
(ElUpperOrLower uplo, ElOrientation orientation, ElConstDistMatrix_z A, ElDistMatrix_z B)¶