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