Re: [eigen] Problem with LU and Cholesky inversion |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Problem with LU and Cholesky inversion
- From: "Timothy Hunter" <tjhunter@xxxxxxxxxxxx>
- Date: Fri, 10 Oct 2008 08:22:16 -0700
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=FVTxiIarNr0B92imltiBGs4uoMKU1BMhNFfiyhtIhyU=; b=C1Q3aPb30wg1feIHzudidlOGmUyJECrGKdI3KlbO0I8oEBKMAU+31VMvQO+yGoF+/N +KiPOyPIW/LCbFTZWMNp4rT7PLPlV9BccQjLgXzaauYvR/q5L0ojAx9am/XBPnUA+5Ka QIjF0X2eF60uHl0VTzD1zw5OeT+3ObmwgnG/4=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=xXSKxULBxAjJnTRuh5FSuU5KkyVi6gFzPQuiuRTFJddHNNS9tN0XRjIQuWYifbT5Oi mkDR5LgDSeIfNx7kE3LSVHp1N2J13Lfdp6AvS0KU3td3BP/MnCy9AJKUL5bqZaCXXtZL TbBr5cj6l7PkeyUzQFVIRs/jsqn6PrtG8TZfQ=
At one point, I was trying to figure out what was wrong in the
.solve() method of the cholesky decomposition and I decomposed the
solveTriangular(diag inverse(solveTriangular())) to check each step.
It had an assert failure about the row major bit.
Let me check if I can get this code back.
On Fri, Oct 10, 2008 at 7:35 AM, Benoît Jacob <jacob@xxxxxxxxxxxxxxx> wrote:
> 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
>> >
>> > ---
>>
>> ---
>
>
>
> ---
>
>