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