Add the <-- JVM NOT MANDATORY --> TAG
[scilab.git] / scilab / modules / sparse / tests / unit_tests / pcg_numerical.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2008 - INRIA - Michael Baudin
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- JVM NOT MANDATORY -->
9
10 // Numerical tests
11 //Well conditionned problem
12 A=[ 94  0   0   0    0   28  0   0   32  0
13 0   59  13  5    0   0   0   10  0   0
14 0   13  72  34   2   0   0   0   0   65
15 0   5   34  114  0   0   0   0   0   55
16 0   0   2   0    70  0   28  32  12  0
17 28  0   0   0    0   87  20  0   33  0
18 0   0   0   0    28  20  71  39  0   0
19 0   10  0   0    32  0   39  46  8   0
20 32  0   0   0    12  33  0   8   82  11
21 0   0   65  55   0   0   0   0   11  100];
22 b = [154.
23 87.
24 186.
25 208.
26 144.
27 168.
28 158.
29 135.
30 178.
31 231.];
32 // With the default 10 iterations, the algorithm performs well
33 [xcomputed, fail, err, iter, res]=pcg(A,b);
34 xexpected=ones(10,1);
35 if norm(xcomputed-xexpected)>10**3*%eps then pause,end
36 if fail<>0 then pause,end
37 if iter<>10 then pause,end
38 if err > 10**3*%eps then pause,end
39 // With a tolerance of 1.e-3, there are 5 iterations and the status is "sucess"
40 tol=1.d-3;
41 [xcomputed, fail, err, iter, res]=pcg(A,b,tol);
42 if fail<>0 then pause,end
43 if iter>10 then pause,end
44 // With a tolerance of %eps but only 5 iterations allowed, the status is "fail"
45 tol=%eps;
46 maxIter = 5;
47 [xcomputed, fail, err, iter, res]=pcg(A,b,tol,maxIter);
48 if fail<>1 then pause,end
49 if iter<>maxIter then pause,end
50