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?
