[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: QR test failure with --enable-64
From: |
Jaroslav Hajek |
Subject: |
Re: QR test failure with --enable-64 |
Date: |
Fri, 19 Feb 2010 21:46:42 +0100 |
On Fri, Feb 19, 2010 at 6:19 PM, John W. Eaton <address@hidden> wrote:
> When I compile Octave with --enable-64 on an amd64 system, the
> following test from qr.cc fails because the computed norm is exactly
> equal to 10*eps. On the same system without --enable-64, the test
> passes. I don't know exactly why changing the size of integer
> indexes would change the result. My best guess is that the additional
> memory required by the index values forces the compiler to store some
> floating point values that are otherwise kept in registers.
Interesting. Is it just qrdelete that makes the difference, or is the
qr result also different?
> But
> that's just a guess. Anyway, what should we do about the test?
> Should I just change the < to <=, or increase the value of the
> multiplier for eps?
>
> AA = [0.091364 0.613038 0.027504 0.999083;
> 0.594638 0.425302 0.562834 0.603537;
> 0.383594 0.291238 0.742073 0.085574;
> 0.265712 0.268003 0.783553 0.238409;
> 0.669966 0.743851 0.457255 0.445057 ];
>
> [Q,R] = qr(AA);
> [Q,R] = qrdelete(Q,R,3);
> assert(norm(vec(Q'*Q - eye(5)),Inf) < 1e1*eps)
>
>
> jwe
>
The 1e1 factor is really ad hoc, so you can easily change it to 15 or 20.
--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz