7b9b3fe6e002b162a1255d5b9fea37a212e517d5
[scilab.git] / scilab / modules / integer / tests / unit_tests / intops.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8
9 funcprot(0);
10
11 //extractions
12 v=int8([1 2 3]);
13 assert_checkequal(v(2), int8(2));
14 assert_checkequal(v([1 3]), int8([1 3]));
15 assert_checkequal(v([3 3]), int8([3 3]));
16 assert_checkequal(v(:), int8([1 2 3]'));
17 assert_checkequal(v([]), []);
18
19 v=int32([1 2 3;4 5 6]);
20 assert_checktrue(v(2) == int8(4));
21 assert_checktrue(v([1 3]) == int8([1;2]));
22 assert_checktrue(v([3 3]) == int8([2;2]));
23 assert_checktrue(v(:) == int8([1;4;2;5;3;6]));
24 assert_checktrue(v([]) == []);
25
26 assert_checktrue(v(2,1) == int8(4));
27 assert_checktrue(v(1,[1 3]) == int8([1 3]));
28 assert_checktrue(v(1,[3 3]) == int8([3 3]));
29 assert_checktrue(v(1,:) == int8([1 2 3]));
30 assert_checktrue(v(:,2) == int8([2;5]));
31 assert_checktrue(v([1 1],:) == int8([1 2 3;1 2 3]));
32 assert_checktrue(v(:,[2 1]) == int8([2 1;5 4]));
33
34 assert_checktrue(v(1,1:$) == int8([1 2 3]));
35 assert_checktrue(v(1:$,2) == int8([2;5]));
36 assert_checktrue(v([1 1],1:$) == int8([1 2 3;1 2 3]));
37 assert_checktrue(v(1:$,[2 1]) == int8([2 1;5 4]));
38
39 //insertion
40 v = int8([1 2 3]);
41 v(2) = int8(3);
42 assert_checkequal(v, int8([1 3 3]));
43
44 v(4) = int8(-5);
45 assert_checkequal(v, int8([1 3 3 -5]));
46
47 v([1 4]) = int8([2 5]);
48 assert_checkequal(v, int8([2 3 3 5]));
49
50 v([1 1]) = int8([2 5]);
51 assert_checkequal(v, int8([5 3 3 5]));
52
53 v([1 1 1 1 1 1]) = int8([2 5 6 7 8 9]);
54 assert_checkequal(v, int8([9 3 3 5]));
55
56 v([4 2]) = int8([8 5]);
57 assert_checkequal(v, int8([9 5 3 8]));
58
59 v = uint16([1 2 3]);
60 v(2) = uint16(3);
61 assert_checkequal(v, uint16([1 3 3]));
62
63 v(4) = uint16(-5);
64 assert_checkequal(v, uint16([1 3 3 -5]));
65
66 v([1 4]) = uint16([2 5]);
67 assert_checkequal(v, uint16([2 3 3 5]));
68
69 v([1 1]) = uint16([2 5]);
70 assert_checkequal(v, uint16([5 3 3 5]));
71
72 v([1 1 1 1 1 1]) = uint16([2 5 6 7 8 9]);
73 assert_checkequal(v, uint16([9 3 3 5]));
74
75 v([4 2]) = uint16([8 5]);
76 assert_checkequal(v, uint16([9 5 3 8]));
77
78 v = uint8([1 2 3]);
79 v(2,4) = uint8(10);
80 assert_checkequal(v, uint8([1 2 3 0;0 0 0 10]));
81
82 v([2 2],4) = uint8([10;20]);
83 assert_checkequal(v, uint8([1 2 3 0;0 0 0 20]));
84
85 v([2 1],4) = uint8([10;20]);
86 assert_checkequal(v, uint8([1 2 3 20;0 0 0 10]));
87
88 v([2 2 2],4) = uint8([10;20;30]);
89 assert_checkequal(v, uint8([1 2 3 20;0 0 0 30]));
90
91 v = int32([1 2 3]);
92 v(2,4) = int32(10);
93 assert_checkequal(v, int32([1 2 3 0;0 0 0 10]));
94
95 v([2 2],4) = int32([10;20]);
96 assert_checkequal(v, int32([1 2 3 0;0 0 0 20]));
97
98 v([2 1],4) = int32([10;20]);
99 assert_checkequal(v, int32([1 2 3 20;0 0 0 10]));
100
101 v([2 2 2],4) = int32([10;20;30]);
102 assert_checkequal(v, int32([1 2 3 20;0 0 0 30]));
103
104 v = int16([1 2 3;0 0 10]);
105 v(1,[1 1 1 1]) = int16(1:4);
106 assert_checkequal(v, int16([4 2 3;0 0 10]));
107
108 v([2 2],[1 1 1 1]) = int16([1:4;2:5]);
109 assert_checkequal(v, int16([4 2 3;5 0 10]))
110
111 v(3,4) = int16(7);
112 assert_checkequal(v, int16([4 2 3 0;5 0 10 0;0 0 0 7]))
113
114 v = uint32([1 2 3;0 0 10]);
115 v(1,[1 1 1 1]) = uint32(1:4);
116 assert_checkequal(v, uint32([4 2 3;0 0 10]))
117
118 v([2 2],[1 1 1 1]) = uint32([1:4;2:5]);
119 assert_checkequal(v, uint32([4 2 3;5 0 10]))
120
121 v(3,4) = uint32(7);
122 assert_checkequal(v, uint32([4 2 3 0;5 0 10 0;0 0 0 7]))
123
124 v = [];
125 v(5) = int8(1);
126 assert_checkequal(v, int8([0;0;0;0;1]));
127
128 v(2) = int8(4);
129 assert_checkequal(v, int8([0;4;0;0;1]))
130
131 v = uint16([1 2 3;4 5 6]);
132 v(:,1) = uint16([4;1]);
133 assert_checkequal(v, uint16([4 2 3;1 5 6]));
134
135 v(:,[1 1]) = uint16([4 5;1 2]);
136 assert_checkequal(v, uint16([5 2 3;2 5 6]));
137
138 v(:,[3 1]) = uint16([4 5;1 2]);
139 assert_checkequal(v, uint16([5 2 4;2 5 1]))
140
141 v(:,[3 3 3 3]) = uint16([4 5 6 7;1 2 3 4]);
142 assert_checkequal(v, uint16([5 2 7;2 5 4]))
143
144 v = int8([1 2 3;4 5 6]);
145 v(1,:) = int8([2 3 4]);
146 assert_checkequal(v, int8([2 3 4;4 5 6]))
147
148 v([1 1],:) = int8([2 3 4;4 5 6]);
149 assert_checkequal(v, int8([4 5 6;4 5 6]))
150
151 v([2 2 2 2],:) = int8([2 3 4;4 5 6;7 8 9;10 11 12]);
152 assert_checkequal(v, int8([4 5 6;10 11 12]))
153
154 v = uint8([1 2 3]);
155 v(2) = [];
156 assert_checkequal(v, uint8([1 3]));
157
158 v = uint8([1 2 3]);
159 v([3 2]) = [];
160 assert_checkequal(v, uint8(1));
161
162 v = int8([1 2 3]');
163 v(2) = [];
164 assert_checkequal(v, int8([1 3]'));
165
166 v = int8([1 2 3]');
167 v([3 2]) = [];
168 assert_checkequal(v, int8(1))
169
170 v = int32([1 2 3;4 5 6]);
171 v(1,:) = [];
172 assert_checkequal(v, int32([4 5 6]));
173
174 v = int32([1 2 3;4 5 6]);
175 v(:,[3 2]) = [];
176 assert_checkequal(v, int32([1;4]));
177
178 //hidden empty index in insertion
179 a = int32([1 2;3 4]);
180 a_ref = a;
181
182 a(1,[%f %f]) = [];
183 assert_checkequal(a, a_ref);
184
185 a([%f %f],1) = [];
186 assert_checkequal(a, a_ref);
187
188 a([%f %f],[%f %f]) = [];
189 assert_checkequal(a, a_ref);
190
191 a = int8([1 2;3 4]);
192 a_ref = a;
193
194 a(1,[%f %f]) = [];
195 assert_checkequal(a, a_ref);
196
197 a([%f %f],1) = [];
198 assert_checkequal(a, a_ref);
199
200 a([%f %f],[%f %f]) = [];
201 assert_checkequal(a, a_ref);
202
203
204 //concatenations
205 x1 = int8(1);
206 x2 = int8(7);
207 assert_checkequal([x1 x2], int8([1 7]));
208 assert_checkequal([x1; x2], int8([1; 7]));
209 assert_checkequal([x1 []], int8(1));
210 assert_checkequal([x1; []], int8(1));
211 assert_checkequal([[], x2], int8(7));
212 assert_checkequal([[]; x2], int8(7));
213
214 [x1, x2] = ([x1 x2 x1 x2],[x2 x2 x1 x1]);
215 assert_checkequal([x1 x2], int8([1 7 1 7 7 7 1 1]));
216 assert_checkequal([x1; x2], int8([1 7 1 7; 7 7 1 1]));
217 assert_checkequal([x1 []], int8([1 7 1 7]));
218 assert_checkequal([x1; []], int8([1 7 1 7]));
219 assert_checkequal([[] x2], int8([7 7 1 1]));
220 assert_checkequal([[]; x2], int8([7 7 1 1]));
221
222 n = 300;
223 x1 = uint16(1:n);
224 assert_checkequal([x1 x1], uint16([1:n 1:n]));
225 assert_checkequal([x1; x1], uint16([1:n; 1:n]));
226
227 //additions soustractions
228 X1 = 1;X2 = 7;x1 = int8(X1);x2 = int8(X2);
229 assert_checkequal(x1+x2, int8(X1+X2));
230 assert_checkequal(x1-x2, int8(X1-X2));
231
232 X1 = 1:10; x1 = int8(X1);
233 assert_checkequal(x1+x2, int8(X1+X2));
234 assert_checkequal(x1-x2, int8(X1-X2));
235
236 X2 = 2:11; x2 = int8(X2);
237 assert_checkequal(x1+x2, int8(X1+X2));
238 assert_checkequal(x1-x2, int8(X1-X2));
239 assert_checkequal(-x1, int8(-X1));
240
241 X2 = []; x2 = [];
242 assert_checkequal(x1+x2, int8(X1+X2));
243 assert_checkequal(x1-x2, int8(X1-X2));
244 assert_checkequal(x2+x1, int8(X2+X1));
245 assert_checkequal(x2-x1, int8(X2-X1));
246
247 //multiplication
248 X1 = 1;X2 = 7;x1 = int8(X1);x2 = int8(X2);
249 assert_checkequal(x1 * x2, int8(X1 * X2));
250 assert_checkequal(x1 .* x2, int8(X1 .* X2));
251
252 X1 = 1:10; x1 = int8(X1);
253 assert_checkequal(x1 * x2, int8(X1 * X2));
254 assert_checkequal(x1 .* x2, int8(X1 .* X2));
255 assert_checkequal(x2 * x1, int8(X2 * X1));
256 assert_checkequal(x2 .* x1, int8(X2 .* X1));
257
258 X2 = -(1:10); x2 = int8(X2);
259 assert_checkequal(x1 .* x2, int8(X1 .* X2));
260 assert_checkequal(x1' * x2, int8(X1' * X2));
261 assert_checkequal(x1 * x2', int8(X1 * X2'));
262
263 // comparaisons
264 X1 = 1;X2 = 7;x1 = int8(X1);x2 = int8(X2);
265 assert_checkequal(x1>x2, X1>X2);
266 assert_checkequal(x1>=x2, X1>=X2);
267 assert_checkequal(x1<x2, X1<X2);
268 assert_checkequal(x1<=x2, X1<=X2);
269 assert_checkequal(x1<>x2, X1<>X2);
270
271 X1 = 1:10; x1 = int8(X1);
272 assert_checkequal(x1>x2, X1>X2);
273 assert_checkequal(x1>=x2, X1>=X2);
274 assert_checkequal(x1<x2, X1<X2);
275 assert_checkequal(x1<=x2, X1<=X2);
276 assert_checkequal(x1<>x2, X1<>X2);
277
278 X2 = 2:11;x2 = int8(X2);
279 assert_checkequal(x1>x2, X1>X2);
280 assert_checkequal(x1>=x2, X1>=X2);
281 assert_checkequal(x1<x2, X1<X2);
282 assert_checkequal(x1<=x2, X1<=X2);
283 assert_checkequal(x1<>x2, X1<>X2);
284
285 X1 = 1;x1 = int8(X1);
286 assert_checkequal(x1>x2, X1>X2);
287 assert_checkequal(x1>=x2, X1>=X2);
288 assert_checkequal(x1<x2, X1<X2);
289 assert_checkequal(x1<=x2, X1<=X2);
290 assert_checkequal(x1<>x2, X1<>X2);
291
292 //division
293 X1 = 1;X2 = 7;x1 = int8(X1);x2 = int8(X2);
294 assert_checkequal(x1/x2, int8(0));
295 assert_checkequal(x2/x1, int8(7));
296 assert_checkequal(x1\x2, int8(7));
297 assert_checkequal(x2\x1, int8(0));
298 assert_checkequal(x1./x2, int8(0));
299 assert_checkequal(x2./x1, int8(7));
300 assert_checkequal(x1.\x2, int8(7));
301 assert_checkequal(x2.\x1, int8(0));
302
303 X1 = 1:10; x1 = int8(X1);
304 assert_checkequal(x1/x2, int8([0 0 0 0 0 0 1 1 1 1]));
305 //if or(x2/x1<>int8([7 3 2 1 1 1 1 0 0 0])) then pause,end
306 assert_checkequal(x1./x2, int8([0 0 0 0 0 0 1 1 1 1]));
307 assert_checkequal(x2./x1, int8([7 3 2 1 1 1 1 0 0 0]));
308 //if or(x1\x2<>int8([0 0 0 0 0 0 1 1 1 1])) then pause,end
309 assert_checkequal(x1.\x2, int8([7 3 2 1 1 1 1 0 0 0]));
310 assert_checkequal(x2\x1, int8([0 0 0 0 0 0 1 1 1 1]));
311 assert_checkequal(x2.\x1, int8([0 0 0 0 0 0 1 1 1 1]));
312
313 X2 = -(1:10); x2 = int8(X2);
314 assert_checkequal(x1./x2, int8(-ones(1,10)));
315 assert_checkequal(x1.\x2, int8(-ones(1,10)));
316
317 // puissance
318 X1 = 2;X2 = 3;x1 = int8(X1);x2 = int8(X2);
319 assert_checkequal(x1^x2, int8(X1^X2));
320 assert_checkequal(x1.^x2, int8(X1.^X2));
321
322 X1 = 1:5; x1 = int8(X1);
323 assert_checkequal(x1.^x2, int8(X1.^X2));
324 //if or(x1^x2<>int8(X1^X2)) then pause,end
325
326 X1 = 2;x1 = int8(X1);X2 = (1:3);x2 = int8(X2);
327 assert_checkequal(x1^x2, int8(X1^X2));
328 assert_checkequal(x1.^x2, int8(X1.^X2));
329
330 //X1=2:4;x1=int8(X1);
331 //if or(x1.^x2<>int8(X1.^X2)) then pause,end
332
333 //kronecker
334 X1 = 2;X2 = 3;x1 = int8(X1);x2 = int8(X2);
335 assert_checkequal(x1.*.x2, int8(X1.*.X2));
336
337 X1 = 1:5;x1 = int8(X1);
338 assert_checkequal(x1.*.x2, int8(X1.*.X2));
339
340 X1 = 2;x1 = int8(X1);X2 = (1:3);x2 = int8(X2);
341 assert_checkequal(x1.*.x2, int8(X1.*.X2));
342
343 X1 = (1:5)';x1 = int8(X1);
344 assert_checkequal(x1.*.x2, int8(X1.*.X2));
345
346 //sum
347 X = round(10 * rand(1,30));
348 deff('y=INT(x)','y=int16(x)')
349 x = INT(X);
350 assert_checkequal(sum(x), INT(sum(X)));
351 assert_checkequal(sum(x'), INT(sum(X')));
352 assert_checkequal(cumsum(x), INT(cumsum(X)));
353 assert_checkequal(cumsum(x'), INT(cumsum(X')));
354
355 deff('y=INT(x)','y=uint16(x)')
356 x = INT(X);
357 assert_checkequal(sum(x), INT(sum(X)));
358 assert_checkequal(sum(x'), INT(sum(X')));
359 assert_checkequal(cumsum(x), INT(cumsum(X)));
360 assert_checkequal(cumsum(x'), INT(cumsum(X')));
361
362 deff('y=INT(x)','y=uint8(x)')
363 x = INT(X);
364 assert_checkequal(sum(x), INT(sum(X)));
365 assert_checkequal(sum(x'), INT(sum(X')));
366 assert_checkequal(cumsum(x), INT(cumsum(X)));
367 assert_checkequal(cumsum(x'), INT(cumsum(X')));
368
369 deff('y=INT(x)','y=int8(x)')
370 x = INT(X);
371 assert_checkequal(sum(x), INT(sum(X)));
372 assert_checkequal(sum(x'), INT(sum(X')));
373 assert_checkequal(cumsum(x), INT(cumsum(X)));
374 assert_checkequal(cumsum(x'), INT(cumsum(X')));
375
376 X = round(10*rand(20,30));
377 x = INT(X);
378 assert_checkequal(sum(x, 1), INT(sum(X, 1)));
379 assert_checkequal(sum(x', 1), INT(sum(X', 1)));
380 assert_checkequal(cumsum(x, 1), INT(cumsum(X, 1)));
381 assert_checkequal(cumsum(x', 1), INT(cumsum(X', 1)));
382
383 deff('y=INT(x)','y=uint16(x)')
384 x = INT(X);
385 assert_checkequal(sum(x, 1), INT(sum(X, 1)));
386 assert_checkequal(sum(x', 1), INT(sum(X', 1)));
387 assert_checkequal(cumsum(x, 1), INT(cumsum(X, 1)));
388 assert_checkequal(cumsum(x', 1), INT(cumsum(X', 1)));
389
390 deff('y=INT(x)','y=uint8(x)')
391 x = INT(X);
392 assert_checkequal(sum(x, 1), INT(sum(X, 1)));
393 assert_checkequal(sum(x', 1), INT(sum(X', 1)));
394 assert_checkequal(cumsum(x, 1), INT(cumsum(X, 1)));
395 assert_checkequal(cumsum(x', 1), INT(cumsum(X', 1)));
396
397 deff('y=INT(x)','y=int8(x)')
398 x = INT(X);
399 assert_checkequal(sum(x, 1), INT(sum(X, 1)));
400 assert_checkequal(sum(x', 1), INT(sum(X', 1)));
401 assert_checkequal(cumsum(x, 1), INT(cumsum(X, 1)));
402 assert_checkequal(cumsum(x', 1), INT(cumsum(X', 1)));
403
404 x = INT(X);
405 assert_checkequal(sum(x, "c"), INT(sum(X, "c")));
406 assert_checkequal(sum(x', "c"), INT(sum(X', "c")));
407 assert_checkequal(cumsum(x, "c"), INT(cumsum(X, "c")));
408 assert_checkequal(cumsum(x', "c"), INT(cumsum(X', "c")));
409
410 deff('y=INT(x)','y=uint16(x)')
411 x = INT(X);
412 assert_checkequal(sum(x, "c"), INT(sum(X, "c")));
413 assert_checkequal(sum(x', "c"), INT(sum(X', "c")));
414 assert_checkequal(cumsum(x, "c"), INT(cumsum(X, "c")));
415 assert_checkequal(cumsum(x', "c"), INT(cumsum(X', "c")));
416
417 deff('y=INT(x)','y=uint8(x)')
418 x = INT(X);
419 assert_checkequal(sum(x, "c"), INT(sum(X, "c")));
420 assert_checkequal(sum(x', "c"), INT(sum(X', "c")));
421 assert_checkequal(cumsum(x, "c"), INT(cumsum(X, "c")));
422 assert_checkequal(cumsum(x', "c"), INT(cumsum(X', "c")));
423
424 deff('y=INT(x)','y=int8(x)')
425 x = INT(X);
426 assert_checkequal(sum(x, "c"), INT(sum(X, "c")));
427 assert_checkequal(sum(x', "c"), INT(sum(X', "c")));
428 assert_checkequal(cumsum(x, "c"), INT(cumsum(X, "c")));
429 assert_checkequal(cumsum(x', "c"), INT(cumsum(X', "c")));
430
431 //diag triu tril
432 deff('y=INT(x)','y=int16(x)')
433 X = round(10*rand(1,30));
434 x = INT(X);
435
436 assert_checktrue(diag(x) == diag(X));
437 assert_checktrue(diag(x, 2) == diag(X, 2));
438 assert_checktrue(diag(x, -2) == diag(X, -2));
439
440 assert_checktrue(triu(x) == triu(X));
441 assert_checktrue(triu(x, 2) == triu(X, 2));
442 assert_checktrue(triu(x, -2) == triu(X, -2));
443
444 assert_checktrue(tril(x) == tril(X));
445 assert_checktrue(tril(x, 2) == tril(X, 2));
446 assert_checktrue(tril(x, -2) == tril(X, -2));
447
448 X = round(10*rand(2,30));
449 x = INT(X);
450
451 assert_checktrue(diag(x) == diag(X));
452 assert_checktrue(diag(x, 2) == diag(X, 2));
453 assert_checktrue(diag(x, -2) == diag(X, -2));
454
455 assert_checktrue(triu(x) == triu(X));
456 assert_checktrue(triu(x, 2) == triu(X, 2));
457 assert_checktrue(triu(x, -2) == triu(X, -2));
458
459 assert_checktrue(tril(x) == tril(X));
460 assert_checktrue(tril(x, 2) == tril(X, 2));
461 assert_checktrue(tril(x, -2) == tril(X, -2));
462
463 deff('y=INT(x)','y=uint8(x)')
464 X = round(10*rand(1,30));
465 x = INT(X);
466
467 assert_checktrue(diag(x) == diag(X));
468 assert_checktrue(diag(x, 2) == diag(X, 2));
469 assert_checktrue(diag(x, -2) == diag(X, -2));
470
471 assert_checktrue(triu(x) == triu(X));
472 assert_checktrue(triu(x, 2) == triu(X, 2));
473 assert_checktrue(triu(x, -2) == triu(X, -2));
474
475 assert_checktrue(tril(x) == tril(X));
476 assert_checktrue(tril(x, 2) == tril(X, 2));
477 assert_checktrue(tril(x, -2) == tril(X, -2));
478
479 X = round(10*rand(2,30));
480 x = INT(X);
481
482 assert_checktrue(diag(x) == diag(X));
483 assert_checktrue(diag(x, 2) == diag(X, 2));
484 assert_checktrue(diag(x, -2) == diag(X, -2));
485
486 assert_checktrue(triu(x) == triu(X));
487 assert_checktrue(triu(x, 2) == triu(X, 2));
488 assert_checktrue(triu(x, -2) == triu(X, -2));
489
490 assert_checktrue(tril(x) == tril(X));
491 assert_checktrue(tril(x, 2) == tril(X, 2));
492 assert_checktrue(tril(x, -2) == tril(X, -2));
493
494 // save load
495 deff('y=INT(x)','y=uint8(x)')
496 X = round(10*rand(1,30));
497 x = INT(X);
498
499 save(TMPDIR+'/foo','x')
500 clear x;
501 load(TMPDIR+'/foo');
502 assert_checkequal(x, INT(X));
503
504 x=list(1,x,2);save(TMPDIR+'/foo','x')
505 clear x;
506 load(TMPDIR+'/foo');
507 assert_checkequal(x, list(1, INT(X), 2));
508
509 deff('y=INT(x)','y=int32(x)')
510 X = round(10*rand(1,30));
511 x = INT(X);
512
513 save(TMPDIR+'/foo','x')
514 clear x;
515 load(TMPDIR+'/foo');
516 assert_checkequal(x, INT(X));
517
518 x=list(1,x,2);save(TMPDIR+'/foo','x')
519 clear x;
520 load(TMPDIR+'/foo');
521 assert_checkequal(x, list(1, INT(X), 2));
522
523 //abs
524 deff('y=INT(x)','y=int8(x)')
525 X = round(10*rand(1,30))-5;
526 x = INT(X);
527 assert_checkequal(abs(x), INT(abs(X)));
528
529 deff('y=INT(x)','y=int16(x)')
530 X = round(10*rand(1,30))-5;
531 x = INT(X);
532 assert_checkequal(abs(x), INT(abs(X)));
533
534 //matrix
535 deff('y=INT(x)','y=int8(x)')
536 X = round(10*rand(1,30))-5;
537 x = INT(X);
538 assert_checkequal(matrix(x,10,-1), INT(matrix(X,10,-1)));
539 assert_checkequal(matrix(x,10,3), INT(matrix(X,10,3)));
540 assert_checkequal(matrix(x,-1,3), INT(matrix(X,-1,3)));
541
542 deff('y=INT(x)','y=uint8(x)')
543 X = round(10*rand(1,30))-5;
544 x = INT(X);
545 assert_checkequal(matrix(x,10,-1), INT(matrix(X,10,-1)));
546 assert_checkequal(matrix(x,10,3), INT(matrix(X,10,3)));
547 assert_checkequal(matrix(x,-1,3), INT(matrix(X,-1,3)));
548
549 //max min
550 deff('y=INT(x)','y=int8(x)')
551 X = round(10*rand(2,30))-5;
552 Y = ones(2,30);
553 x = INT(X);
554 y = INT(Y);
555 assert_checkequal(max(x), INT(max(X)));
556 assert_checkequal(max(x, "r"), INT(max(X, "r")));
557 assert_checkequal(max(x, "c"), INT(max(X, "c")));
558 assert_checkequal(max(x, INT(2)), INT(max(X, 2)));
559 assert_checkequal(max(x, y), INT(max(X, Y)));
560
561 assert_checkequal(min(x), INT(min(X)));
562 assert_checkequal(min(x, "r"), INT(min(X, "r")));
563 assert_checkequal(min(x, "c"), INT(min(X, "c")));
564 assert_checkequal(min(x, INT(2)), INT(min(X, 2)));
565 assert_checkequal(min(x, y), INT(min(X, Y)));
566
567 a = [0 3 7];
568 b = [1 2 7];
569 A = [0 3 7 5;
570    1 2 0 2
571    8 9 3 1];
572 types=['double','int32','uint32','int16','uint16','int8','uint8'];
573
574 // checking max(a,b)
575 [mx, kx] = max(a, b);
576 for t1 = types
577   for t2 = types
578     execstr('at='+t1+'(a); bt='+t2+'(b);')
579     [mt, kt] = max(at, bt);
580     if or(kt<>kx)|or(mx<>double(mt)) then 
581       disp('max('+t1+','+t2+')'),pause
582     end
583   end   
584 end
585
586 // checking min(a,b)
587 [mn,kn]=min(a,b);
588 for t1=types
589   for t2=types
590     execstr('at='+t1+'(a); bt='+t2+'(b);')
591     [mt,kt]=min(at,bt);
592     if or(kt<>kn)|or(mn<>double(mt)) then 
593       disp('min('+t1+','+t2+')'),pause
594     end
595   end   
596 end
597
598 // checking max(A)
599 [mx,kx]=max(A);
600 for t1=types
601   execstr('At='+t1+'(A);')
602   [mt,kt]=max(At);
603   if or(kt<>kx)|or(mx<>double(mt)) then 
604     disp('max('+t1+')'),pause
605   end
606 end
607
608 // checking min(A)
609 [mx,kx]=min(A);
610 for t1=types
611   execstr('At='+t1+'(A);')
612   [mt,kt]=min(At);
613   if or(kt<>kx)|or(mx<>double(mt)) then 
614     disp('min('+t1+')'),pause
615   end
616 end
617
618
619 // checking max(A,'r')
620 [mx,kx]=max(A,'r');
621 for t1=types
622   execstr('At='+t1+'(A);')
623   [mt,kt]=max(At,'r');
624   if or(kt<>kx)|or(mx<>double(mt)) then 
625     disp('max('+t1+',''r'')'),pause
626   end
627 end
628
629 // checking min(A,'r')
630 [mx,kx]=min(A,'r');
631 for t1=types
632   execstr('At='+t1+'(A);')
633   [mt,kt]=min(At,'r');
634   if or(kt<>kx)|or(mx<>double(mt)) then 
635     disp('min('+t1+',''r'')'),pause
636   end
637 end
638
639 // checking max(A,'c')
640 [mx,kx]=max(A,'c');
641 for t1=types
642   execstr('At='+t1+'(A);')
643   [mt,kt]=max(At,'c');
644   if or(kt<>kx)|or(mx<>double(mt)) then 
645     disp('max('+t1+',''c'')'),pause
646   end
647 end
648
649 // checking min(A,'c')
650 [mx,kx]=min(A,'c');
651 for t1=types
652   execstr('At='+t1+'(A);')
653   [mt,kt]=min(At,'c');
654   if or(kt<>kx)|or(mx<>double(mt)) then 
655     disp('min('+t1+',''c'')'),pause
656   end
657 end
658
659
660 //int32 int8 ... iconvert