Re: [eigen] Complex symmetric Cholesky factorization |
[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]
On Thu, Aug 13, 2015 at 9:28 PM, John Daily <John.Daily@xxxxxxxxxxxxxxxxx> wrote:Greetings, certain symmetric complex (non-Hermitian) matrices admit an LL^T/LDL^T factorization[1] (rather than an LL^H LDL^H). I am working with sparse matrices and the code changes to support this are minimal and are all encompassed in Simplicial_Cholesky_impl.h, in the factorize method, as well as the updated solve calling transpose rather than selfadjointView. I have two questions:Yes we are aware of that and this has been a planed feature for a long time.2) If so what would be an acceptable way to do this, that would not cause surprise to users? It would seem that a separate template parameter or even function call would make this explicit, such as instead of .factorize() calling .factorizeComplexSymmetric() or something.We already have a SelfAdjoint and Symmetric enums to distinguish between the two cases, so perhaps an idea would be to allow to pass Symmetric to the second template parameter, like:[Simplicial]L[D]LT<MatrixType, {{Lower,Upper,Lower|Upper}[|Symmetric] , Symmetric}>
For consistency I'm including the dense factorizations here.
Actually, this solution is already the one we adopted for PardisoLLT<> and PardisoLDLT<>.
In a second time, for consistency, we should also add a symmetricView<>() method to [Sparse]MatrixBase<> returning a SelfAdjointView<...,{Upper,Lower}[|Symmetric]>. Likewise, we could also think about adding templated variants of adjoint() / selfadjointView() to ease writing generic code with true compile-time branches...
cheers,gael
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |