Julia: Merge bkfact and ldltfact

Created on 19 Dec 2017  路  4Comments  路  Source: JuliaLang/julia

Unless I'm missing something, it seems that bkfact and ldltfact perform the same function, one for dense matrices, the other for sparse. Among other things, it means that if one looks for a LDLT factorization, one finds ldltfact, sees that it works only for sparse matrices, and concludes that julia doesn't wrap dense LDLT factorization, as was the case e.g. in https://discourse.julialang.org/t/type-stable-matrix-factorization-corner-case-with-forwarddiff/7791/10. If possible, the two should be merged.

linear algebra

Most helpful comment

I'm fond of those papers that distinguish the factorizations using LBLt. (D means "diagonal" to me.) It's not even true that all matrices have an LDLt factorization, but all have an LBLt.

All 4 comments

They are related but not the same. What we call LDLt has a diagonal D matrix and doesn't apply pivoting. Bunch-Kaufman can have 2x2 blocks in the diagonal and applies pivoting. The Bunch-Kaufman furthermore uses some square roots when deciding between 1x1 and 2x2 blocks in the diagonal so in contrast to the LDLt it isn't possible to compute in rational arithmetic.

LDLT uses pivoting by default, but fair point on the 2x2 blocks, thanks! Still the functional uses are the same (factor this symmetric indefinite matrix), the current signatures are exclusive (sparse and dense), and the literature refers to LDLT even in the case where D has 2x2 blocks, so it looks like it would make sense to merge both into ldltfact.

Still the functional uses are the same (factor this symmetric indefinite matrix), the current signatures are exclusive (sparse and dense), and the literature refers to LDLT even in the case where D has 2x2 blocks

I agree and I think it would make sense to rename bkfact to ldltfact.

LDLT uses pivoting by default

Currently, we have two different versions of LDLt, one for SymTridiagonal and from SuiteSparse. The former doesn't use pivoting at all and the latter only uses pivoting during the symbolic factorization to reduce fill.

I'm fond of those papers that distinguish the factorizations using LBLt. (D means "diagonal" to me.) It's not even true that all matrices have an LDLt factorization, but all have an LBLt.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

omus picture omus  路  3Comments

sbromberger picture sbromberger  路  3Comments

dpsanders picture dpsanders  路  3Comments

omus picture omus  路  3Comments

TotalVerb picture TotalVerb  路  3Comments