1// ============================================================================
2// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3// Copyright (C) 2014 - Scilab Enterprises - Sylvain GENIN
4// Copyright (C) 2021 - Samuel GOUGEON
5//
6//  This file is distributed under the same license as the Scilab package.
7// ============================================================================
8// <-- NO CHECK REF -->
9// <-- CLI SHELL MODE -->
10
11s = %s;
12
13empty = [];
14
15r = 2;
16R = [1,2;3,4];
17R3(:,:,1) = R;
18R3(:,:,2) = R';
19c = 1 + 2*%i;
20C = [1+2*%i,2+4*%i;3+6*%i,4+8*%i];
21C3(:,:,1) = C;
22C3(:,:,2) = C';
23
24e = eye();
25ec = (5+%i) * eye();
26
27p = 1 + %s - %s**2;
28pc = 1 + %s - %s**2 + ( 2 - 3 * %s + 4 * %s**2 ) * %i;
29P = [2*p, 2;4*p,-5*p];
30PC = [2*pc, 2;4*pc,-5*pc];
31
32SP = sparse([1,2;4,5;3,10],[1,2,3]);
33SPC = sparse([1,2;4,5;3,10],[1,2,3]) * ( 1 + 4*%i);
34SPB = sparse([1,2;2,1],[%t;%t],[2,2]);
35SP1 = sparse([1,1],[10]);
36SPC1 = sparse([1,1],[1]) * ( 2 + 6*%i);
37
38i8 = int8(-8);
39ui8 = uint8(8);
40I8 = int8([-8 2 ; -24 -32]);
41UI8 = uint8([8 2 ; 24 32]);
42
43I16 = int16([-16 2 ; -48 -64]);
44UI16 = uint16([16 2 ; 48 64]);
45i16 = int16(-16);
46ui16 = uint16(16);
47
48i32 = int32(-32);
49ui32 = uint32(32);
50I32 = int32([-32 2 ; -96 -128]);
51UI32 = uint32([32 2 ; 96 128]);
52
53str = "string";
54STR = ["string1" "string2";"string3" "string4"];
55
56b = %f;
57B = [%t %f;%f %t];
58
59assert_checkequal(empty <> empty, %f);
60assert_checkequal(empty <> r, %t);
61assert_checkequal(empty <> c, %t);
62assert_checkequal(empty <> R, %t);
63assert_checkequal(empty <> C, %t);
64assert_checkequal(empty <> e, %t);
65assert_checkequal(empty <> ec, %t);
66assert_checkequal(empty <> p, %t);
67assert_checkequal(empty <> pc, %t);
68assert_checkequal(empty <> P, %t);
69assert_checkequal(empty <> PC, %t);
70assert_checkequal(empty <> SP, %t);
71assert_checkequal(empty <> SPC, %t);
72assert_checkequal(empty <> SP1, %t);
73assert_checkequal(empty <> SPC1, %t);
74assert_checkequal(empty <> i8, %t);
75assert_checkequal(empty <> I8, %t);
76assert_checkequal(empty <> ui8, %t);
77assert_checkequal(empty <> UI8, %t);
78assert_checkequal(empty <> i16, %t);
79assert_checkequal(empty <> I16, %t);
80assert_checkequal(empty <> ui16, %t);
81assert_checkequal(empty <> UI16, %t);
82assert_checkequal(empty <> i32, %t);
83assert_checkequal(empty <> I32, %t);
84assert_checkequal(empty <> ui32, %t);
85assert_checkequal(empty <> UI32, %t);
86assert_checkequal(empty <> str, %t);
87assert_checkequal(empty <> STR, %t);
88assert_checkequal(empty <> b, %t);
89assert_checkequal(empty <> B, %t);
90assert_checkequal(empty <> SPB, %t);
91
92assert_checkequal(r <> empty, %t);
93assert_checkequal(r <> r, %f);
94assert_checkequal(r <> c, %t);
95assert_checkequal(r <> R, [%t,%f;%t,%t]);
96assert_checkequal(r <> C, [%t,%t;%t,%t]);
97assert_checkequal(r <> e, %t);
98assert_checkequal(r <> ec, %t);
99assert_checkequal(r <> p, %t);
100assert_checkequal(r <> pc, %t);
101assert_checkequal(r <> P, [%t,%f;%t,%t]);
102assert_checkequal(r <> PC, [%t,%f;%t,%t]);
103assert_checkequal(r <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
104assert_checkequal(r <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
105assert_checkequal(r <> SP1, sparse([1,1],%t,[1,1]));
106assert_checkequal(r <> SPC1, sparse([1,1],%t,[1,1]));
107assert_checkequal(r <> i8, %t);
108assert_checkequal(r <> I8, [%t,%f;%t,%t]);
109assert_checkequal(r <> ui8, %t);
110assert_checkequal(r <> UI8, [%t,%f;%t,%t]);
111assert_checkequal(r <> i16, %t);
112assert_checkequal(r <> I16, [%t,%f;%t,%t]);
113assert_checkequal(r <> ui16, %t);
114assert_checkequal(r <> UI16, [%t,%f;%t,%t]);
115assert_checkequal(r <> i32, %t);
116assert_checkequal(r <> I32, [%t,%f;%t,%t]);
117assert_checkequal(r <> ui32, %t);
118assert_checkequal(r <> UI32, [%t,%f;%t,%t]);
119assert_checkequal(r <> str, %t);
120assert_checkequal(r <> STR, %t);
121assert_checkequal(r <> b, %t);
122assert_checkequal(r <> B, %t);
123assert_checkequal(r <> SPB, %t);
124
125assert_checkequal(c <> empty, %t);
126assert_checkequal(c <> r, %t);
127assert_checkequal(c <> c, %f);
128assert_checkequal(c <> R, [%t,%t;%t,%t]);
129assert_checkequal(c <> C, [%f,%t;%t,%t]);
130assert_checkequal(c <> e, %t);
131assert_checkequal(c <> ec, %t);
132assert_checkequal(c <> p, %t);
133assert_checkequal(c <> pc, %t);
134assert_checkequal(c <> P, [%t,%t;%t,%t]);
135assert_checkequal(c <> PC, [%t,%t;%t,%t]);
136assert_checkequal(c <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
137assert_checkequal(c <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
138assert_checkequal(c <> SP1, sparse([1,1],%t,[1,1]));
139assert_checkequal(c <> SPC1, sparse([1,1],%t,[1,1]));
140assert_checkequal(c <> i8, %t);
141assert_checkequal(c <> I8, [%t,%t;%t,%t]);
142assert_checkequal(c <> ui8, %t);
143assert_checkequal(c <> UI8, [%t,%t;%t,%t]);
144assert_checkequal(c <> i16, %t);
145assert_checkequal(c <> I16, [%t,%t;%t,%t]);
146assert_checkequal(c <> ui16, %t);
147assert_checkequal(c <> UI16, [%t,%t;%t,%t]);
148assert_checkequal(c <> i32, %t);
149assert_checkequal(c <> I32, [%t,%t;%t,%t]);
150assert_checkequal(c <> ui32, %t);
151assert_checkequal(c <> UI32, [%t,%t;%t,%t]);
152assert_checkequal(c <> str, %t);
153assert_checkequal(c <> STR, %t);
154assert_checkequal(c <> b, %t);
155assert_checkequal(c <> B, %t);
156assert_checkequal(c <> SPB, %t);
157
158assert_checkequal(R <> empty, %t);
159assert_checkequal(R <> r, [%t,%f;%t,%t]);
160assert_checkequal(R <> c, [%t,%t;%t,%t]);
161assert_checkequal(R <> R, [%f,%f;%f,%f]);
162assert_checkequal(R <> C, [%t,%t;%t,%t]);
163assert_checkequal(R <> e, [%f,%t;%t,%t]);
164assert_checkequal(R <> ec, [%t,%t;%t,%t]);
165assert_checkequal(R <> p, [%t,%t;%t,%t]);
166assert_checkequal(R <> pc, [%t,%t;%t,%t]);
167assert_checkequal(R <> P, [%t,%f;%t,%t]);
168assert_checkequal(R <> PC, [%t,%f;%t,%t]);
169assert_checkequal(R <> SP, %t);
170assert_checkequal(R <> SPC, %t);
171assert_checkequal(R <> SP1, %t);
172assert_checkequal(R <> SPC1, %t);
173assert_checkequal(R <> i8, [%t,%t;%t,%t]);
174assert_checkequal(R <> I8, [%t,%f;%t,%t]);
175assert_checkequal(R <> ui8, [%t,%t;%t,%t]);
176assert_checkequal(R <> UI8, [%t,%f;%t,%t]);
177assert_checkequal(R <> i16, [%t,%t;%t,%t]);
178assert_checkequal(R <> I16, [%t,%f;%t,%t]);
179assert_checkequal(R <> ui16, [%t,%t;%t,%t]);
180assert_checkequal(R <> UI16, [%t,%f;%t,%t]);
181assert_checkequal(R <> i32, [%t,%t;%t,%t]);
182assert_checkequal(R <> I32, [%t,%f;%t,%t]);
183assert_checkequal(R <> ui32, [%t,%t;%t,%t]);
184assert_checkequal(R <> UI32, [%t,%f;%t,%t]);
185assert_checkequal(R <> str, %t);
186assert_checkequal(R <> STR, %t);
187assert_checkequal(R <> b, %t);
188assert_checkequal(R <> B, %t);
189assert_checkequal(R <> SPB, %t);
190
191assert_checkequal(C <> empty, %t);
192assert_checkequal(C <> r, [%t,%t;%t,%t]);
193assert_checkequal(C <> c, [%f,%t;%t,%t]);
194assert_checkequal(C <> R, [%t,%t;%t,%t]);
195assert_checkequal(C <> C, [%f,%f;%f,%f]);
196assert_checkequal(C <> e, [%t,%t;%t,%t]);
197assert_checkequal(C <> ec, [%t,%t;%t,%t]);
198assert_checkequal(C <> p, [%t,%t;%t,%t]);
199assert_checkequal(C <> pc, [%t,%t;%t,%t]);
200assert_checkequal(C <> P, [%t,%t;%t,%t]);
201assert_checkequal(C <> PC, [%t,%t;%t,%t]);
202assert_checkequal(C <> SP, %t);
203assert_checkequal(C <> SPC, %t);
204assert_checkequal(C <> SP1, %t);
205assert_checkequal(C <> SPC1, %t);
206assert_checkequal(C <> i8, [%t,%t;%t,%t]);
207assert_checkequal(C <> I8, [%t,%t;%t,%t]);
208assert_checkequal(C <> ui8, [%t,%t;%t,%t]);
209assert_checkequal(C <> UI8, [%t,%t;%t,%t]);
210assert_checkequal(C <> i16, [%t,%t;%t,%t]);
211assert_checkequal(C <> I16, [%t,%t;%t,%t]);
212assert_checkequal(C <> ui16, [%t,%t;%t,%t]);
213assert_checkequal(C <> UI16, [%t,%t;%t,%t]);
214assert_checkequal(C <> i32, [%t,%t;%t,%t]);
215assert_checkequal(C <> I32, [%t,%t;%t,%t]);
216assert_checkequal(C <> ui32, [%t,%t;%t,%t]);
217assert_checkequal(C <> UI32, [%t,%t;%t,%t]);
218assert_checkequal(C <> str, %t);
219assert_checkequal(C <> STR, %t);
220assert_checkequal(C <> b, %t);
221assert_checkequal(C <> B, %t);
222assert_checkequal(C <> SPB, %t);
223
224assert_checkequal(e <> empty, %t);
225assert_checkequal(e <> r, %t);
226assert_checkequal(e <> c, %t);
227assert_checkequal(e <> R, [%f,%t;%t,%t]);
228assert_checkequal(e <> C, [%t,%t;%t,%t]);
229assert_checkequal(e <> e, %f);
230assert_checkequal(e <> ec, %t);
231assert_checkequal(e <> p, %t);
232assert_checkequal(e <> pc, %t);
233assert_checkequal(e <> P, [%t,%t;%t,%t]);
234assert_checkequal(e <> PC, [%t,%t;%t,%t]);
235assert_checkequal(e <> SP, %t);
236assert_checkequal(e <> SPC, %t);
237assert_checkequal(e <> SP1, %t);
238assert_checkequal(e <> SPC1, %t);
239assert_checkequal(e <> i8, %t);
240assert_checkequal(e <> I8, [%t,%t;%t,%t]);
241assert_checkequal(e <> ui8, %t);
242assert_checkequal(e <> UI8, [%t,%t;%t,%t]);
243assert_checkequal(e <> i16, %t);
244assert_checkequal(e <> I16, [%t,%t;%t,%t]);
245assert_checkequal(e <> ui16, %t);
246assert_checkequal(e <> UI16, [%t,%t;%t,%t]);
247assert_checkequal(e <> i32, %t);
248assert_checkequal(e <> I32, [%t,%t;%t,%t]);
249assert_checkequal(e <> ui32, %t);
250assert_checkequal(e <> UI32, [%t,%t;%t,%t]);
251assert_checkequal(e <> str, %t);
252assert_checkequal(e <> STR, %t);
253assert_checkequal(e <> b, %t);
254assert_checkequal(e <> B, %t);
255assert_checkequal(e <> SPB, %t);
256
257assert_checkequal(ec <> empty, %t);
258assert_checkequal(ec <> r, %t);
259assert_checkequal(ec <> c, %t);
260assert_checkequal(ec <> R, [%t,%t;%t,%t]);
261assert_checkequal(ec <> C, [%t,%t;%t,%t]);
262assert_checkequal(ec <> e, %t);
263assert_checkequal(ec <> ec, %f);
264assert_checkequal(ec <> p, %t);
265assert_checkequal(ec <> pc, %t);
266assert_checkequal(ec <> P, [%t,%t;%t,%t]);
267assert_checkequal(ec <> PC, [%t,%t;%t,%t]);
268assert_checkequal(ec <> SP, %t);
269assert_checkequal(ec <> SPC, %t);
270assert_checkequal(ec <> SP1, %t);
271assert_checkequal(ec <> SPC1, %t);
272assert_checkequal(ec <> i8, %t);
273assert_checkequal(ec <> I8, [%t,%t;%t,%t]);
274assert_checkequal(ec <> ui8, %t);
275assert_checkequal(ec <> UI8, [%t,%t;%t,%t]);
276assert_checkequal(ec <> i16, %t);
277assert_checkequal(ec <> I16, [%t,%t;%t,%t]);
278assert_checkequal(ec <> ui16, %t);
279assert_checkequal(ec <> UI16, [%t,%t;%t,%t]);
280assert_checkequal(ec <> i32, %t);
281assert_checkequal(ec <> I32, [%t,%t;%t,%t]);
282assert_checkequal(ec <> ui32, %t);
283assert_checkequal(ec <> UI32, [%t,%t;%t,%t]);
284assert_checkequal(ec <> str, %t);
285assert_checkequal(ec <> STR, %t);
286assert_checkequal(ec <> b, %t);
287assert_checkequal(ec <> B, %t);
288assert_checkequal(ec <> SPB, %t);
289
290assert_checkequal(p <> empty, %t);
291assert_checkequal(p <> r, %t);
292assert_checkequal(p <> c, %t);
293assert_checkequal(p <> R, [%t,%t;%t,%t]);
294assert_checkequal(p <> C, [%t,%t;%t,%t]);
295assert_checkequal(p <> e, %t);
296assert_checkequal(p <> ec, %t);
297assert_checkequal(p <> p, %f);
298assert_checkequal(p <> pc, %t);
299assert_checkequal(p <> P, [%t,%t;%t,%t]);
300assert_checkequal(p <> PC, [%t,%t;%t,%t]);
301assert_checkequal(p <> i8, %t);
302assert_checkequal(p <> I8, [%t,%t;%t,%t]);
303assert_checkequal(p <> ui8, %t);
304assert_checkequal(p <> UI8, [%t,%t;%t,%t]);
305assert_checkequal(p <> i16, %t);
306assert_checkequal(p <> I16, [%t,%t;%t,%t]);
307assert_checkequal(p <> ui16, %t);
308assert_checkequal(p <> UI16, [%t,%t;%t,%t]);
309assert_checkequal(p <> i32, %t);
310assert_checkequal(p <> I32, [%t,%t;%t,%t]);
311assert_checkequal(p <> ui32, %t);
312assert_checkequal(p <> UI32, [%t,%t;%t,%t]);
313assert_checkequal(p <> str, %t);
314assert_checkequal(p <> STR, %t);
315assert_checkequal(p <> b, %t);
316assert_checkequal(p <> B, %t);
317
318assert_checkequal(pc <> empty, %t);
319assert_checkequal(pc <> r, %t);
320assert_checkequal(pc <> c, %t);
321assert_checkequal(pc <> R, [%t,%t;%t,%t]);
322assert_checkequal(pc <> C, [%t,%t;%t,%t]);
323assert_checkequal(pc <> e, %t);
324assert_checkequal(pc <> ec, %t);
325assert_checkequal(pc <> p, %t);
326assert_checkequal(pc <> pc, %f);
327assert_checkequal(pc <> P, [%t,%t;%t,%t]);
328assert_checkequal(pc <> PC, [%t,%t;%t,%t]);
329assert_checkequal(pc <> i8, %t);
330assert_checkequal(pc <> I8, [%t,%t;%t,%t]);
331assert_checkequal(pc <> ui8, %t);
332assert_checkequal(pc <> UI8, [%t,%t;%t,%t]);
333assert_checkequal(pc <> i16, %t);
334assert_checkequal(pc <> I16, [%t,%t;%t,%t]);
335assert_checkequal(pc <> ui16, %t);
336assert_checkequal(pc <> UI16, [%t,%t;%t,%t]);
337assert_checkequal(pc <> i32, %t);
338assert_checkequal(pc <> I32, [%t,%t;%t,%t]);
339assert_checkequal(pc <> ui32, %t);
340assert_checkequal(pc <> UI32, [%t,%t;%t,%t]);
341assert_checkequal(pc <> str, %t);
342assert_checkequal(pc <> STR, %t);
343assert_checkequal(pc <> b, %t);
344assert_checkequal(pc <> B, %t);
345
346assert_checkequal(P <> empty, %t);
347assert_checkequal(P <> r, [%t,%f;%t,%t]);
348assert_checkequal(P <> c, [%t,%t;%t,%t]);
349assert_checkequal(P <> R, [%t,%f;%t,%t]);
350assert_checkequal(P <> C, [%t,%t;%t,%t]);
351assert_checkequal(P <> e, [%t,%t;%t,%t]);
352assert_checkequal(P <> ec, [%t,%t;%t,%t]);
353assert_checkequal(P <> p, [%t,%t;%t,%t]);
354assert_checkequal(P <> pc, [%t,%t;%t,%t]);
355assert_checkequal(P <> P, [%f,%f;%f,%f]);
356assert_checkequal(P <> PC, [%t,%f;%t,%t]);
357assert_checkequal(P <> i8, [%t,%t;%t,%t]);
358assert_checkequal(P <> I8, [%t,%f;%t,%t]);
359assert_checkequal(P <> ui8, [%t,%t;%t,%t]);
360assert_checkequal(P <> UI8, [%t,%f;%t,%t]);
361assert_checkequal(P <> i16, [%t,%t;%t,%t]);
362assert_checkequal(P <> I16, [%t,%f;%t,%t]);
363assert_checkequal(P <> ui16, [%t,%t;%t,%t]);
364assert_checkequal(P <> UI16, [%t,%f;%t,%t]);
365assert_checkequal(P <> i32, [%t,%t;%t,%t]);
366assert_checkequal(P <> I32, [%t,%f;%t,%t]);
367assert_checkequal(P <> ui32, [%t,%t;%t,%t]);
368assert_checkequal(P <> UI32, [%t,%f;%t,%t]);
369assert_checkequal(P <> str, %t);
370assert_checkequal(P <> STR, %t);
371assert_checkequal(P <> b, %t);
372assert_checkequal(P <> B, %t);
373
374assert_checkequal(PC <> empty, %t);
375assert_checkequal(PC <> r, [%t,%f;%t,%t]);
376assert_checkequal(PC <> c, [%t,%t;%t,%t]);
377assert_checkequal(PC <> R, [%t,%f;%t,%t]);
378assert_checkequal(PC <> C, [%t,%t;%t,%t]);
379assert_checkequal(PC <> e, [%t,%t;%t,%t]);
380assert_checkequal(PC <> ec, [%t,%t;%t,%t]);
381assert_checkequal(PC <> p, [%t,%t;%t,%t]);
382assert_checkequal(PC <> pc, [%t,%t;%t,%t]);
383assert_checkequal(PC <> P, [%t,%f;%t,%t]);
384assert_checkequal(PC <> PC, [%f,%f;%f,%f]);
385assert_checkequal(PC <> i8, [%t,%t;%t,%t]);
386assert_checkequal(PC <> I8, [%t,%f;%t,%t]);
387assert_checkequal(PC <> ui8, [%t,%t;%t,%t]);
388assert_checkequal(PC <> UI8, [%t,%f;%t,%t]);
389assert_checkequal(PC <> i16, [%t,%t;%t,%t]);
390assert_checkequal(PC <> I16, [%t,%f;%t,%t]);
391assert_checkequal(PC <> ui16, [%t,%t;%t,%t]);
392assert_checkequal(PC <> UI16, [%t,%f;%t,%t]);
393assert_checkequal(PC <> i32, [%t,%t;%t,%t]);
394assert_checkequal(PC <> I32, [%t,%f;%t,%t]);
395assert_checkequal(PC <> ui32, [%t,%t;%t,%t]);
396assert_checkequal(PC <> UI32, [%t,%f;%t,%t]);
397assert_checkequal(PC <> str, %t);
398assert_checkequal(PC <> STR, %t);
399assert_checkequal(PC <> b, %t);
400assert_checkequal(PC <> B, %t);
401
402assert_checkequal(SP <> empty, %t);
403assert_checkequal(SP <> r, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
404assert_checkequal(SP <> c, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
405assert_checkequal(SP <> R, %t);
406assert_checkequal(SP <> C, %t);
407assert_checkequal(SP <> e, %t);
408assert_checkequal(SP <> ec, %t);
409assert_checkequal(SP <> SP, sparse([1,1],[%f],[4,10]));
410assert_checkequal(SP <> SPC, sparse([1,2;3,10;4,5],[%t;%t;%t],[4,10]));
411assert_checkequal(SP <> SP1, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
412assert_checkequal(SP <> SPC1, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
413assert_checkequal(SP <> i8, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
414assert_checkequal(SP <> I8, %t);
415assert_checkequal(SP <> ui8, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
416assert_checkequal(SP <> UI8, %t);
417assert_checkequal(SP <> i16, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
418assert_checkequal(SP <> I16, %t);
419assert_checkequal(SP <> ui16, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
420assert_checkequal(SP <> UI16, %t);
421assert_checkequal(SP <> i32, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
422assert_checkequal(SP <> I32, %t);
423assert_checkequal(SP <> ui32, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
424assert_checkequal(SP <> UI32, %t);
425assert_checkequal(SP <> str, %t);
426assert_checkequal(SP <> STR, %t);
427assert_checkequal(SP <> b, %t);
428assert_checkequal(SP <> B, %t);
429assert_checkequal(SP <> SPB, %t);
430
431assert_checkequal(SPC <> empty, %t);
432assert_checkequal(SPC <> r, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
433assert_checkequal(SPC <> c, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
434assert_checkequal(SPC <> R, %t);
435assert_checkequal(SPC <> C, %t);
436assert_checkequal(SPC <> e, %t);
437assert_checkequal(SPC <> ec, %t);
438assert_checkequal(SPC <> SP, sparse([1,2;3,10;4,5],[%t;%t;%t],[4,10]));
439assert_checkequal(SPC <> SPC, sparse([1,1],[%f],[4,10]));
440assert_checkequal(SPC <> SP1, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
441assert_checkequal(SPC <> SPC1, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
442assert_checkequal(SPC <> i8, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
443assert_checkequal(SPC <> I8, %t);
444assert_checkequal(SPC <> ui8, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
445assert_checkequal(SPC <> UI8, %t);
446assert_checkequal(SPC <> i16, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
447assert_checkequal(SPC <> I16, %t);
448assert_checkequal(SPC <> ui16, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
449assert_checkequal(SPC <> UI16, %t);
450assert_checkequal(SPC <> i32, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
451assert_checkequal(SPC <> I32, %t);
452assert_checkequal(SPC <> ui32, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
453assert_checkequal(SPC <> UI32, %t);
454assert_checkequal(SPC <> str, %t);
455assert_checkequal(SPC <> STR, %t);
456assert_checkequal(SPC <> b, %t);
457assert_checkequal(SPC <> B, %t);
458assert_checkequal(SPC <> SPB, %t);
459
460assert_checkequal(SP1 <> empty, %t);
461assert_checkequal(SP1 <> r, sparse([1,1],%t,[1,1]));
462assert_checkequal(SP1 <> c, sparse([1,1],%t,[1,1]));
463assert_checkequal(SP1 <> R, %t);
464assert_checkequal(SP1 <> C, %t);
465assert_checkequal(SP1 <> e, %t);
466assert_checkequal(SP1 <> ec, %t);
467assert_checkequal(SP1 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
468assert_checkequal(SP1 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
469assert_checkequal(SP1 <> SP1, sparse([1,1],[%f],[1,1]));
470assert_checkequal(SP1 <> SPC1, sparse([1,1],%t,[1,1]));
471assert_checkequal(SP1 <> i8, sparse([1,1],%t,[1,1]));
472assert_checkequal(SP1 <> I8, %t);
473assert_checkequal(SP1 <> ui8, sparse([1,1],%t,[1,1]));
474assert_checkequal(SP1 <> UI8, %t);
475assert_checkequal(SP1 <> i16, sparse([1,1],%t,[1,1]));
476assert_checkequal(SP1 <> I16, %t);
477assert_checkequal(SP1 <> ui16, sparse([1,1],%t,[1,1]));
478assert_checkequal(SP1 <> UI16, %t);
479assert_checkequal(SP1 <> i32, sparse([1,1],%t,[1,1]));
480assert_checkequal(SP1 <> I32, %t);
481assert_checkequal(SP1 <> ui32, sparse([1,1],%t,[1,1]));
482assert_checkequal(SP1 <> UI32, %t);
483assert_checkequal(SP1 <> str, %t);
484assert_checkequal(SP1 <> STR, %t);
485assert_checkequal(SP1 <> b, %t);
486assert_checkequal(SP1 <> B, %t);
487assert_checkequal(SP1 <> SPB, %t);
488
489assert_checkequal(SPC1 <> empty, %t);
490assert_checkequal(SPC1 <> r, sparse([1,1],%t,[1,1]));
491assert_checkequal(SPC1 <> c, sparse([1,1],%t,[1,1]));
492assert_checkequal(SPC1 <> R, %t);
493assert_checkequal(SPC1 <> C, %t);
494assert_checkequal(SPC1 <> e, %t);
495assert_checkequal(SPC1 <> ec, %t);
496assert_checkequal(SPC1 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
497assert_checkequal(SPC1 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
498assert_checkequal(SPC1 <> SP1, sparse([1,1],%t,[1,1]));
499assert_checkequal(SPC1 <> SPC1, sparse([1,1],[%f],[1,1]));
500assert_checkequal(SPC1 <> i8, sparse([1,1],%t,[1,1]));
501assert_checkequal(SPC1 <> I8, %t);
502assert_checkequal(SPC1 <> ui8, sparse([1,1],%t,[1,1]));
503assert_checkequal(SPC1 <> UI8, %t);
504assert_checkequal(SPC1 <> i16, sparse([1,1],%t,[1,1]));
505assert_checkequal(SPC1 <> I16, %t);
506assert_checkequal(SPC1 <> ui16, sparse([1,1],%t,[1,1]));
507assert_checkequal(SPC1 <> UI16, %t);
508assert_checkequal(SPC1 <> i32, sparse([1,1],%t,[1,1]));
509assert_checkequal(SPC1 <> I32, %t);
510assert_checkequal(SPC1 <> ui32, sparse([1,1],%t,[1,1]));
511assert_checkequal(SPC1 <> UI32, %t);
512assert_checkequal(SPC1 <> str, %t);
513assert_checkequal(SPC1 <> STR, %t);
514assert_checkequal(SPC1 <> b, %t);
515assert_checkequal(SPC1 <> B, %t);
516assert_checkequal(SPC1 <> SPB, %t);
517
518assert_checkequal(i8 <> empty, %t);
519assert_checkequal(i8 <> r, %t);
520assert_checkequal(i8 <> c, %t);
521assert_checkequal(i8 <> R, [%t,%t;%t,%t]);
522assert_checkequal(i8 <> C, [%t,%t;%t,%t]);
523assert_checkequal(i8 <> e, %t);
524assert_checkequal(i8 <> ec, %t);
525assert_checkequal(i8 <> p, %t);
526assert_checkequal(i8 <> pc, %t);
527assert_checkequal(i8 <> P, [%t,%t;%t,%t]);
528assert_checkequal(i8 <> PC, [%t,%t;%t,%t]);
529assert_checkequal(i8 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
530assert_checkequal(i8 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
531assert_checkequal(i8 <> SP1, sparse([1,1],%t,[1,1]));
532assert_checkequal(i8 <> SPC1, sparse([1,1],%t,[1,1]));
533assert_checkequal(i8 <> i8, %f);
534assert_checkequal(i8 <> I8, [%f,%t;%t,%t]);
535assert_checkequal(i8 <> ui8, %t);
536assert_checkequal(i8 <> UI8, [%t,%t;%t,%t]);
537assert_checkequal(i8 <> i16, %t);
538assert_checkequal(i8 <> I16, [%t,%t;%t,%t]);
539assert_checkequal(i8 <> ui16, %t);
540assert_checkequal(i8 <> UI16, [%t,%t;%t,%t]);
541assert_checkequal(i8 <> i32, %t);
542assert_checkequal(i8 <> I32, [%t,%t;%t,%t]);
543assert_checkequal(i8 <> ui32, %t);
544assert_checkequal(i8 <> UI32, [%t,%t;%t,%t]);
545assert_checkequal(i8 <> str, %t);
546assert_checkequal(i8 <> STR, %t);
547assert_checkequal(i8 <> b, %t);
548assert_checkequal(i8 <> B, [%t,%t;%t,%t]);
549assert_checkequal(i8 <> SPB, %t);
550
551assert_checkequal(I8 <> empty, %t);
552assert_checkequal(I8 <> r, [%t,%f;%t,%t]);
553assert_checkequal(I8 <> c, [%t,%t;%t,%t]);
554assert_checkequal(I8 <> R, [%t,%f;%t,%t]);
555assert_checkequal(I8 <> C, [%t,%t;%t,%t]);
556assert_checkequal(I8 <> e, [%t,%t;%t,%t]);
557assert_checkequal(I8 <> ec, [%t,%t;%t,%t]);
558assert_checkequal(I8 <> p, [%t,%t;%t,%t]);
559assert_checkequal(I8 <> pc, [%t,%t;%t,%t]);
560assert_checkequal(I8 <> P, [%t,%f;%t,%t]);
561assert_checkequal(I8 <> PC, [%t,%f;%t,%t]);
562assert_checkequal(I8 <> SP, %t);
563assert_checkequal(I8 <> SPC, %t);
564assert_checkequal(I8 <> SP1, %t);
565assert_checkequal(I8 <> SPC1, %t);
566assert_checkequal(I8 <> i8, [%f,%t;%t,%t]);
567assert_checkequal(I8 <> I8, [%f,%f;%f,%f]);
568assert_checkequal(I8 <> ui8, [%t,%t;%t,%t]);
569assert_checkequal(I8 <> UI8, [%t,%f;%t,%t]);
570assert_checkequal(I8 <> i16, [%t,%t;%t,%t]);
571assert_checkequal(I8 <> I16, [%t,%f;%t,%t]);
572assert_checkequal(I8 <> ui16, [%t,%t;%t,%t]);
573assert_checkequal(I8 <> UI16, [%t,%f;%t,%t]);
574assert_checkequal(I8 <> i32, [%t,%t;%t,%f]);
575assert_checkequal(I8 <> I32, [%t,%f;%t,%t]);
576assert_checkequal(I8 <> ui32, [%t,%t;%t,%t]);
577assert_checkequal(I8 <> UI32, [%t,%f;%t,%t]);
578assert_checkequal(I8 <> str, %t);
579assert_checkequal(I8 <> STR, %t);
580assert_checkequal(I8 <> b, [%t,%t;%t,%t]);
581assert_checkequal(I8 <> B, [%t,%t;%t,%t]);
582assert_checkequal(I8 <> SPB, %t);
583
584assert_checkequal(ui8 <> empty, %t);
585assert_checkequal(ui8 <> r, %t);
586assert_checkequal(ui8 <> c, %t);
587assert_checkequal(ui8 <> R, [%t,%t;%t,%t]);
588assert_checkequal(ui8 <> C, [%t,%t;%t,%t]);
589assert_checkequal(ui8 <> e, %t);
590assert_checkequal(ui8 <> ec, %t);
591assert_checkequal(ui8 <> p, %t);
592assert_checkequal(ui8 <> pc, %t);
593assert_checkequal(ui8 <> P, [%t,%t;%t,%t]);
594assert_checkequal(ui8 <> PC, [%t,%t;%t,%t]);
595assert_checkequal(ui8 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
596assert_checkequal(ui8 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
597assert_checkequal(ui8 <> SP1, sparse([1,1],%t,[1,1]));
598assert_checkequal(ui8 <> SPC1, sparse([1,1],%t,[1,1]));
599assert_checkequal(ui8 <> i8, %t);
600assert_checkequal(ui8 <> I8, [%t,%t;%t,%t]);
601assert_checkequal(ui8 <> ui8, %f);
602assert_checkequal(ui8 <> UI8, [%f,%t;%t,%t]);
603assert_checkequal(ui8 <> i16, %t);
604assert_checkequal(ui8 <> I16, [%t,%t;%t,%t]);
605assert_checkequal(ui8 <> ui16, %t);
606assert_checkequal(ui8 <> UI16, [%t,%t;%t,%t]);
607assert_checkequal(ui8 <> i32, %t);
608assert_checkequal(ui8 <> I32, [%t,%t;%t,%t]);
609assert_checkequal(ui8 <> ui32, %t);
610assert_checkequal(ui8 <> UI32, [%t,%t;%t,%t]);
611assert_checkequal(ui8 <> str, %t);
612assert_checkequal(ui8 <> STR, %t);
613assert_checkequal(ui8 <> b, %t);
614assert_checkequal(ui8 <> B, [%t,%t;%t,%t]);
615assert_checkequal(ui8 <> SPB, %t);
616
617assert_checkequal(UI8 <> empty, %t);
618assert_checkequal(UI8 <> r, [%t,%f;%t,%t]);
619assert_checkequal(UI8 <> c, [%t,%t;%t,%t]);
620assert_checkequal(UI8 <> R, [%t,%f;%t,%t]);
621assert_checkequal(UI8 <> C, [%t,%t;%t,%t]);
622assert_checkequal(UI8 <> e, [%t,%t;%t,%t]);
623assert_checkequal(UI8 <> ec, [%t,%t;%t,%t]);
624assert_checkequal(UI8 <> p, [%t,%t;%t,%t]);
625assert_checkequal(UI8 <> pc, [%t,%t;%t,%t]);
626assert_checkequal(UI8 <> P, [%t,%f;%t,%t]);
627assert_checkequal(UI8 <> PC, [%t,%f;%t,%t]);
628assert_checkequal(UI8 <> SP, %t);
629assert_checkequal(UI8 <> SPC, %t);
630assert_checkequal(UI8 <> SP1, %t);
631assert_checkequal(UI8 <> SPC1, %t);
632assert_checkequal(UI8 <> i8, [%t,%t;%t,%t]);
633assert_checkequal(UI8 <> I8, [%t,%f;%t,%t]);
634assert_checkequal(UI8 <> ui8, [%f,%t;%t,%t]);
635assert_checkequal(UI8 <> UI8, [%f,%f;%f,%f]);
636assert_checkequal(UI8 <> i16, [%t,%t;%t,%t]);
637assert_checkequal(UI8 <> I16, [%t,%f;%t,%t]);
638assert_checkequal(UI8 <> ui16, [%t,%t;%t,%t]);
639assert_checkequal(UI8 <> UI16, [%t,%f;%t,%t]);
640assert_checkequal(UI8 <> i32, [%t,%t;%t,%t]);
641assert_checkequal(UI8 <> I32, [%t,%f;%t,%t]);
642assert_checkequal(UI8 <> ui32, [%t,%t;%t,%f]);
643assert_checkequal(UI8 <> UI32, [%t,%f;%t,%t]);
644assert_checkequal(UI8 <> str, %t);
645assert_checkequal(UI8 <> STR, %t);
646assert_checkequal(UI8 <> b, [%t,%t;%t,%t]);
647assert_checkequal(UI8 <> B, [%t,%t;%t,%t]);
648assert_checkequal(UI8 <> SPB, %t);
649
650assert_checkequal(i16 <> empty, %t);
651assert_checkequal(i16 <> r, %t);
652assert_checkequal(i16 <> c, %t);
653assert_checkequal(i16 <> R, [%t,%t;%t,%t]);
654assert_checkequal(i16 <> C, [%t,%t;%t,%t]);
655assert_checkequal(i16 <> e, %t);
656assert_checkequal(i16 <> ec, %t);
657assert_checkequal(i16 <> p, %t);
658assert_checkequal(i16 <> pc, %t);
659assert_checkequal(i16 <> P, [%t,%t;%t,%t]);
660assert_checkequal(i16 <> PC, [%t,%t;%t,%t]);
661assert_checkequal(i16 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
662assert_checkequal(i16 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
663assert_checkequal(i16 <> SP1, sparse([1,1],%t,[1,1]));
664assert_checkequal(i16 <> SPC1, sparse([1,1],%t,[1,1]));
665assert_checkequal(i16 <> i8, %t);
666assert_checkequal(i16 <> I8, [%t,%t;%t,%t]);
667assert_checkequal(i16 <> ui8, %t);
668assert_checkequal(i16 <> UI8, [%t,%t;%t,%t]);
669assert_checkequal(i16 <> i16, %f);
670assert_checkequal(i16 <> I16, [%f,%t;%t,%t]);
671assert_checkequal(i16 <> ui16, %t);
672assert_checkequal(i16 <> UI16, [%t,%t;%t,%t]);
673assert_checkequal(i16 <> i32, %t);
674assert_checkequal(i16 <> I32, [%t,%t;%t,%t]);
675assert_checkequal(i16 <> ui32, %t);
676assert_checkequal(i16 <> UI32, [%t,%t;%t,%t]);
677assert_checkequal(i16 <> str, %t);
678assert_checkequal(i16 <> STR, %t);
679assert_checkequal(i16 <> b, %t);
680assert_checkequal(i16 <> B, [%t,%t;%t,%t]);
681assert_checkequal(i16 <> SPB, %t);
682
683assert_checkequal(I16 <> empty, %t);
684assert_checkequal(I16 <> r, [%t,%f;%t,%t]);
685assert_checkequal(I16 <> c, [%t,%t;%t,%t]);
686assert_checkequal(I16 <> R, [%t,%f;%t,%t]);
687assert_checkequal(I16 <> C, [%t,%t;%t,%t]);
688assert_checkequal(I16 <> e, [%t,%t;%t,%t]);
689assert_checkequal(I16 <> ec, [%t,%t;%t,%t]);
690assert_checkequal(I16 <> p, [%t,%t;%t,%t]);
691assert_checkequal(I16 <> pc, [%t,%t;%t,%t]);
692assert_checkequal(I16 <> P, [%t,%f;%t,%t]);
693assert_checkequal(I16 <> PC, [%t,%f;%t,%t]);
694assert_checkequal(I16 <> SP, %t);
695assert_checkequal(I16 <> SPC, %t);
696assert_checkequal(I16 <> SP1, %t);
697assert_checkequal(I16 <> SPC1, %t);
698assert_checkequal(I16 <> i8, [%t,%t;%t,%t]);
699assert_checkequal(I16 <> I8, [%t,%f;%t,%t]);
700assert_checkequal(I16 <> ui8, [%t,%t;%t,%t]);
701assert_checkequal(I16 <> UI8, [%t,%f;%t,%t]);
702assert_checkequal(I16 <> i16, [%f,%t;%t,%t]);
703assert_checkequal(I16 <> I16, [%f,%f;%f,%f]);
704assert_checkequal(I16 <> ui16, [%t,%t;%t,%t]);
705assert_checkequal(I16 <> UI16, [%t,%f;%t,%t]);
706assert_checkequal(I16 <> i32, [%t,%t;%t,%t]);
707assert_checkequal(I16 <> I32, [%t,%f;%t,%t]);
708assert_checkequal(I16 <> ui32, [%t,%t;%t,%t]);
709assert_checkequal(I16 <> UI32, [%t,%f;%t,%t]);
710assert_checkequal(I16 <> str, %t);
711assert_checkequal(I16 <> STR, %t);
712assert_checkequal(I16 <> b, [%t,%t;%t,%t]);
713assert_checkequal(I16 <> B, [%t,%t;%t,%t]);
714assert_checkequal(I16 <> SPB, %t);
715
716assert_checkequal(ui16 <> empty, %t);
717assert_checkequal(ui16 <> r, %t);
718assert_checkequal(ui16 <> c, %t);
719assert_checkequal(ui16 <> R, [%t,%t;%t,%t]);
720assert_checkequal(ui16 <> C, [%t,%t;%t,%t]);
721assert_checkequal(ui16 <> e, %t);
722assert_checkequal(ui16 <> ec, %t);
723assert_checkequal(ui16 <> p, %t);
724assert_checkequal(ui16 <> pc, %t);
725assert_checkequal(ui16 <> P, [%t,%t;%t,%t]);
726assert_checkequal(ui16 <> PC, [%t,%t;%t,%t]);
727assert_checkequal(ui16 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
728assert_checkequal(ui16 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
729assert_checkequal(ui16 <> SP1, sparse([1,1],%t,[1,1]));
730assert_checkequal(ui16 <> SPC1, sparse([1,1],%t,[1,1]));
731assert_checkequal(ui16 <> i8, %t);
732assert_checkequal(ui16 <> I8, [%t,%t;%t,%t]);
733assert_checkequal(ui16 <> ui8, %t);
734assert_checkequal(ui16 <> UI8, [%t,%t;%t,%t]);
735assert_checkequal(ui16 <> i16, %t);
736assert_checkequal(ui16 <> I16, [%t,%t;%t,%t]);
737assert_checkequal(ui16 <> ui16, %f);
738assert_checkequal(ui16 <> UI16, [%f,%t;%t,%t]);
739assert_checkequal(ui16 <> i32, %t);
740assert_checkequal(ui16 <> I32, [%t,%t;%t,%t]);
741assert_checkequal(ui16 <> ui32, %t);
742assert_checkequal(ui16 <> UI32, [%t,%t;%t,%t]);
743assert_checkequal(ui16 <> str, %t);
744assert_checkequal(ui16 <> STR, %t);
745assert_checkequal(ui16 <> b, %t);
746assert_checkequal(ui16 <> B, [%t,%t;%t,%t]);
747assert_checkequal(ui16 <> SPB, %t);
748
749assert_checkequal(UI16 <> empty, %t);
750assert_checkequal(UI16 <> r, [%t,%f;%t,%t]);
751assert_checkequal(UI16 <> c, [%t,%t;%t,%t]);
752assert_checkequal(UI16 <> R, [%t,%f;%t,%t]);
753assert_checkequal(UI16 <> C, [%t,%t;%t,%t]);
754assert_checkequal(UI16 <> e, [%t,%t;%t,%t]);
755assert_checkequal(UI16 <> ec, [%t,%t;%t,%t]);
756assert_checkequal(UI16 <> p, [%t,%t;%t,%t]);
757assert_checkequal(UI16 <> pc, [%t,%t;%t,%t]);
758assert_checkequal(UI16 <> P, [%t,%f;%t,%t]);
759assert_checkequal(UI16 <> PC, [%t,%f;%t,%t]);
760assert_checkequal(UI16 <> SP, %t);
761assert_checkequal(UI16 <> SPC, %t);
762assert_checkequal(UI16 <> SP1, %t);
763assert_checkequal(UI16 <> SPC1, %t);
764assert_checkequal(UI16 <> i8, [%t,%t;%t,%t]);
765assert_checkequal(UI16 <> I8, [%t,%f;%t,%t]);
766assert_checkequal(UI16 <> ui8, [%t,%t;%t,%t]);
767assert_checkequal(UI16 <> UI8, [%t,%f;%t,%t]);
768assert_checkequal(UI16 <> i16, [%t,%t;%t,%t]);
769assert_checkequal(UI16 <> I16, [%t,%f;%t,%t]);
770assert_checkequal(UI16 <> ui16, [%f,%t;%t,%t]);
771assert_checkequal(UI16 <> UI16, [%f,%f;%f,%f]);
772assert_checkequal(UI16 <> i32, [%t,%t;%t,%t]);
773assert_checkequal(UI16 <> I32, [%t,%f;%t,%t]);
774assert_checkequal(UI16 <> ui32, [%t,%t;%t,%t]);
775assert_checkequal(UI16 <> UI32, [%t,%f;%t,%t]);
776assert_checkequal(UI16 <> str, %t);
777assert_checkequal(UI16 <> STR, %t);
778assert_checkequal(UI16 <> b, [%t,%t;%t,%t]);
779assert_checkequal(UI16 <> B, [%t,%t;%t,%t]);
780assert_checkequal(UI16 <> SPB, %t);
781
782assert_checkequal(i32 <> empty, %t);
783assert_checkequal(i32 <> r, %t);
784assert_checkequal(i32 <> c, %t);
785assert_checkequal(i32 <> R, [%t,%t;%t,%t]);
786assert_checkequal(i32 <> C, [%t,%t;%t,%t]);
787assert_checkequal(i32 <> e, %t);
788assert_checkequal(i32 <> ec, %t);
789assert_checkequal(i32 <> p, %t);
790assert_checkequal(i32 <> pc, %t);
791assert_checkequal(i32 <> P, [%t,%t;%t,%t]);
792assert_checkequal(i32 <> PC, [%t,%t;%t,%t]);
793assert_checkequal(i32 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
794assert_checkequal(i32 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
795assert_checkequal(i32 <> SP1, sparse([1,1],%t,[1,1]));
796assert_checkequal(i32 <> SPC1, sparse([1,1],%t,[1,1]));
797assert_checkequal(i32 <> i8, %t);
798assert_checkequal(i32 <> I8, [%t,%t;%t,%f]);
799assert_checkequal(i32 <> ui8, %t);
800assert_checkequal(i32 <> UI8, [%t,%t;%t,%t]);
801assert_checkequal(i32 <> i16, %t);
802assert_checkequal(i32 <> I16, [%t,%t;%t,%t]);
803assert_checkequal(i32 <> ui16, %t);
804assert_checkequal(i32 <> UI16, [%t,%t;%t,%t]);
805assert_checkequal(i32 <> i32, %f);
806assert_checkequal(i32 <> I32, [%f,%t;%t,%t]);
807assert_checkequal(i32 <> ui32, %t);
808assert_checkequal(i32 <> UI32, [%t,%t;%t,%t]);
809assert_checkequal(i32 <> str, %t);
810assert_checkequal(i32 <> STR, %t);
811assert_checkequal(i32 <> b, %t);
812assert_checkequal(i32 <> B, [%t,%t;%t,%t]);
813assert_checkequal(i32 <> SPB, %t);
814
815assert_checkequal(I32 <> empty, %t);
816assert_checkequal(I32 <> r, [%t,%f;%t,%t]);
817assert_checkequal(I32 <> c, [%t,%t;%t,%t]);
818assert_checkequal(I32 <> R, [%t,%f;%t,%t]);
819assert_checkequal(I32 <> C, [%t,%t;%t,%t]);
820assert_checkequal(I32 <> e, [%t,%t;%t,%t]);
821assert_checkequal(I32 <> ec, [%t,%t;%t,%t]);
822assert_checkequal(I32 <> p, [%t,%t;%t,%t]);
823assert_checkequal(I32 <> pc, [%t,%t;%t,%t]);
824assert_checkequal(I32 <> P, [%t,%f;%t,%t]);
825assert_checkequal(I32 <> PC, [%t,%f;%t,%t]);
826assert_checkequal(I32 <> SP, %t);
827assert_checkequal(I32 <> SPC, %t);
828assert_checkequal(I32 <> SP1, %t);
829assert_checkequal(I32 <> SPC1, %t);
830assert_checkequal(I32 <> i8, [%t,%t;%t,%t]);
831assert_checkequal(I32 <> I8, [%t,%f;%t,%t]);
832assert_checkequal(I32 <> ui8, [%t,%t;%t,%t]);
833assert_checkequal(I32 <> UI8, [%t,%f;%t,%t]);
834assert_checkequal(I32 <> i16, [%t,%t;%t,%t]);
835assert_checkequal(I32 <> I16, [%t,%f;%t,%t]);
836assert_checkequal(I32 <> ui16, [%t,%t;%t,%t]);
837assert_checkequal(I32 <> UI16, [%t,%f;%t,%t]);
838assert_checkequal(I32 <> i32, [%f,%t;%t,%t]);
839assert_checkequal(I32 <> I32, [%f,%f;%f,%f]);
840assert_checkequal(I32 <> ui32, [%t,%t;%t,%t]);
841assert_checkequal(I32 <> UI32, [%t,%f;%t,%t]);
842assert_checkequal(I32 <> str, %t);
843assert_checkequal(I32 <> STR, %t);
844assert_checkequal(I32 <> b, [%t,%t;%t,%t]);
845assert_checkequal(I32 <> B, [%t,%t;%t,%t]);
846assert_checkequal(I32 <> SPB, %t);
847
848assert_checkequal(ui32 <> empty, %t);
849assert_checkequal(ui32 <> r, %t);
850assert_checkequal(ui32 <> c, %t);
851assert_checkequal(ui32 <> R, [%t,%t;%t,%t]);
852assert_checkequal(ui32 <> C, [%t,%t;%t,%t]);
853assert_checkequal(ui32 <> e, %t);
854assert_checkequal(ui32 <> ec, %t);
855assert_checkequal(ui32 <> p, %t);
856assert_checkequal(ui32 <> pc, %t);
857assert_checkequal(ui32 <> P, [%t,%t;%t,%t]);
858assert_checkequal(ui32 <> PC, [%t,%t;%t,%t]);
859assert_checkequal(ui32 <> SP, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
860assert_checkequal(ui32 <> SPC, sparse([1,1;1,2;1,3;1,4;1,5;1,6;1,7;1,8;1,9;1,10;2,1;2,2;2,3;2,4;2,5;2,6;2,7;2,8;2,9;2,10;3,1;3,2;3,3;3,4;3,5;3,6;3,7;3,8;3,9;3,10;4,1;4,2;4,3;4,4;4,5;4,6;4,7;4,8;4,9;4,10],[%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t;%t],[4,10]));
861assert_checkequal(ui32 <> SP1, sparse([1,1],%t,[1,1]));
862assert_checkequal(ui32 <> SPC1, sparse([1,1],%t,[1,1]));
863assert_checkequal(ui32 <> i8, %t);
864assert_checkequal(ui32 <> I8, [%t,%t;%t,%t]);
865assert_checkequal(ui32 <> ui8, %t);
866assert_checkequal(ui32 <> UI8, [%t,%t;%t,%f]);
867assert_checkequal(ui32 <> i16, %t);
868assert_checkequal(ui32 <> I16, [%t,%t;%t,%t]);
869assert_checkequal(ui32 <> ui16, %t);
870assert_checkequal(ui32 <> UI16, [%t,%t;%t,%t]);
871assert_checkequal(ui32 <> i32, %t);
872assert_checkequal(ui32 <> I32, [%t,%t;%t,%t]);
873assert_checkequal(ui32 <> ui32, %f);
874assert_checkequal(ui32 <> UI32, [%f,%t;%t,%t]);
875assert_checkequal(ui32 <> str, %t);
876assert_checkequal(ui32 <> STR, %t);
877assert_checkequal(ui32 <> b, %t);
878assert_checkequal(ui32 <> B, [%t,%t;%t,%t]);
879assert_checkequal(ui32 <> SPB, %t);
880
881assert_checkequal(UI32 <> empty, %t);
882assert_checkequal(UI32 <> r, [%t,%f;%t,%t]);
883assert_checkequal(UI32 <> c, [%t,%t;%t,%t]);
884assert_checkequal(UI32 <> R, [%t,%f;%t,%t]);
885assert_checkequal(UI32 <> C, [%t,%t;%t,%t]);
886assert_checkequal(UI32 <> e, [%t,%t;%t,%t]);
887assert_checkequal(UI32 <> ec, [%t,%t;%t,%t]);
888assert_checkequal(UI32 <> p, [%t,%t;%t,%t]);
889assert_checkequal(UI32 <> pc, [%t,%t;%t,%t]);
890assert_checkequal(UI32 <> P, [%t,%f;%t,%t]);
891assert_checkequal(UI32 <> PC, [%t,%f;%t,%t]);
892assert_checkequal(UI32 <> SP, %t);
893assert_checkequal(UI32 <> SPC, %t);
894assert_checkequal(UI32 <> SP1, %t);
895assert_checkequal(UI32 <> SPC1, %t);
896assert_checkequal(UI32 <> i8, [%t,%t;%t,%t]);
897assert_checkequal(UI32 <> I8, [%t,%f;%t,%t]);
898assert_checkequal(UI32 <> ui8, [%t,%t;%t,%t]);
899assert_checkequal(UI32 <> UI8, [%t,%f;%t,%t]);
900assert_checkequal(UI32 <> i16, [%t,%t;%t,%t]);
901assert_checkequal(UI32 <> I16, [%t,%f;%t,%t]);
902assert_checkequal(UI32 <> ui16, [%t,%t;%t,%t]);
903assert_checkequal(UI32 <> UI16, [%t,%f;%t,%t]);
904assert_checkequal(UI32 <> i32, [%t,%t;%t,%t]);
905assert_checkequal(UI32 <> I32, [%t,%f;%t,%t]);
906assert_checkequal(UI32 <> ui32, [%f,%t;%t,%t]);
907assert_checkequal(UI32 <> UI32, [%f,%f;%f,%f]);
908assert_checkequal(UI32 <> str, %t);
909assert_checkequal(UI32 <> STR, %t);
910assert_checkequal(UI32 <> b, [%t,%t;%t,%t]);
911assert_checkequal(UI32 <> B, [%t,%t;%t,%t]);
912assert_checkequal(UI32 <> SPB, %t);
913
914assert_checkequal(str <> empty, %t);
915assert_checkequal(str <> r, %t);
916assert_checkequal(str <> c, %t);
917assert_checkequal(str <> R, %t);
918assert_checkequal(str <> C, %t);
919assert_checkequal(str <> e, %t);
920assert_checkequal(str <> ec, %t);
921assert_checkequal(str <> p, %t);
922assert_checkequal(str <> pc, %t);
923assert_checkequal(str <> P, %t);
924assert_checkequal(str <> PC, %t);
925assert_checkequal(str <> SP, %t);
926assert_checkequal(str <> SPC, %t);
927assert_checkequal(str <> SP1, %t);
928assert_checkequal(str <> SPC1, %t);
929assert_checkequal(str <> i8, %t);
930assert_checkequal(str <> I8, %t);
931assert_checkequal(str <> ui8, %t);
932assert_checkequal(str <> UI8, %t);
933assert_checkequal(str <> i16, %t);
934assert_checkequal(str <> I16, %t);
935assert_checkequal(str <> ui16, %t);
936assert_checkequal(str <> UI16, %t);
937assert_checkequal(str <> i32, %t);
938assert_checkequal(str <> I32, %t);
939assert_checkequal(str <> ui32, %t);
940assert_checkequal(str <> UI32, %t);
941assert_checkequal(str <> str, %f);
942assert_checkequal(str <> STR, [%t,%t;%t,%t]);
943assert_checkequal(str <> b, %t);
944assert_checkequal(str <> B, %t);
945assert_checkequal(str <> SPB, %t);
946
947assert_checkequal(STR <> empty, %t);
948assert_checkequal(STR <> r, %t);
949assert_checkequal(STR <> c, %t);
950assert_checkequal(STR <> R, %t);
951assert_checkequal(STR <> C, %t);
952assert_checkequal(STR <> e, %t);
953assert_checkequal(STR <> ec, %t);
954assert_checkequal(STR <> p, %t);
955assert_checkequal(STR <> pc, %t);
956assert_checkequal(STR <> P, %t);
957assert_checkequal(STR <> PC, %t);
958assert_checkequal(STR <> SP, %t);
959assert_checkequal(STR <> SPC, %t);
960assert_checkequal(STR <> SP1, %t);
961assert_checkequal(STR <> SPC1, %t);
962assert_checkequal(STR <> i8, %t);
963assert_checkequal(STR <> I8, %t);
964assert_checkequal(STR <> ui8, %t);
965assert_checkequal(STR <> UI8, %t);
966assert_checkequal(STR <> i16, %t);
967assert_checkequal(STR <> I16, %t);
968assert_checkequal(STR <> ui16, %t);
969assert_checkequal(STR <> UI16, %t);
970assert_checkequal(STR <> i32, %t);
971assert_checkequal(STR <> I32, %t);
972assert_checkequal(STR <> ui32, %t);
973assert_checkequal(STR <> UI32, %t);
974assert_checkequal(STR <> str, [%t,%t;%t,%t]);
975assert_checkequal(STR <> STR, [%f,%f;%f,%f]);
976assert_checkequal(STR <> b, %t);
977assert_checkequal(STR <> B, %t);
978assert_checkequal(STR <> SPB, %t);
979
980assert_checkequal(b <> empty, %t);
981assert_checkequal(b <> r, %t);
982assert_checkequal(b <> c, %t);
983assert_checkequal(b <> R, %t);
984assert_checkequal(b <> C, %t);
985assert_checkequal(b <> e, %t);
986assert_checkequal(b <> ec, %t);
987assert_checkequal(b <> p, %t);
988assert_checkequal(b <> pc, %t);
989assert_checkequal(b <> P, %t);
990assert_checkequal(b <> PC, %t);
991assert_checkequal(b <> SP, %t);
992assert_checkequal(b <> SPC, %t);
993assert_checkequal(b <> SP1, %t);
994assert_checkequal(b <> SPC1, %t);
995assert_checkequal(b <> i8, %t);
996assert_checkequal(b <> I8, [%t,%t;%t,%t]);
997assert_checkequal(b <> ui8, %t);
998assert_checkequal(b <> UI8, [%t,%t;%t,%t]);
999assert_checkequal(b <> i16, %t);
1000assert_checkequal(b <> I16, [%t,%t;%t,%t]);
1001assert_checkequal(b <> ui16, %t);
1002assert_checkequal(b <> UI16, [%t,%t;%t,%t]);
1003assert_checkequal(b <> i32, %t);
1004assert_checkequal(b <> I32, [%t,%t;%t,%t]);
1005assert_checkequal(b <> ui32, %t);
1006assert_checkequal(b <> UI32, [%t,%t;%t,%t]);
1007assert_checkequal(b <> str, %t);
1008assert_checkequal(b <> STR, %t);
1009assert_checkequal(b <> b, %f);
1010assert_checkequal(b <> B, [%t,%f;%f,%t]);
1011assert_checkequal(b <> SPB, sparse([1,2;2,1],[%t;%t],[2,2]));
1012
1013assert_checkequal(B <> empty, %t);
1014assert_checkequal(B <> r, %t);
1015assert_checkequal(B <> c, %t);
1016assert_checkequal(B <> R, %t);
1017assert_checkequal(B <> C, %t);
1018assert_checkequal(B <> e, %t);
1019assert_checkequal(B <> ec, %t);
1020assert_checkequal(B <> p, %t);
1021assert_checkequal(B <> pc, %t);
1022assert_checkequal(B <> P, %t);
1023assert_checkequal(B <> PC, %t);
1024assert_checkequal(B <> SP, %t);
1025assert_checkequal(B <> SPC, %t);
1026assert_checkequal(B <> SP1, %t);
1027assert_checkequal(B <> SPC1, %t);
1028assert_checkequal(B <> i8, [%t,%t;%t,%t]);
1029assert_checkequal(B <> I8, [%t,%t;%t,%t]);
1030assert_checkequal(B <> ui8, [%t,%t;%t,%t]);
1031assert_checkequal(B <> UI8, [%t,%t;%t,%t]);
1032assert_checkequal(B <> i16, [%t,%t;%t,%t]);
1033assert_checkequal(B <> I16, [%t,%t;%t,%t]);
1034assert_checkequal(B <> ui16, [%t,%t;%t,%t]);
1035assert_checkequal(B <> UI16, [%t,%t;%t,%t]);
1036assert_checkequal(B <> i32, [%t,%t;%t,%t]);
1037assert_checkequal(B <> I32, [%t,%t;%t,%t]);
1038assert_checkequal(B <> ui32, [%t,%t;%t,%t]);
1039assert_checkequal(B <> UI32, [%t,%t;%t,%t]);
1040assert_checkequal(B <> str, %t);
1041assert_checkequal(B <> STR, %t);
1042assert_checkequal(B <> b, [%t,%f;%f,%t]);
1043assert_checkequal(B <> B, [%f,%f;%f,%f]);
1044assert_checkequal(B <> SPB, sparse([1,1;1,2;2,1;2,2],[%t;%t;%t;%t],[2,2]));
1045
1046assert_checkequal(SPB <> empty, %t);
1047assert_checkequal(SPB <> r, %t);
1048assert_checkequal(SPB <> c, %t);
1049assert_checkequal(SPB <> R, %t);
1050assert_checkequal(SPB <> C, %t);
1051assert_checkequal(SPB <> e, %t);
1052assert_checkequal(SPB <> ec, %t);
1053assert_checkequal(SPB <> SP, %t);
1054assert_checkequal(SPB <> SPC, %t);
1055assert_checkequal(SPB <> SP1, %t);
1056assert_checkequal(SPB <> SPC1, %t);
1057assert_checkequal(SPB <> i8, %t);
1058assert_checkequal(SPB <> I8, %t);
1059assert_checkequal(SPB <> ui8, %t);
1060assert_checkequal(SPB <> UI8, %t);
1061assert_checkequal(SPB <> i16, %t);
1062assert_checkequal(SPB <> I16, %t);
1063assert_checkequal(SPB <> ui16, %t);
1064assert_checkequal(SPB <> UI16, %t);
1065assert_checkequal(SPB <> i32, %t);
1066assert_checkequal(SPB <> I32, %t);
1067assert_checkequal(SPB <> ui32, %t);
1068assert_checkequal(SPB <> UI32, %t);
1069assert_checkequal(SPB <> str, %t);
1070assert_checkequal(SPB <> STR, %t);
1071assert_checkequal(SPB <> b, sparse([1,2;2,1],[%t;%t],[2,2]));
1072assert_checkequal(SPB <> B, sparse([1,1;1,2;2,1;2,2],[%t;%t;%t;%t],[2,2]));
1073assert_checkequal(SPB <> SPB, sparse([1,1],[%f],[2,2]));
1074
1075assert_checkequal(["a" "b"] <> ["a" "b" "c"],%t);
1076assert_checkequal(["a" "b"] <> ["a" ; "b"],%t);
1077assert_checkequal(["a" "b" "c"] <> ["a" "b"],%t);
1078assert_checkequal(["a" "b"; "a" "b"] <> ["a" "b"],%t);
1079
1080//struct
1081test_st=struct("double",1,"string","test","int8",int8(2),"struct",struct("valeur",0));
1082test_st2=struct("double",1,"string","test","int16",int8(2),"struct",1);
1083test_st4=struct("double",1,"string","test","int8",int8(4),"struct",struct("valeur",0));
1084test_st8=struct("double",8,"string","test","int8",int8(8),"struct",struct("valeur",0));
1085
1086assert_checkequal(test_st <> test_st, %f);
1087assert_checkequal(test_st <> test_st2, %t);
1088assert_checkequal([test_st4 test_st8] <> [test_st test_st], [%t,%t]);
1089assert_checkequal([test_st, test_st4;test_st4,test_st8] <> [test_st, test_st; test_st,test_st], [%f,%t;%t,%t]);
1090assert_checkequal(test_st <> [], %t);
1091
1092//polynom
1093res = horner(1/(1-%s),1/(1-%s));
1094
1095assert_checkequal(res <> (1-%s)/-%s, %f);
1096assert_checkequal(res <> (1-%s)/1, %t);
1097assert_checkequal(res <> 1/-%s, %t);
1098
1099// <> with a type==0 object (void or listdelete)
1100// --------------------------------------------
1101L = list(,2);
1102assert_checkfalse(L(1) <> L(1));
1103assert_checkfalse(null() <> null());
1104assert_checktrue(L(1) <> null());
1105assert_checktrue(null() <> L(1));
1106//
1107lss = syslin('c',[0,1;0,0],[1;1],[1,1]);
1108ptr = lufact(sparse(rand(5,5)));
1109x = 1:10; h5File = TMPDIR + "/x.sod"; save(h5File,"x"); h5 = h5open(h5File);
1110program = macr2tree(%0_o_0);
1111xml = xmlReadStr("<root><a rib=""bar""><b>Hello</b></a></root>");
1112L2 = list(1, [], %z, %f, sparse(5), sparse(%t), int8(2), "abc", sin, sind, ..
1113    list(3), list(), {1,%t}, {}, struct("a",3), 1/%z, 1:$, lss, ptr, ..
1114    h5, program, xml);
1115for object = L2
1116    assert_checktrue(object <> L(1));
1117    assert_checktrue(object <> null());
1118    assert_checktrue(L(1) <> object);
1119    assert_checktrue(null() <> object);
1120end
1121h5close(h5);
1122ludel(ptr);
1123xmlDelete(xml);
1124mdelete(h5File);
1125
1126//macro
1127deff("[x]=myplus(y,z)","x=y+z");
1128
1129deff("[x]=mymacro(y,z)",["a=3*y+1"; "x=a*z+y"]);
1130
1131assert_checkequal(myplus <> myplus,%f);
1132assert_checkequal(myplus <> mymacro,%t);
1133assert_checkequal(myplus <> [],%t);
1134assert_checkequal(myplus <> 2,%t);
1135
1136//function
1137assert_checkequal(acosd <> acosd, %f);
1138assert_checkequal(acosd <> [], %t);
1139assert_checkequal(acosd <> 2, %t);
1140
1141// libraries
1142assert_checktrue(iolib <> corelib);
1143