Re: [eigen] Problem with LU and Cholesky inversion |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
The spamming continues...
The LU::solve() actually does evaluate its argument b into a matrix c and uses
only c from that point on... in particular it calls solveTriangular on c
only... so I really don't understand why it has trouble.
Moreover I added this test in test/lu.cpp:
// unit-test for a bad bug that escaped us for a long time:
// make sure that LU::solve() works well when passed an expression
m4 = (m1*m2).transpose();
lu.solve(m4.transpose(), &m2);
VERIFY_IS_APPROX(m4.transpose(), m1*m2);
This test succeeds ! This is strange as it seems the same as Timothy's code
which makes LU::solve() fail.
I'm puzzled!
Benoit
On Friday 10 October 2008 15:20:21 Benoît Jacob wrote:
> Hm I read too fast: indeed we also have the same problem in LU.... which is
> my baby i.e. my fault.
>
> Still not decided whether the right approach is to evaluate or to
> nest-by-value...
>
> Cheers,
> Benoit
>
> On Friday 10 October 2008 15:04:01 Benoît Jacob wrote:
> > On Friday 10 October 2008 14:58:18 Benoît Jacob wrote:
> > > Did you forget a nestByValue() ?
> >
> > Replying to myself: hm, rather a .eval() of course as a solver typically
> > uses each coeff many times.
> >
> > By the way: the solve() API in Cholesky is not homogeneous with the other
> > solvers, it returns by value while the other solvers have a C-style API.
> > Can you harmonize that by the way?
> >
> > Cheers,
> > Benoit
> >
> > ---
>
> ---
---