linear_algebra plugged.
[scilab.git] / scilab / modules / linear_algebra / tests / unit_tests / lu.dia.ref
1
2 // =============================================================================
3
4 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
5
6 // Copyright (C) ????-2008 - INRIA
7
8 //
9
10 //  This file is distributed under the same license as the Scilab package.
11
12 // =============================================================================
13
14 function r=Err(x),r=norm(x,1),endfunction
15
16 rand('normal')
17
18 //==========================================================================
19
20 //==============================      lu      ============================== 
21
22 //==========================================================================
23
24 //Empty matrix
25
26 A=[];
27
28 [L,U]=lu(A);
29
30 if L<>[]|U<>[] then bugmes();quit;end
31
32 [L,U,E]=lu(A);
33
34 if L<>[]|U<>[]|E<>[] then bugmes();quit;end
35
36 //Non full rank
37
38 A=rand(5,2);A=A*A';Ac=rand(5,2)+%i*rand(5,2);Ac=Ac*Ac';
39
40 [L,U,E]=lu(A);
41
42 if Err(L*U-E*A) >200*%eps then bugmes();quit;end
43
44 [L,U,E]=lu(Ac);
45
46 if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
47
48 //Small dimension
49
50 //---------------
51
52 //Square
53
54 A=rand(5,5);Ac=A+%i*rand(A);
55
56 //Real case 
57
58 [L,U]=lu(A);
59
60 if Err(L*U-A) >200*%eps then bugmes();quit;end
61
62 [L,U,E]=lu(A);
63
64 if Err(L*U-E*A) >200*%eps then bugmes();quit;end
65
66 //Complex case
67
68 [L,U]=lu(Ac);
69
70 if Err(L*U-Ac) >200*%eps then bugmes();quit;end
71
72 [L,U,E]=lu(Ac);
73
74 if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
75
76 //Fat
77
78 A=rand(3,5);Ac=A+%i*rand(A);
79
80 //Real case
81
82 [L,U]=lu(A);
83
84 if Err(L*U-A) >200*%eps then bugmes();quit;end
85
86 [L,U,E]=lu(A);
87
88 if Err(L*U-E*A) >200*%eps then bugmes();quit;end
89
90 //Complex case
91
92 [L,U]=lu(Ac);
93
94 if Err(L*U-Ac) >200*%eps then bugmes();quit;end
95
96 [L,U,E]=lu(Ac);
97
98 if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
99
100 //Tall
101
102 A=rand(5,3);Ac=A+%i*rand(A);
103
104 //Real case
105
106 [L,U]=lu(A);
107
108 if Err(L*U-A) >200*%eps then bugmes();quit;end
109
110 [L,U,E]=lu(A);
111
112 if Err(L*U-E*A) >200*%eps then bugmes();quit;end
113
114 //Complex case
115
116 [L,U]=lu(Ac);
117
118 if Err(L*U-Ac) >200*%eps then bugmes();quit;end
119
120 [L,U,E]=lu(Ac);
121
122 if Err(L*U-E*Ac) >200*%eps then bugmes();quit;end
123
124 //large dimension
125
126 //---------------
127
128 //Square
129
130 A=rand(50,50);Ac=A+%i*rand(A);
131
132 //Real case
133
134 [L,U]=lu(A);
135
136 if Err(L*U-A) >1000*%eps then bugmes();quit;end
137
138 [L,U,E]=lu(A);
139
140 if Err(L*U-E*A) >1000*%eps then bugmes();quit;end
141
142 //Complex case
143
144 [L,U]=lu(Ac);
145
146 if Err(L*U-Ac) >1000*%eps then bugmes();quit;end
147
148 [L,U,E]=lu(Ac);
149
150 if Err(L*U-E*Ac) >1000*%eps then bugmes();quit;end
151
152 //Fat
153
154 A=rand(30,50);Ac=A+%i*rand(A);
155
156 //Real case
157
158 [L,U]=lu(A);
159
160 if Err(L*U-A) >1000*%eps then bugmes();quit;end
161
162 [L,U,E]=lu(A);
163
164 if Err(L*U-E*A) >1000*%eps then bugmes();quit;end
165
166 //Complex case
167
168 [L,U]=lu(Ac);
169
170 if Err(L*U-Ac) >1000*%eps then bugmes();quit;end
171
172 [L,U,E]=lu(Ac);
173
174 if Err(L*U-E*Ac) >1000*%eps then bugmes();quit;end
175
176 //Tall
177
178 A=rand(50,30);Ac=A+%i*rand(A);
179
180 //Real case
181
182 [L,U]=lu(A);
183
184 if Err(L*U-A) >1000*%eps then bugmes();quit;end
185
186 [L,U,E]=lu(A);
187
188 if Err(L*U-E*A) >1000*%eps then bugmes();quit;end
189
190 //Complex case
191
192 [L,U]=lu(Ac);
193
194 if Err(L*U-Ac) >1000*%eps then bugmes();quit;end
195
196 [L,U,E]=lu(Ac);
197
198 if Err(L*U-E*Ac) >1000*%eps then bugmes();quit;end
199