Factorization

Python API

LDL(A[, conjugate=True[, pivType=BUNCH_KAUFMAN_A]])
Parameters
  • A – The (sequential or distributed) dense input/output matrix

  • conjugate – (optional) boolean for whether to perform LDLT or LDLH

  • pivType – (optional) the preferred pivoting strategy

Return type

Nothing is returned if pivType is LDL_WITHOUT_PIVOTING, but, otherwise, the subdiagonal of \(D\), dSub, and the permutation vector, p, are returned

The following Python pseudo-enum contains the list of allowable pivoting approaches for dense LDL factorization:

BUNCH_KAUFMAN_A

Hardcoded to the value 0

BUNCH_KAUFMAN_C

Not yet supported (and hardcoded to the value 1)

BUNCH_KAUFMAN_D

Hardcoded to the value 2

BUNCH_KAUFMAN_BOUNDED

Not yet supported (and hardcoded to the value 3)

BUNCH_PARLETT

Hardcoded to the value 4

LDL_WITHOUT_PIVOTING

Hardcoded to the value 5

C++ API

enum LDLPivotType

For specifying the symmetric pivoting strategy. The current (not yet all supported) options include:

enumerator BUNCH_KAUFMAN_A
enumerator BUNCH_KAUFMAN_C

Not yet supported

enumerator BUNCH_KAUFMAN_D
enumerator BUNCH_KAUFMAN_BOUNDED

Not yet supported

enumerator BUNCH_PARLETT
enumerator LDL_WITHOUT_PIVOTING
template<>
Real LDLPivotConstant<Real>(LDLPivotType pivotType)

Maps various LDL pivotings schemes to their optimal threshold constant.

template<>
class LDLPivotCtrl<Real>
LDLPivotType pivotType

The type of pivoting to perform (by default, BUNCH_KAUFMAN_A)

Real gamma

Pivot tolerance (by default, set to LDLPivotConstant<Real>(pivotType))

LDLPivotCtrl(LDLPivotType piv = BUNCH_KAUFMAN_A)
class LDLPivot
Int nb

Whether the pivot is 1x1 or 2x2.

Int from[2]

The source indices of the row or rows to swap with for the 1x1 or 2x2 pivot.

void LDL(Matrix<F> &A, Matrix<F> &dSub, Matrix<int> &p, bool conjugate = false, const LDLPivotCtrl<Base<F>> &ctrl = LDLPivotCtrl<Base<F>>())
void LDL(AbstractDistMatrix<F> &A, AbstractDistMatrix<F> &dSub, AbstractDistMatrix<int> &p, bool conjugate = false, const LDLPivotCtrl<Base<F>> &ctrl = LDLPivotCtrl<Base<F>>())

C API

ElLDLPivotType

An enum for specifying the symmetric pivoting strategy. The current (not yet all supported) options include:

  • EL_BUNCH_KAUFMAN_A

  • EL_BUNCH_KAUFMAN_C (not yet supported)

  • EL_BUNCH_KAUFMAN_D

  • EL_BUNCH_KAUFMAN_BOUNDED (not yet supported)

  • EL_BUNCH_PARLETT

ElLDLPivotCtrl_s
ElLDLPivotType pivotType
float gamma
ElLDLPivotCtrl_d
ElLDLPivotType pivotType
double gamma
ElLDLPivot
Int nb

Whether the pivot is 1x1 or 2x2.

Int from[2]

The source indices of the row or rows to swap with for the 1x1 or 2x2 pivot.

ElError ElLDLPiv_s(ElMatrix_s A, ElMatrix_s dSub, ElMatrix_i p)
ElError ElLDLPiv_d(ElMatrix_d A, ElMatrix_d dSub, ElMatrix_i p)
ElError ElLDLPiv_c(ElMatrix_c A, ElMatrix_c dSub, ElMatrix_i p, bool conjugate)
ElError ElLDLPiv_z(ElMatrix_z A, ElMatrix_z dSub, ElMatrix_i p, bool conjugate)
ElError ElLDLPivDist_s(ElDistMatrix_s A, ElDistMatrix_s dSub, ElDistMatrix_i p)
ElError ElLDLPivDist_d(ElDistMatrix_d A, ElDistMatrix_d dSub, ElDistMatrix_i p)
ElError ElLDLPivDist_c(ElDistMatrix_c A, ElDistMatrix_c dSub, ElDistMatrix_i p, bool conjugate)
ElError ElLDLPivDist_z(ElDistMatrix_z A, ElDistMatrix_z dSub, ElDistMatrix_i p, bool conjugate)