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