I wasn't proposing continuing the factorization if a diagonal term
is (or becomes) very small. I just propose that the test be
if(abs(diag) < eps) return. This should insure that the algorithm
doesn't compute a bad result, shouldn't it? My own experience
is that this will succeed often enough to make it useful.
>But the problem is that pivoting won't help here if all the remaining
>diagonal coefficients are zero. Indeed, a meaningful pivoting LDLt is
>of the form:
Are you talking about a case where an LDLt factorization exists but the matrix is singular?
To be honest, before starting this current thread, I didn't even realize such a case could
exist. What do people use this factorization for-- calculating matrix rank? I think most
people are interested in the non-singular case but, of course, would like to know if the
factorization algorithm fails.
This discussion has brought up some interesting issues. I decided to take a closer look at how
Lapack approaches this issue (probably should have done that before my first post ;-)). Anyway,
routine dsytrf does an LDLt factorization for a symmetric but not necessarily positive definite
matrix. They *have* chosen to include diagonal pivoting in the implementation; obviously a lot
more work.
Bill