Add the <-- JVM NOT MANDATORY --> TAG
[scilab.git] / scilab / modules / umfpack / tests / unit_tests / umf_luget.tst
1 // ============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2007-2008 - Bruno PINCON
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // ============================================================================
7
8 // <-- JVM NOT MANDATORY -->
9
10 // this is the test matrix from UMFPACK
11
12 A = sparse( [ 2  3  0  0  0;
13               3  0  4  0  6; 
14               0 -1 -3  2  0; 
15               0  0  1  0  0; 
16               0  4  2  0  1] );
17 Lup = umf_lufact(A);
18 [L,U,p,q,R] = umf_luget(Lup);
19
20 if nnz(L) <> 9 then pause, end
21 if nnz(U) <> 9 then pause, end
22
23 if or(p <> [ 3; 4; 1; 5; 2 ]) then pause, end
24 if or(q <> [ 4; 3; 1; 5; 2 ]) then pause, end
25 if or(R <> [ 5; 13; 6; 1; 7 ]) then pause, end
26
27 B = A;
28 for i=1:5, B(i,:) = B(i,:)/R(i); end // apply the row scaling
29 B(p,q) - L*U;  // must be a (quasi) nul matrix
30
31 if nnz(L*U) <> 13 then pause, end
32 if nnz(B(p,q)) <> 12 then pause, end
33
34 umf_ludel(Lup); // clear memory
35
36 // the same with a complex matrix
37 A = sparse( [ 2+%i  3+2*%i  0      0    0;
38               3-%i  0       4+%i   0    6-3*%i; 
39               0    -1+%i   -3+6*%i 2-%i 0; 
40               0     0       1-5*%i 0    0; 
41               0     4       2-%i   0    1] );
42 Lup = umf_lufact(A);
43 [L,U,p,q,R] = umf_luget(Lup);
44
45 if nnz(L) <> 9 then pause, end
46 if nnz(U) <> 9 then pause, end
47
48 if or(p <> [ 3; 4; 1; 5; 2 ]) then pause, end
49 if or(q <> [ 4; 3; 1; 5; 2 ]) then pause, end
50 if or(R <> [ 8; 18; 14; 6; 8 ]) then pause, end
51
52 B = A;
53 for i=1:5, B(i,:) = B(i,:)/R(i); end // apply the row scaling
54 B(p,q) - L*U;  // must be a (quasi) nul matrix
55 if nnz(B(p,q)) <> 12 then pause, end
56 if nnz(L*U) <> 13 then pause, end
57
58 umf_ludel(Lup) // clear memory