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 basic operations
9pi=%pi;
10i=%i;
11e=%e;
121;
13a=1;
14b=[1 2 3];
15c=[1 2 3;4 5 6];
16d=[1 2 3;4 5 6]';
17d=[1 2 3 4;4 5 6 7;8 9 10 11;12 13 14 15];
18d=[1 2;3 4];
19e1=[[1 2] [3 4];[5 6 7 8];[9;10;11;12]'];
20f([1 3 5],[1 2 3])=[-1 -2 -3;-4 -5 -6;-7 -8 -9];
21g=[i,2,3;1 i 3;1 2 i];
22h=[i 1 2 i 3];
23o=[1 i i 2 3]';
24b(2)=3;
25e1(1,3)=1;
26p='apcdefghijklmnopqrstuvwxyz0123456789';
27// test de stackg
28a,b,c,d,e1,f,g,h,o,p
29 a  =
30   1.
31 b  =
32   1.   3.   3.
33 c  =
34   1.   2.   3.
35   4.   5.   6.
36 d  =
37   1.   2.
38   3.   4.
39 e1  =
40   1.   2.    1.    4.
41   5.   6.    7.    8.
42   9.   10.   11.   12.
43 f  =
44  -1.  -2.  -3.
45   0.   0.   0.
46  -4.  -5.  -6.
47   0.   0.   0.
48  -7.  -8.  -9.
49 g  =
50   0. + i     2. + 0.i   3. + 0.i
51   1. + 0.i   0. + i     3. + 0.i
52   1. + 0.i   2. + 0.i   0. + i
53 h  =
54   0. + i     1. + 0.i   2. + 0.i   0. + i     3. + 0.i
55 o  =
56   1. + 0.i
57   0. - i
58   0. - i
59   2. + 0.i
60   3. + 0.i
61 p  =
62  "apcdefghijklmnopqrstuvwxyz0123456789"
63assert_checkequal(b(2),3);
64assert_checkequal(e1(1,3),1);
65assert_checkequal(e1([1 2],[3 4]),[1 4;7 8]);
66assert_checkequal(e1(1:2,:),[1 2 1 4;5 6 7 8]);
67assert_checkequal(e1(:,4),[4; 8; 12]);
68assert_checkequal(e1(:,:),[1 2 1 4; 5 6 7 8; 9 10 11 12]);
69assert_checkequal(g(1,1),i);
70assert_checkequal(g(:,1),[i;1;1]);
71assert_checkequal(g(1:2,:),[i,2,3; 1,i,3]);
72assert_checkequal(g(:,:),[i,2,3;1,i,3;1,2,i]);
73assert_checkequal(o',[1 i i 2 3]);
74//test de stack2
75//
76// additions...
77assert_checkequal([1 2 3;4 5 6]-[1 2 3;4 5 6],[0,0,0;0,0,0]);
78assert_checkequal([1 2 3;4 5 6]+2*[1 2 3;4 5 6]-[1 2 3;4 5 6]*3, [0,0,0;0,0,0]);
79assert_checktrue([1 i 3;4 5 i]+2*[1 i 3;4 5 i]-[1 i 3;4 5 i]*3 == [0,0,0;0,0,0]);
80assert_checktrue([2*i -4*i 2*i]+2*[i -2*i i]+i*[2 -4 2]-[i -2*i i]*2 -2*[2 -4 2]*i == [0,0,0]);
81//
82assert_checkequal(2\[4 8 16]/2-[1 2 4],[0,0,0]);
83assert_checktrue(i\[2*i 2 i*4]/i-[-i*2 -2 -4*i] == [0,0,0]);
84// element wise operations
85assert_checkequal([1 2;3 4;5 6].*[1 2;3 4;5 6]-[1 4;9 16;25 36],[0,0;0,0;0,0]);
86assert_checktrue([1 2;3 4;5 6*i].*[1 2;3 4;5 6]-[1 4;9 16;25 36*i] == [0,0;0,0;0,0]);
87assert_checktrue([1 2;3 4;5 6].*[1 2;3 4;5 6*i]-[1 4;9 16;25 36*i] == [0,0;0,0;0,0]);
88assert_checktrue([1 2;3 4;5 6*i].*[1 2;3 4;5 6*i]-[1 4;9 16;25 -36] == [0,0;0,0;0,0]);
89//
90assert_checkequal([2 9 8;3 10 15]./[2 3 4;3 5 5]-[1 3 2;1 2 3],[0,0,0;0,0,0]);
91assert_checktrue([2 9*i 8;3 10 15]./[2 3 4;3 5 5]-[1 3*i 2;1 2 3] == [0,0,0;0,0,0]);
92assert_checktrue([2 9 8;3 10 15]./[2*i 3 4;3 5 5]-[-i 3 2;1 2 3] == [0,0,0;0,0,0]);
93assert_checktrue([2*i 9 8;3 10 15]./[2*i 3 4;3 5 5]-[1 3 2;1 2 3] == [0,0,0;0,0,0]);
94//
95assert_checkequal([2 3 4;3 5 5].\[2 9 8;3 10 15]-[1 3 2;1 2 3],[0,0,0;0,0,0]);
96assert_checktrue([2 i 4;3 5 5].\[2 9 8;3 10 15]-[1 -9*i 2 ;1 2 3] == [0,0,0;0,0,0]);
97assert_checktrue([2 3 4;3 5 5].\[i 9 8;3 10 15]-[.5*i 3 2;1 2 3] == [0,0,0;0,0,0]);
98assert_checktrue([i 3 4;3 5 5].\[i 9 8;3 10 15]-[1 3 2;1 2 3] == [0,0,0;0,0,0]);
99//multiplication
100assert_checkequal([1 2 3;4 5 6]*[3;2;1]-[10;28],[0;0]);
101assert_checktrue([1 i 3;4 5 6]*[3;2;1]-[6+2*i;28] == [0;0]);
102assert_checktrue([1 2 3;4 5 6]*[i;2;1]-[i+7;4*i+16] == [0;0]);
103assert_checktrue([1 i 3;2*i,-i,1]*[i;-i;i]-[4*i+1;-3+i] == [0;0]);
104//eye
105assert_checkequal(eye(4,4),[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1]);
106//a+-b*eye a*eye+-b a+-eye*b eye*a+-b
107assert_checkequal(-2*eye()+[1 2;3 4]+eye()*2-[1 2;3 4],[0,0;0,0]);
108assert_checktrue(-2*i*eye()+[1 2;3 4]+eye()*2*i-[1 2;3 4] == [0 0;0 0]);
109// :
110assert_checkequal(1:10,[1 2 3 4 5 6 7 8 9 10]);
111assert_checkalmostequal(1:.1:2,[1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2]);
112// for
113for k=1:3,for l=1:2,a(k,l)=k+l;end;end;
114assert_checkequal(a,[2,3;3,4;4,5]);
115assert_checkequal(diag([1 2 3])-[1 0 0;0 2 0;0 0 3],[0 0 0;0 0 0;0 0 0]);
116assert_checktrue(diag([1 i 2])-[1 0 0;0 i 0;0 0 2] == [0,0,0;0,0,0;0,0,0]);
117a=[1 2 3 4;5 6 7 8];
118c=a;
119c(1,1)=i;
120assert_checkequal(diag(a)-[1;6],[0;0]);
121assert_checkequal(diag(a,1)-[2;7],[0;0]);
122assert_checkequal(diag(a,-1)-[5],0);
123assert_checkequal(diag(a,4),[]);
124assert_checktrue(diag(c)-[i;6] == [0;0]);
125assert_checktrue(diag(c,1)-[2;7] == [0;0]);
126assert_checktrue(diag(c,-1)-[5] == 0);
127assert_checktrue(diag(c,4) == []);
128//
129assert_checkequal(eye(a),[1,0,0,0;0,1,0,0]);
130assert_checktrue(eye(c)==[1,0,0,0;0,1,0,0]);
131assert_checktrue(eye(3,3)==[1,0,0;0,1,0;0,0,1]);
132assert_checkequal(eye(2,3),[1,0,0;0,1,0]);
133//
134assert_checkequal(ones(a),[1,1,1,1;1,1,1,1]);
135assert_checkequal(ones(c),[1,1,1,1;1,1,1,1]);
136assert_checkequal(ones(3,3),[1,1,1;1,1,1;1,1,1]);
137assert_checkequal(ones(3,2),[1,1;1,1;1,1]);
138//
139rand("seed", 0);
140rand(a)
141 ans  =
142   0.2113249   0.0002211   0.6653811   0.8497452
143   0.7560439   0.3303271   0.6283918   0.685731
144rand(c)
145 ans  =
146         column 1 to 2
147   0.8782165 + 0.2312237i   0.5608486 + 0.8833888i
148   0.068374  + 0.2164633i   0.6623569 + 0.6525135i
149         column 3 to 4
150   0.7263507 + 0.3076091i   0.5442573 + 0.2146008i
151   0.1985144 + 0.9329616i   0.2320748 + 0.312642i
152rand(3,3)
153 ans  =
154   0.3616361   0.4826472   0.5015342
155   0.2922267   0.3321719   0.4368588
156   0.5664249   0.5935095   0.2693125
157rand(3,2)
158 ans  =
159   0.6325745   0.0437334
160   0.4051954   0.4818509
161   0.9184708   0.2639556
162rand()
163 ans  =
164   0.4148104
165rand("uniform")
166rand("normal")
167rand("seed", 5)
168rand("seed", 0)
169//
170abs(c)
171 ans  =
172   1.   2.   3.   4.
173   5.   6.   7.   8.
174abs(a)
175 ans  =
176   1.   2.   3.   4.
177   5.   6.   7.   8.
178//
179real(c)
180 ans  =
181   0.   2.   3.   4.
182   5.   6.   7.   8.
183imag(c)
184 ans  =
185   1.   0.   0.   0.
186   0.   0.   0.   0.
187real(a)
188 ans  =
189   1.   2.   3.   4.
190   5.   6.   7.   8.
191imag(a)
192 ans  =
193   0.   0.   0.   0.
194   0.   0.   0.   0.
195//
196round(rand(3,3))
197 ans  =
198  -1.   1.   1.
199   1.   1.   2.
200   1.   0.   1.
201//
202conj(a)
203 ans  =
204   1.   2.   3.   4.
205   5.   6.   7.   8.
206conj(c)
207 ans  =
208   0. - i     2. + 0.i   3. + 0.i   4. + 0.i
209   5. + 0.i   6. + 0.i   7. + 0.i   8. + 0.i
210//
211size(a)
212 ans  =
213   2.   4.
214[m,n]=size(a)
215 m  =
216   2.
217 n  =
218   4.
219//
220triu(a)
221 ans  =
222   1.   2.   3.   4.
223   0.   6.   7.   8.
224tril(a)
225 ans  =
226   1.   0.   0.   0.
227   5.   6.   0.   0.
228triu(a,1)
229 ans  =
230   0.   2.   3.   4.
231   0.   0.   7.   8.
232triu(a,-1)
233 ans  =
234   1.   2.   3.   4.
235   5.   6.   7.   8.
236tril(a,1)
237 ans  =
238   1.   2.   0.   0.
239   5.   6.   7.   0.
240tril(a,-1)
241 ans  =
242   0.   0.   0.   0.
243   5.   0.   0.   0.
244triu(c)
245 ans  =
246   0. + i     2. + 0.i   3. + 0.i   4. + 0.i
247   0. + 0.i   6. + 0.i   7. + 0.i   8. + 0.i
248tril(c)
249 ans  =
250   0. + i     0. + 0.i   0. + 0.i   0. + 0.i
251   5. + 0.i   6. + 0.i   0. + 0.i   0. + 0.i
252triu(c,1)
253 ans  =
254   0. + 0.i   2. + 0.i   3. + 0.i   4. + 0.i
255   0. + 0.i   0. + 0.i   7. + 0.i   8. + 0.i
256triu(c,10)
257 ans  =
258   0. + 0.i   0. + 0.i   0. + 0.i   0. + 0.i
259   0. + 0.i   0. + 0.i   0. + 0.i   0. + 0.i
260triu(c,-1)
261 ans  =
262   0. + i     2. + 0.i   3. + 0.i   4. + 0.i
263   5. + 0.i   6. + 0.i   7. + 0.i   8. + 0.i
264triu(c,-10)
265 ans  =
266   0. + i     2. + 0.i   3. + 0.i   4. + 0.i
267   5. + 0.i   6. + 0.i   7. + 0.i   8. + 0.i
268tril(c,1)
269 ans  =
270   0. + i     2. + 0.i   0. + 0.i   0. + 0.i
271   5. + 0.i   6. + 0.i   7. + 0.i   0. + 0.i
272tril(c,10)
273 ans  =
274   0. + i     2. + 0.i   3. + 0.i   4. + 0.i
275   5. + 0.i   6. + 0.i   7. + 0.i   8. + 0.i
276tril(c,-1)
277 ans  =
278   0. + 0.i   0. + 0.i   0. + 0.i   0. + 0.i
279   5. + 0.i   0. + 0.i   0. + 0.i   0. + 0.i
280tril(c,-10)
281 ans  =
282   0. + 0.i   0. + 0.i   0. + 0.i   0. + 0.i
283   0. + 0.i   0. + 0.i   0. + 0.i   0. + 0.i
284