# HG changeset patch # User jwe # Date 1033088027 0 # Node ID 593e213748b9c5cacf794124c24dbcd24118eb69 # Parent 2c088a2f36e200558c26dee7fd650ecf10c14008 [project @ 2002-09-27 00:53:47 by jwe] diff -r 2c088a2f36e2 -r 593e213748b9 test/ChangeLog --- a/test/ChangeLog Thu Sep 26 22:48:24 2002 +0000 +++ b/test/ChangeLog Fri Sep 27 00:53:47 2002 +0000 @@ -1,3 +1,10 @@ +2002-09-26 Paul Kienzle + + * octave.test/linalg/qr-7.m: Replace large random matrix tests + of economy QR decomposition with small predictable tests. + Include numerically sensitive rosser matrix test. Don't + report the measured norms. + 2002-04-24 Bill Lash * test/octave.test/signal/signal.exp: Add unwrap test. diff -r 2c088a2f36e2 -r 593e213748b9 test/octave.test/linalg/qr-7.m --- a/test/octave.test/linalg/qr-7.m Thu Sep 26 22:48:24 2002 +0000 +++ b/test/octave.test/linalg/qr-7.m Fri Sep 27 00:53:47 2002 +0000 @@ -1,25 +1,27 @@ function retval = testqr (q, r, a, p) - tol = 512*eps; + tol = 10*eps; retval = 0; if (nargin == 3) n1 = norm (q*r-a); n2 = norm (q'*q-eye(columns(q))); retval = (n1 < tol && n2 < tol); else - n1 = norm (q'*q-eye(columns(q))) + n1 = norm (q'*q-eye(columns(q))); retval = (n1 < tol); if (isvector (p)) - n2 = norm (q*r-a(:,p)) + n2 = norm (q*r-a(:,p)); retval = (retval && n2 < tol); else - n2 = norm (q*r - a*p) + n2 = norm (q*r - a*p); retval = (retval && n2 < tol); endif endif endfunction -t = zeros (16, 1); +t = ones (24, 1); j = 1; + +if 0 # eliminate big matrix tests a = rand(5000,20); [q,r]=qr(a,0); t(j++) = testqr(q,r,a); [q,r]=qr(a',0); t(j++) = testqr(q,r,a'); @@ -31,6 +33,7 @@ [q,r]=qr(a',0); t(j++) = testqr(q,r,a'); [q,r,p]=qr(a,0); t(j++) = testqr(q,r,a,p); [q,r,p]=qr(a',0); t(j++) = testqr(q,r,a',p); +endif a = [ ones(1,15); sqrt(eps)*eye(15) ]; [q,r]=qr(a); t(j++) = testqr(q,r,a); @@ -44,4 +47,28 @@ [q,r,p]=qr(a); t(j++) = testqr(q,r,a,p); [q,r,p]=qr(a'); t(j++) = testqr(q,r,a',p); -all (t) +a = [ ones(1,15); sqrt(eps)*eye(15) ]; +[q,r]=qr(a,0); t(j++) = testqr(q,r,a); +[q,r]=qr(a',0); t(j++) = testqr(q,r,a'); +[q,r,p]=qr(a,0); t(j++) = testqr(q,r,a,p); +[q,r,p]=qr(a',0); t(j++) = testqr(q,r,a',p); + +a = a+1i*randn(size(a))*sqrt(eps); +[q,r]=qr(a,0); t(j++) = testqr(q,r,a); +[q,r]=qr(a',0); t(j++) = testqr(q,r,a'); +[q,r,p]=qr(a,0); t(j++) = testqr(q,r,a,p); +[q,r,p]=qr(a',0); t(j++) = testqr(q,r,a',p); + +a = [ + 611 196 -192 407 -8 -52 -49 29 + 196 899 113 -192 -71 -43 -8 -44 + -192 113 899 196 61 49 8 52 + 407 -192 196 611 8 44 59 -23 + -8 -71 61 8 411 -599 208 208 + -52 -43 49 44 -599 411 208 208 + -49 -8 8 59 208 208 99 -911 + 29 -44 52 -23 208 208 -911 99 +]; +[q,r] = qr(a); + +all (t) && norm(q*r-a) < 2000*eps