1//<-- CLI SHELL MODE -->
2// =============================================================================
3// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4// Copyright (C) ????-2008 - INRIA
5//
6//  This file is distributed under the same license as the Scilab package.
7// =============================================================================
8// Unit test for Scilab LU
9pi=%pi;
10i=%i;
11e=%e;
12a=rand(4,4);b=rand(5,4);ac=a+i*rand(4,4);bc=b+i*rand(5,4);
13assert_checktrue(abs((1/a)*a-eye())< 100*%eps);
14assert_checktrue(abs((i/a)*a-i*eye())< 100*%eps);
15assert_checktrue(abs((1/ac)*ac-eye())< 100*%eps);
16assert_checktrue(abs((i/ac)*ac-i*eye())< 100*%eps);
17assert_checktrue(abs(a*(a\1)-eye())< 100*%eps);
18assert_checktrue(abs(a*(a\i)-i*eye())< 100*%eps);
19assert_checktrue(abs(ac*(ac\1)-eye())< 100*%eps);
20assert_checktrue(abs(ac*(ac\i)-eye()*i)< 100*%eps);
21//
22assert_checktrue(abs(inv(a)*a-eye())< 100*%eps);
23assert_checktrue(abs(inv(ac)*ac-eye())< 100*%eps);
24//
25assert_checktrue(abs((b/a)*a-b)< 100*%eps);
26assert_checktrue(abs((b/ac)*ac-b)< 100*%eps);
27assert_checktrue(abs((bc/a)*a-bc)< 100*%eps);
28assert_checktrue(abs((bc/ac)*ac-bc)< 100*%eps);
29//
30assert_checktrue(abs(a*(a\b')-b')< 100*%eps);
31assert_checktrue(abs(ac*(ac\b')-b')< 100*%eps);
32assert_checktrue(abs(a*(a\bc')-bc')< 100*%eps);
33assert_checktrue(abs(ac*(ac\bc')-bc')< 100*%eps);
34//
35[l u]=lu(a);
36assert_checktrue(abs(l*u-a)< 100*%eps);
37[l u]=lu(ac);
38assert_checktrue(abs(l*u-ac)< 100*%eps);
39//
40h1(5,5)=0;for k=1:5,for l=1:5, h1(k,l)=1/(k+l-1);end;end;
41assert_checkalmostequal(inv(h1),testmatrix("hilb",5));
42//
43assert_checktrue(abs(det(testmatrix("magic",5))-5070000)< 1.e-7);
44//
45b=a*a';h=chol(b);
46assert_checkalmostequal(h'*h, b, [], 100*%eps);
47bc=triu(ac*ac');bc=bc+bc'-diag(real(diag(bc)));;h=chol(bc);
48assert_checkalmostequal(h'*h, bc, [], 100*%eps);
49