Mercurial > forge
changeset 12619:a32bd500938b octave-forge
relaxed pcr/pcg testing by introducing a tolerance.
this does not mean that the tester is well made!
author | michelemartone |
---|---|
date | Tue, 19 May 2015 08:39:01 +0000 |
parents | 224e57d04d01 |
children | 40ee970a56c3 |
files | main/sparsersb/inst/sparsersbtester.m |
diffstat | 1 files changed, 6 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/main/sparsersb/inst/sparsersbtester.m Tue May 19 07:54:43 2015 +0000 +++ b/main/sparsersb/inst/sparsersbtester.m Tue May 19 08:39:01 2015 +0000 @@ -176,6 +176,7 @@ function match=testpcgm(OM,XM) # FIXME! This test ignores OM and XM ! match=1; + tol=1e-10; A=sparse ([11,12;21,23]);X=[11;22];B=A*X;X=[0;0]; [OX, OFLAG, ORELRES, OITER, ORESVEC, OEIGEST]=pcg(A,B); A=sparsersb([11,12;21,23]);X=[11;22];B=A*X;X=[0;0]; @@ -193,14 +194,14 @@ [l, u, p, q] = luinc (A, 1.e-3); [OX, OFLAG, ORELRES, OITER, ORESVEC, OEIGEST]= pcg ( A ,b); [XX, XFLAG, XRELRES, XITER, XRESVEC, XEIGEST]= pcg (sparsersb(A),b); - match&=(sum(OX-XX)==0.0);# FIXME: a very brittle check! + match&=(norm(OX-XX)<tol);# FIXME: a very brittle check! # #function y = apply_a (x) # y = [1:N]' .* x; #endfunction [OX, OFLAG, ORELRES, OITER, ORESVEC, OEIGEST]= pcg ( A ,b, 1.e-6, 500, l,u); [XX, XFLAG, XRELRES, XITER, XRESVEC, XEIGEST]= pcg (sparsersb(A),b, 1.e-6, 500, l,u); - match&=(sum(OX-XX)==0.0);# FIXME: a very brittle check! + match&=(norm(OX-XX)<tol);# FIXME: a very brittle check! testmsg(match,"pcg"); end @@ -216,6 +217,7 @@ function match=testpcrm(OM,XM) # FIXME! This test ignores OM and XM ! match=1; + tol=1e-10; A=sparse ([11,12;21,23]);X=[11;22];B=A*X;X=[0;0]; [OX, OFLAG, ORELRES, OITER, ORESVEC]=pcr(A,B); A=sparsersb([11,12;21,23]);X=[11;22];B=A*X;X=[0;0]; @@ -233,14 +235,14 @@ [l, u, p, q] = luinc (A, 1.e-3); [OX, OFLAG, ORELRES, OITER, ORESVEC]= pcr ( A ,b); [XX, XFLAG, XRELRES, XITER, XRESVEC]= pcr (sparsersb(A),b); - match&=(sum(OX-XX)==0.0);# FIXME: a very brittle check! + match&=(norm(OX-XX)<tol);# FIXME: a very brittle check! # #function y = apply_a (x) # y = [1:N]' .* x; #endfunction [OX, OFLAG, ORELRES, OITER, ORESVEC]= pcr ( A ,b, 1.e-6, 500, l); [XX, XFLAG, XRELRES, XITER, XRESVEC]= pcr (sparsersb(A),b, 1.e-6, 500, l); - match&=(sum(OX-XX)==0.0);# FIXME: a very brittle check! + match&=(norm(OX-XX)<tol);# FIXME: a very brittle check! testmsg(match,"pcr"); end