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