octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

QR failing 1 test without qrupdate library


From: Rik
Subject: QR failing 1 test without qrupdate library
Date: Sat, 08 May 2010 10:54:18 -0700

While trying to debug another problem, I had occasion to compile octave
without most of it's helper libraries.  When running 'make check' the qr
test suite failed on this test:

 AA = single([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,'row');
 assert(norm(vec(Q'*Q - eye(4,'single')),Inf) < 1e1*eps('single'))

The norm as calculated by Octave is 1.4305e-06, whereas the tolerance is
1.1921e-06.

According to Octave when running the qrdelete step

warning: In this version of Octave, QR & Cholesky updating routines
simply update the matrix and recalculate factorizations.
To use fast algorithms, link Octave with the qrupdate library.

My understanding is that the QR routines from qrupdate are not only faster
but more accurate.  When I link against them the error is always less than
the tolerance in the assert block.

My solution would be to transform this test into two tests with one
protected by a testif HAVE_QRUPDATE which uses the lower tolerance and an
ordinary block which uses a higher tolerance.  On the other hand, I thought
I would post in case someone believes that the tolerance should be the same
and there is another reason why this is failing.

--Rik


reply via email to

[Prev in Thread] Current Thread [Next in Thread]