Fix sparse tests
[scilab.git] / scilab / modules / sparse / tests / unit_tests / conjgrad_list.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier: added cgs, bicg and bicgstab
4 // Copyright (C) 2008 - INRIA - Michael Baudin
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // =============================================================================
8 //
9 // <-- CLI SHELL MODE -->
10 //------------------------------------------------------------------
11 // PCG
12 // Numerical tests
13 // Case where A is given as a function computing the right-hand side
14 mymatrix=[ 94  0   0   0    0   28  0   0   32  0
15 0   59  13  5    0   0   0   10  0   0
16 0   13  72  34   2   0   0   0   0   65
17 0   5   34  114  0   0   0   0   0   55
18 0   0   2   0    70  0   28  32  12  0
19 28  0   0   0    0   87  20  0   33  0
20 0   0   0   0    28  20  71  39  0   0
21 0   10  0   0    32  0   39  46  8   0
22 32  0   0   0    12  33  0   8   82  11
23 0   0   65  55   0   0   0   0   11  100];
24 b = [154.
25 87.
26 186.
27 208.
28 144.
29 168.
30 158.
31 135.
32 178.
33 231.];
34 function y=Atimesx(x,mymatrix)
35     y=mymatrix*x
36 endfunction
37 // With the default 10 iterations, the algorithm performs well
38 Alist = list(Atimesx,mymatrix);
39 [xcomputed, fail, err, iter, res]=conjgrad(Alist,b,"pcg");
40 xexpected=ones(10,1);
41 if norm(xcomputed-xexpected)>11**3*%eps then bugmes();quit;end
42 if fail<>0 then bugmes();quit;end
43 if iter<>10 then bugmes();quit;end
44 if err > 10**3*%eps then bugmes();quit;end
45 //------------------------------------------------------------------
46 // CGS
47 // CGS needs 11 iterations to converge
48 [xcomputed, fail, err, iter, res]=conjgrad(Alist,b,"cgs",maxIter=11);
49 if norm(xcomputed-xexpected)>100**3*%eps then bugmes();quit;end
50 if fail<>0 then bugmes();quit;end
51 if iter<>11 then bugmes();quit;end
52 if err > 100**3*%eps then bugmes();quit;end
53 //------------------------------------------------------------------
54 // BICG
55 // With the default 10 iterations, the algorithm performs well
56 [xcomputed, fail, err, iter, res]=conjgrad(Alist,b,"bicg");
57 if norm(xcomputed-xexpected)>11**3*%eps then bugmes();quit;end
58 if fail<>0 then bugmes();quit;end
59 if iter<>10 then bugmes();quit;end
60 if err > 10**3*%eps then bugmes();quit;end
61 //------------------------------------------------------------------
62 // BICGSTAB
63 // BICGSTAB only needs 8 iterations to converge to the required tol, but is less accurate on arrival.
64 [xcomputed, fail, err, iter, res]=conjgrad(Alist,b,"bicgstab");
65 if norm(xcomputed-xexpected)>10000**3*%eps then bugmes();quit;end
66 if fail<>0 then bugmes();quit;end
67 if iter<>8 then bugmes();quit;end
68 if err > 1000**3*%eps then bugmes();quit;end