Certain indefinite matrices possess a LDL' factorization with D diagonal 
(note that this is not Bunch-Parlett/Kaufmann). In Julia 0.3, it was 
possible to compute this factorization:

julia> VERSION
v"0.3.8"

julia> A = [1.0 1 ; 1 -1];

julia> LDL = cholfact(sparse(A));

julia>

... but sadly, no more in 0.4:

julia> VERSION
v"0.4.0-dev+6441"

julia> A = [1.0 1 ; 1 -1];

julia> LDL = cholfact(sparse(A));
ERROR: Base.LinAlg.PosDefException(1)
 in cholfact at sparse/cholmod.jl:1196
 in cholfact at sparse/cholmod.jl:1219

That's too bad because for one, large-scale computational optimization can 
go a long way with the sparse factorization of such matrices, without 
resorting to the far more complicated (but sometimes necessary) 2x2 pivots. 
The existence and stability of this factorization has been studied in the 
literature, and it can be shown to exist for all so-called symmetric and 
quasi-definite matrices (a generalization of definite matrices). Turning 
off the pivot sign check in Cholesky is sufficient to implement it, so 
that's all that needs to be done in Cholmod.

Any chance of re-enabling this feature?

Reply via email to