dot divide
[scilab.git] / scilab / modules / ast / tests / unit_tests / dotdivide.tst
1 // ============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2014 - Scilab Enterprises - Sylvain GENIN
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // ============================================================================
7
8 // <-- JVM NOT MANDATORY -->
9
10 s = %s;
11 empty = [];
12 r = 2;
13 R = [1,2;3,4];
14 R3(:,:,1) = R;
15 R3(:,:,2) = R';
16 c = 1 + 2*%i;
17 C = [1+2*%i,2+4*%i;3+6*%i,4+8*%i];
18 C3(:,:,1) = C;
19 C3(:,:,2) = C';
20 e = eye();
21 ec = (5+%i) * eye();
22 p = 1 + %s - %s**2;
23 pc = 1 + %s - %s**2 + ( 2 - 3 * %s + 4 * %s**2 ) * %i;
24 P = [2*p, -3*p;4*p,-5*p];
25 PC = [2*pc, -3*pc;4*pc,-5*pc];
26 SP = sparse([1,2;4,5;3,10],[1,2,3]);
27 SPC = sparse([1,2;4,5;3,10],[1,2,3]) * ( 1 + 4*%i);
28 SP1 = sparse([1,1],[10]);
29 SPC1 = sparse([1,1],[1]) * ( 2 + 6*%i);
30
31 i8 = int8(-8);
32 ui8 = uint8(8);
33 I8 = int8([-8 -16 ; -24 -32]);
34 UI8 = uint8([8 16 ; 24 32]);
35
36 I16 = int16([-16 -32 ; -48 -64]);
37 UI16 = uint16([16 32 ; 48 64]);
38 i16 = int16(-16);
39 ui16 = uint16(16);
40
41 i32 = int32(-32);
42 ui32 = uint32(32);
43 I32 = int32([-32 -64 ; -96 -128]);
44 UI32 = uint32([32 64 ; 96 128]);
45
46 assert_checkequal(empty .\empty, []);
47 assert_checkequal(empty .\r, []);
48 assert_checkequal(empty .\c, []);
49 assert_checkequal(empty .\R, []);
50 assert_checkequal(empty .\C, []);
51 assert_checkequal(empty .\e, []);
52 assert_checkequal(empty .\ec, []);
53 assert_checkequal(empty .\p, []);
54 assert_checkequal(empty .\pc, []);
55 assert_checkequal(empty .\P, []);
56 assert_checkequal(empty .\PC, []);
57 assert_checkequal(empty .\SP, []);
58 assert_checkequal(empty .\SPC, []);
59 assert_checkequal(empty .\SP1, []);
60 assert_checkequal(empty .\SPC1, []);
61
62 assert_checkequal(r .\empty, []);
63 assert_checkequal(r .\r,  1);
64 assert_checkequal(r .\c,  0.5+%i);
65 assert_checkequal(r .\R, [ 0.5, 1; 1.5, 2]);
66 assert_checkequal(r .\C, [ 0.5+%i, 1+%i* 2; 1.5+%i* 3, 2+%i* 4]);
67 assert_checkequal(r .\e, ( 0.5)*eye());
68 assert_checkequal(r .\ec, ( 2.5+%i* 0.5)*eye());
69 assert_checkequal(r .\p, 0.5+(0.5)*s+(- 0.5)*s^ 2);
70 assert_checkequal(r .\pc, 0.5+%i+(0.5-%i* 1.5)*s+(- 0.5+%i* 2)*s^ 2);
71 assert_checkequal(r .\P, [1+(1)*s+(- 1)*s^ 2,- 1.5+(- 1.5)*s+(1.5)*s^ 2;2+(2)*s+(- 2)*s^ 2,- 2.5+(- 2.5)*s+(2.5)*s^ 2]);
72 assert_checkequal(r .\PC, [1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,- 1.5-%i* 3+(- 1.5+%i* 4.5)*s+(1.5-%i* 6)*s^ 2;2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 2.5-%i* 5+(- 2.5+%i* 7.5)*s+(2.5-%i* 10)*s^ 2]);
73 assert_checkequal(r .\SP, sparse([ 1, 2; 3, 10; 4, 5],[ 0.5; 1.5; 1],[ 4, 10]));
74 assert_checkequal(r .\SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 0.5+%i* 2; 1.5+%i* 6; 1+%i* 4],[ 4, 10]));
75 assert_checkequal(r .\SP1, sparse([ 1, 1], 5,[ 1, 1]));
76 assert_checkequal(r .\SPC1, sparse([ 1, 1], 1+%i* 3,[ 1, 1]));
77 assert_checkequal(r .\i8, int8( - 4));
78 assert_checkequal(r .\I8, int8([ - 4, - 8; - 12, - 16]));
79 assert_checkequal(r .\ui8, uint8( 4));
80 assert_checkequal(r .\UI8, uint8([ 4, 8; 12, 16]));
81 assert_checkequal(r .\i16, int16( - 8));
82 assert_checkequal(r .\I16, int16([ - 8, - 16; - 24, - 32]));
83 assert_checkequal(r .\ui16, uint16( 8));
84 assert_checkequal(r .\UI16, uint16([ 8, 16; 24, 32]));
85 assert_checkequal(r .\i32, int32( - 16));
86 assert_checkequal(r .\I32, int32([ - 16, - 32; - 48, - 64]));
87 assert_checkequal(r .\ui32, uint32( 16));
88 assert_checkequal(r .\UI32, uint32([ 16, 32; 48, 64]));
89
90 assert_checkequal(c .\empty, []);
91 assert_checkequal(c .\r,  0.4-%i* 0.8);
92 assert_checkequal(c .\c,  1+%i*0);
93 assert_checkequal(c .\R, [ 0.2-%i* 0.4, 0.4-%i* 0.8; 0.6-%i* 1.2, 0.8-%i* 1.6]);
94 assert_checkequal(c .\C, [ 1, 2; 3, 4]+%i*0);
95 assert_checkequal(c .\e, ( 1+%i* 2)*eye());
96 assert_checkequal(c .\ec, ( 1.4-%i* 1.8)*eye());
97 assert_checkequal(c .\p, 0.2-%i* 0.08+(0.2-%i* 0.08)*s+(- 0.2+%i* 0.08)*s^ 2);
98 assert_checkequal(c .\pc, 1+(- 1-%i)*s+(1.4+%i* 1.2)*s^ 2);
99 assert_checkequal(c .\P, [0.4-%i* 0.16+(0.4-%i* 0.16)*s+(- 0.4+%i* 0.16)*s^ 2,- 0.6+%i* 0.24+(- 0.6+%i* 0.24)*s+(0.6-%i* 0.24)*s^ 2;0.8-%i* 0.32+(0.8-%i* 0.32)*s+(- 0.8+%i* 0.32)*s^ 2,- 1+%i* 0.4+(- 1+%i* 0.4)*s+(1-%i* 0.4)*s^ 2]);
100 assert_checkequal(c .\PC, [2+(- 2-%i* 2)*s+(2.8+%i* 2.4)*s^ 2,- 3+(3+%i* 3)*s+(- 4.2-%i* 3.6)*s^ 2;4+(- 4-%i* 4)*s+(5.6+%i* 4.8)*s^ 2,- 5+(5+%i* 5)*s+(- 7-%i* 6)*s^ 2]);
101 assert_checkequal(c .\SP, sparse([ 1, 2; 3, 10; 4, 5],[ 0.2-%i* 0.4; 0.6-%i* 1.2; 0.4-%i* 0.8],[ 4, 10]));
102 assert_checkequal(c .\SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 1.8+%i* 0.4; 5.4+%i* 1.2; 3.6+%i* 0.8],[ 4, 10]));
103 assert_checkequal(c .\SP1, sparse([ 1, 1], 2-%i* 4,[ 1, 1]));
104 assert_checkequal(c .\SPC1, sparse([ 1, 1], 2.8+%i* 0.4,[ 1, 1]));
105
106 assert_checkequal(R .\empty, []);
107 assert_checkequal(R .\r, [ 2, 1; (2/3), 0.5]);
108 assert_checkequal(R .\c,  0.2-%i* 0.4);
109 assert_checkequal(R .\R, [ 1, 1; 1, 1]);
110 assert_checkequal(R .\C, [ 1+%i* 2, 1+%i* 2; 1+%i* 2, 1+%i* 2]);
111 assert_checkequal(R .\p, [1+(1)*s+(- 1)*s^ 2,0.5+(0.5)*s+(- 0.5)*s^ 2;(1/3)+(1/3)*s+(- (1/3))*s^ 2,0.25+(0.25)*s+(- 0.25)*s^ 2]);
112 assert_checkequal(R .\pc, [1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,0.5+%i+(0.5-%i* 1.5)*s+(- 0.5+%i* 2)*s^ 2;(1/3)+%i* (2/3)+((1/3)-%i)*s+(- (1/3)+%i* (1+1/3))*s^ 2,0.25+%i* 0.5+(0.25-%i* 0.75)*s+(- 0.25+%i)*s^ 2]);
113 assert_checkequal(R .\P, [2+(2)*s+(- 2)*s^ 2,- 1.5+(- 1.5)*s+(1.5)*s^ 2;(1+1/3)+(1+1/3)*s+(- (1+1/3))*s^ 2,- 1.25+(- 1.25)*s+(1.25)*s^ 2]);
114 assert_checkequal(R .\PC, [2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 1.5-%i* 3+(- 1.5+%i* 4.5)*s+(1.5-%i* 6)*s^ 2;(1+1/3)+%i* (2+2/3)+((1+1/3)-%i* 4)*s+(- (1+1/3)+%i* (5+1/3))*s^ 2,- 1.25-%i* 2.5+(- 1.25+%i* 3.75)*s+(1.25-%i* 5)*s^ 2]);
115 assert_checkequal(R .\SPC1,  0.05-%i* 0.15);
116 assert_checkequal(R .\i8, int8([ - 8, - 4; - 2, - 2]));
117 assert_checkequal(R .\I8, int8([ - 8, - 8; - 8, - 8]));
118 assert_checkequal(R .\ui8, uint8([ 8, 4; 2, 2]));
119 assert_checkequal(R .\UI8, uint8([ 8, 8; 8, 8]));
120 assert_checkequal(R .\i16, int16([ - 16, - 8; - 5, - 4]));
121 assert_checkequal(R .\I16, int16([ - 16, - 16; - 16, - 16]));
122 assert_checkequal(R .\ui16, uint16([ 16, 8; 5, 4]));
123 assert_checkequal(R .\UI16, uint16([ 16, 16; 16, 16]));
124 assert_checkequal(R .\i32, int32([ - 32, - 16; - 10, - 8]));
125 assert_checkequal(R .\I32, int32([ - 32, - 32; - 32, - 32]));
126 assert_checkequal(R .\ui32, uint32([ 32, 16; 10, 8]));
127 assert_checkequal(R .\UI32, uint32([ 32, 32; 32, 32]));
128
129 assert_checkequal(C .\empty, []);
130 assert_checkequal(C .\r, [ 0.4-%i* 0.8, 0.2-%i* 0.4; 2/15-%i* 4/15, 0.1-%i* 0.2]);
131 assert_checkequal(C .\c, [ 1, 0.5; (1/3), 0.25]+%i*0);
132 assert_checkequal(C .\R, [ 0.2-%i* 0.4, 0.2-%i* 0.4; 0.2-%i* 0.4, 0.2-%i* 0.4]);
133 assert_checkequal(C .\C, [ 1, 1; 1, 1]+%i*0);
134 assert_checkequal(C .\p, [0.2-%i* 0.4+(0.2-%i* 0.4)*s+(- 0.2+%i* 0.4)*s^ 2,0.1-%i* 0.2+(0.1-%i* 0.2)*s+(- 0.1+%i* 0.2)*s^ 2;1/15-%i* 2/15+(1/15-%i* 2/15)*s+(- 1/15+%i* 2/15)*s^ 2,0.05-%i* 0.1+(0.05-%i* 0.1)*s+(- 0.05+%i* 0.1)*s^ 2]);
135 assert_checkequal(C .\pc, [1+(- 1-%i)*s+(1.4+%i* 1.2)*s^ 2,0.5+(- 0.5-%i* 0.5)*s+(0.7+%i* 0.6)*s^ 2;(1/3)+(- (1/3)-%i* (1/3))*s+(7/15+%i* 0.4)*s^ 2,0.25+(- 0.25-%i* 0.25)*s+(0.35+%i* 0.3)*s^ 2]);
136 assert_checkequal(C .\P, [0.4-%i* 0.8+(0.4-%i* 0.8)*s+(- 0.4+%i* 0.8)*s^ 2,- 0.3+%i* 0.6+(- 0.3+%i* 0.6)*s+(0.3-%i* 0.6)*s^ 2;4/15-%i* 8/15+(4/15-%i* 8/15)*s+(- 4/15+%i* 8/15)*s^ 2,- 0.25+%i* 0.5+(- 0.25+%i* 0.5)*s+(0.25-%i* 0.5)*s^ 2]);
137 assert_checkequal(C .\PC, [2+(- 2-%i* 2)*s+(2.8+%i* 2.4)*s^ 2,- 1.5+(1.5+%i* 1.5)*s+(- 2.1-%i* 1.8)*s^ 2;(1+1/3)+(- (1+1/3)-%i* (1+1/3))*s+(28/15+%i* 1.6)*s^ 2,- 1.25+(1.25+%i* 1.25)*s+(- 1.75-%i* 1.5)*s^ 2]);
138 assert_checkequal(C .\SPC1, [ 2.8+%i* 0.4, 1.4+%i* 0.2; 14/15+%i* 2/15, 0.7+%i* 0.1]);
139
140 assert_checkequal(e .\empty, []);
141 assert_checkequal(e .\r, ( 2)*eye());
142 assert_checkequal(e .\c, ( 1+%i* 2)*eye());
143 assert_checkequal(e .\e, ( 1)*eye());
144 assert_checkequal(e .\ec, ( 5+%i)*eye());
145 assert_checkequal(e .\SP1, ( 10)*eye());
146 assert_checkequal(e .\SPC1, ( 2+%i* 6)*eye());
147 assert_checkequal(e .\i8, int8(( - 8)*eye()));
148 assert_checkequal(e .\ui8, uint8(( 8)*eye()));
149 assert_checkequal(e .\i16, int16(( - 16)*eye()));
150 assert_checkequal(e .\ui16, uint16(( 16)*eye()));
151 assert_checkequal(e .\i32, int32(( - 32)*eye()));
152 assert_checkequal(e .\ui32, uint32(( 32)*eye()));
153
154 assert_checkequal(ec .\empty, []);
155 assert_checkequal(ec .\r, ( 10/26-%i* 1/13)*eye());
156 assert_checkequal(ec .\c, ( 7/26+%i* 9/26)*eye());
157 assert_checkequal(ec .\e, ( 5/26-%i* 1/26)*eye());
158 assert_checkequal(ec .\ec, ( 1+%i*0)*eye());
159
160 assert_checkequal(p .\empty, []);
161 test = p .\r;
162 assert_checkequal(test(2), 2);
163 assert_checkequal(test(3), 1+(1)*s+(- 1)*s^ 2);
164 test = p .\c;
165 assert_checkequal(test(2), 1+%i* 2);
166 assert_checkequal(test(3), 1+(1)*s+(- 1)*s^ 2);
167 test = p .\R;
168 assert_checkequal(test(2), [ 1, 2; 3, 4]);
169 assert_checkequal(test(3),[1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2;1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2]);
170 test = p .\C;
171 assert_checkequal(test(2), [ 1+%i* 2, 2+%i* 4; 3+%i* 6, 4+%i* 8]);
172 assert_checkequal(test(3),[1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2;1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2]);
173 test = p .\p;
174 assert_checkequal(test(2), 1+s*0);
175 assert_checkequal(test(3), 1+s*0);
176 test = p .\pc;
177 assert_checkequal(test(2), (1+%i*2) + (1-%i*3)*s + (-1+%i*4)*s^2  );
178 assert_checkequal(test(3), 1+s-s^2);
179 test = p .\P;
180 assert_checkequal(test(2), [ 1, 1; 1, 1]+s*0);
181 assert_checkequal(test(3),[0.5, - (1/3) ; 0.25 , -0.2]+s*0);
182 test = p .\PC;
183 assert_checkequal(test(2), [ (2+%i*4)+(2-%i*6)*s+(-2+%i*8)*s^2 , (-3-%i*6)+(-3+%i*9)*s+(3-%i*12)*s^2 ; (4+%i*8)+(4-%i*12)*s+(-4+%i*16)*s^2 , (-5-%i*10)+(-5+%i*15)*s+(5-%i*20)*s^2 ]);
184 assert_checkequal(test(3),[1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2;1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2]);
185
186 assert_checkequal(pc .\empty, []);
187 test = pc .\r;
188 assert_checkequal(test(2), 2);
189 assert_checkequal(test(3), 1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2);
190 test = pc .\c;
191 assert_checkequal(test(2), 1+%i* 2);
192 assert_checkequal(test(3), 1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2);
193 test = pc .\R;
194 assert_checkequal(test(2), [ 1, 2; 3, 4]);
195 assert_checkequal(test(3),[1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2;1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2]);
196 test = pc .\C;
197 assert_checkequal(test(2), [ 1+%i* 2, 2+%i* 4; 3+%i* 6, 4+%i* 8]);
198 assert_checkequal(test(3),[1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2;1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2]);
199
200 test = pc .\p;
201 assert_checkequal(test(2), 1+s-s^2);
202 assert_checkequal(test(3), 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
203 test = pc .\pc;
204 assert_checkequal(test(2), 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
205 assert_checkequal(test(3), 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
206 test = pc .\P;
207 assert_checkequal(test(2), [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
208 assert_checkequal(test(3),[1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
209 test = pc .\PC;
210 assert_checkequal(test(2), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
211 assert_checkequal(test(3), [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
212
213 assert_checkequal(P .\empty, []);
214 test = P .\r;
215 assert_checkequal(test(2), [ 2, 2; 2, 2]);
216 assert_checkequal(test(3), [2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
217 test = P .\c;
218 assert_checkequal(test(2), [ 1+%i* 2, 1+%i* 2; 1+%i* 2, 1+%i* 2]);
219 assert_checkequal(test(3), [2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
220 test = P .\R;
221 assert_checkequal(test(2), [ 1, 2; 3, 4]);
222 assert_checkequal(test(3),[2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
223 test = P .\C;
224 assert_checkequal(test(2), [ 1+%i* 2, 2+%i* 4; 3+%i* 6, 4+%i* 8]);
225 assert_checkequal(test(3),[2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
226 test = P .\p;
227 assert_checkequal(test(2), [1,1;1,1]+s*0);
228 assert_checkequal(test(3), [2,-3;4,-5]+s*0);
229 test = P .\pc;
230 assert_checkequal(test(2), [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
231 assert_checkequal(test(3), [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
232 test = P .\P;
233 assert_checkequal(test(2), [1,1;1,1]+s*0);
234 assert_checkequal(test(3),[1,1;1,1]+s*0);
235 test = P .\PC;
236 assert_checkequal(test(2), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
237 assert_checkequal(test(3),[2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
238
239 assert_checkequal(PC .\empty, []);
240 test = PC .\r;
241 assert_checkequal(test(2), [ 2, 2; 2, 2]);
242 assert_checkequal(test(3), [2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
243 test = PC .\c;
244 assert_checkequal(test(2), [ 1+%i* 2, 1+%i* 2; 1+%i* 2, 1+%i* 2]);
245 assert_checkequal(test(3), [2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
246 test = PC .\R;
247 assert_checkequal(test(2), [ 1, 2; 3, 4]);
248 assert_checkequal(test(3),[2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
249 test = PC .\C;
250 assert_checkequal(test(2), [ 1+%i* 2, 2+%i* 4; 3+%i* 6, 4+%i* 8]);
251 assert_checkequal(test(3),[2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
252 test = PC .\p;
253 assert_checkequal(test(2), [1+s-s^2,1+s-s^2;1+s-s^2,1+s-s^2]);
254 assert_checkequal(test(3), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
255 test = PC .\pc;
256 assert_checkequal(test(2), [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
257 assert_checkequal(test(3), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
258 test = PC .\P;
259 assert_checkequal(test(2), [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
260 assert_checkequal(test(3),[2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
261 test = PC .\PC;
262 assert_checkequal(test(2), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
263 assert_checkequal(test(3), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
264
265 assert_checkequal(SP .\empty, []);
266 assert_checkequal(SP .\r, sparse([ 1, 2; 3, 10; 4, 5],[ 2; (2/3); 1],[ 4, 10]));
267 assert_checkequal(SP .\c, sparse([ 1, 2; 3, 10; 4, 5],[ 1+%i* 2; (1/3)+%i* (2/3); 0.5+%i],[ 4, 10]));
268 assert_checkequal(SP .\SP, sparse([ 1, 2; 3, 10; 4, 5],[ 1; 1; 1],[ 4, 10]));
269 assert_checkequal(SP .\SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 1+%i* 4; 1+%i* 4; 1+%i* 4],[ 4, 10]));
270 assert_checkequal(SP .\SP1, sparse([ 1, 2; 3, 10; 4, 5],[ 10; (3+1/3); 5],[ 4, 10]));
271 assert_checkequal(SP .\SPC1, sparse([ 1, 2; 3, 10; 4, 5],[ 2+%i* 6; (2/3)+%i* 2; 1+%i* 3],[ 4, 10]));
272
273 assert_checkequal(SPC .\empty, []);
274 assert_checkequal(SPC .\r, sparse([ 1, 2; 3, 10; 4, 5],[ 2/17-%i* 8/17; 2/51-%i* 8/51; 1/17-%i* 4/17],[ 4, 10]));
275 assert_checkequal(SPC .\c, sparse([ 1, 2; 3, 10; 4, 5],[ 9/17-%i* 2/17; 3/17-%i* 2/51; 9/34-%i* 1/17],[ 4, 10]));
276 assert_checkequal(SPC .\SP, sparse([ 1, 2; 3, 10; 4, 5],[ 1/17-%i* 4/17; 1/17-%i* 4/17; 1/17-%i* 4/17],[ 4, 10]));
277 assert_checkequal(SPC .\SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 1; 1; 1],[ 4, 10]));
278 assert_checkequal(SPC .\SP1, sparse([ 1, 2; 3, 10; 4, 5],[ 10/17-%i* 40/17; 10/51-%i* 40/51; 10/34-%i* 20/17],[ 4, 10]));
279 assert_checkequal(SPC .\SPC1, sparse([ 1, 2; 3, 10; 4, 5],[ 26/17-%i* 2/17; 26/51-%i* 2/51; 13/17-%i* 1/17],[ 4, 10]));
280
281 assert_checkequal(SP1 .\empty, []);
282 assert_checkequal(SP1 .\r, sparse([ 1, 1], 0.2,[ 1, 1]));
283 assert_checkequal(SP1 .\c, sparse([ 1, 1], 0.1+%i* 0.2,[ 1, 1]));
284 assert_checkequal(SP1 .\R, [ 0.1, 0.2; 0.3, 0.4]);
285 assert_checkequal(SP1 .\C, [ 0.1+%i* 0.2, 0.2+%i* 0.4; 0.3+%i* 0.6, 0.4+%i* 0.8]);
286 assert_checkequal(SP1 .\SP, sparse([ 1, 2; 3, 10; 4, 5],[ 0.1; 0.3; 0.2],[ 4, 10]));
287 assert_checkequal(SP1 .\SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 0.1+%i* 0.4; 0.3+%i* 1.2; 0.2+%i* 0.8],[ 4, 10]));
288 assert_checkequal(SP1 .\SP1, sparse([ 1, 1], 1,[ 1, 1]));
289 assert_checkequal(SP1 .\SPC1, sparse([ 1, 1], 0.2+%i* 0.6,[ 1, 1]));
290
291 assert_checkequal(SPC1 .\empty, []);
292 assert_checkalmostequal(SPC1 .\r, sparse([ 1, 1], 0.1-%i* 0.3,[ 1, 1]));
293 assert_checkalmostequal(SPC1 .\c, sparse([ 1, 1], 0.35-%i* 0.05,[ 1, 1]));
294 assert_checkequal(SPC1 .\R, [ 0.05-%i* 0.15, 0.1-%i* 0.3; 0.15-%i* 0.45, 0.2-%i* 0.6]);
295 assert_checkequal(SPC1 .\C, [ 0.35-%i* 0.05, 0.7-%i* 0.1; 1.05-%i* 0.15, 1.4-%i* 0.2]);
296 assert_checkalmostequal(SPC1 .\SP, sparse([ 1, 2; 3, 10; 4, 5],[ 0.05-%i* 0.15; 0.15-%i* 0.45; 0.1-%i* 0.3],[ 4, 10]));
297 assert_checkalmostequal(SPC1 .\SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 0.65+%i* 0.05; 1.95+%i* 0.15; 1.3+%i* 0.1],[ 4, 10]));
298 assert_checkalmostequal(SPC1 .\SP1, sparse([ 1, 1], 0.5-%i* 1.5,[ 1, 1]));
299 assert_checkequal(SPC1 .\SPC1, sparse([ 1, 1], 1,[ 1, 1]));
300
301 assert_checkequal(i8 .\r, int8( 0));
302 assert_checkequal(i8 .\R, int8([ 0, 0; 0, 0]));
303 assert_checkequal(i8 .\i8, int8( 1));
304 assert_checkequal(i8 .\I8, int8([ 1, 2; 3, 4]));
305 assert_checkequal(i8 .\ui8, uint8( 0));
306 assert_checkequal(i8 .\UI8, uint8([ 0, 0; 0, 0]));
307 assert_checkequal(i8 .\i16, int16( 2));
308 assert_checkequal(i8 .\I16, int16([ 2, 4; 6, 8]));
309 assert_checkequal(i8 .\ui16, uint16( 0));
310 assert_checkequal(i8 .\UI16, uint16([ 0, 0; 0, 0]));
311 assert_checkequal(i8 .\i32, int32( 4));
312 assert_checkequal(i8 .\I32, int32([ 4, 8; 12, 16]));
313 assert_checkequal(i8 .\ui32, uint32( 0));
314 assert_checkequal(i8 .\UI32, uint32([ 0, 0; 0, 0]));
315
316 assert_checkequal(I8 .\r, int8([ 0, 0; 0, 0]));
317 assert_checkequal(I8 .\R, int8([ 0, 0; 0, 0]));
318 assert_checkequal(I8 .\i8, int8([ 1, 0; 0, 0]));
319 assert_checkequal(I8 .\I8, int8([ 1, 1; 1, 1]));
320 assert_checkequal(I8 .\ui8, uint8([ 0, 0; 0, 0]));
321 assert_checkequal(I8 .\UI8, uint8([ 0, 0; 0, 0]));
322 assert_checkequal(I8 .\i16, int16([ 2, 1; 0, 0]));
323 assert_checkequal(I8 .\I16, int16([ 2, 2; 2, 2]));
324 assert_checkequal(I8 .\ui16, uint16([ 0, 0; 0, 0]));
325 assert_checkequal(I8 .\UI16, uint16([ 0, 0; 0, 0]));
326 assert_checkequal(I8 .\i32, int32([ 4, 2; 1, 1]));
327 assert_checkequal(I8 .\I32, int32([ 4, 4; 4, 4]));
328 assert_checkequal(I8 .\ui32, uint32([ 0, 0; 0, 0]));
329 assert_checkequal(I8 .\UI32, uint32([ 0, 0; 0, 0]));
330
331 assert_checkequal(ui8 .\r, uint8( 0));
332 assert_checkequal(ui8 .\R, uint8([ 0, 0; 0, 0]));
333 assert_checkequal(ui8 .\i8, uint8( 31));
334 assert_checkequal(ui8 .\I8, uint8([ 31, 30; 29, 28]));
335 assert_checkequal(ui8 .\ui8, uint8( 1));
336 assert_checkequal(ui8 .\UI8, uint8([ 1, 2; 3, 4]));
337 assert_checkequal(ui8 .\i16, uint16( 8190));
338 assert_checkequal(ui8 .\I16, uint16([ 8190, 8188; 8186, 8184]));
339 assert_checkequal(ui8 .\ui16, uint16( 2));
340 assert_checkequal(ui8 .\UI16, uint16([ 2, 4; 6, 8]));
341 assert_checkequal(ui8 .\i32, uint32( 536870908));
342 assert_checkequal(ui8 .\I32, uint32([ 536870908, 536870904; 536870900, 536870896]));
343 assert_checkequal(ui8 .\ui32, uint32( 4));
344 assert_checkequal(ui8 .\UI32, uint32([ 4, 8; 12, 16]));
345
346 assert_checkequal(UI8 .\r, uint8([ 0, 0; 0, 0]));
347 assert_checkequal(UI8 .\R, uint8([ 0, 0; 0, 0]));
348 assert_checkequal(UI8 .\i8, uint8([ 31, 15; 10, 7]));
349 assert_checkequal(UI8 .\I8, uint8([ 31, 15; 9, 7]));
350 assert_checkequal(UI8 .\ui8, uint8([ 1, 0; 0, 0]));
351 assert_checkequal(UI8 .\UI8, uint8([ 1, 1; 1, 1]));
352 assert_checkequal(UI8 .\i16, uint16([ 8190, 4095; 2730, 2047]));
353 assert_checkequal(UI8 .\I16, uint16([ 8190, 4094; 2728, 2046]));
354 assert_checkequal(UI8 .\ui16, uint16([ 2, 1; 0, 0]));
355 assert_checkequal(UI8 .\UI16, uint16([ 2, 2; 2, 2]));
356 assert_checkequal(UI8 .\i32, uint32([ 536870908, 268435454; 178956969, 134217727]));
357 assert_checkequal(UI8 .\I32, uint32([ 536870908, 268435452; 178956966, 134217724]));
358 assert_checkequal(UI8 .\ui32, uint32([ 4, 2; 1, 1]));
359 assert_checkequal(UI8 .\UI32, uint32([ 4, 4; 4, 4]));
360
361 assert_checkequal(i16 .\r, int16( 0));
362 assert_checkequal(i16 .\R, int16([ 0, 0; 0, 0]));
363 assert_checkequal(i16 .\i8, int16( 0));
364 assert_checkequal(i16 .\I8, int16([ 0, 1; 1, 2]));
365 assert_checkequal(i16 .\ui8, uint16( 0));
366 assert_checkequal(i16 .\UI8, uint16([ 0, 0; 0, 0]));
367 assert_checkequal(i16 .\i16, int16( 1));
368 assert_checkequal(i16 .\I16, int16([ 1, 2; 3, 4]));
369 assert_checkequal(i16 .\ui16, uint16( 0));
370 assert_checkequal(i16 .\UI16, uint16([ 0, 0; 0, 0]));
371 assert_checkequal(i16 .\i32, int32( 2));
372 assert_checkequal(i16 .\I32, int32([ 2, 4; 6, 8]));
373 assert_checkequal(i16 .\ui32, uint32( 0));
374 assert_checkequal(i16 .\UI32, uint32([ 0, 0; 0, 0]));
375
376 assert_checkequal(I16 .\r, int16([ 0, 0; 0, 0]));
377 assert_checkequal(I16 .\R, int16([ 0, 0; 0, 0]));
378 assert_checkequal(I16 .\i8, int16([ 0, 0; 0, 0]));
379 assert_checkequal(I16 .\I8, int16([ 0, 0; 0, 0]));
380 assert_checkequal(I16 .\ui8, uint16([ 0, 0; 0, 0]));
381 assert_checkequal(I16 .\UI8, uint16([ 0, 0; 0, 0]));
382 assert_checkequal(I16 .\i16, int16([ 1, 0; 0, 0]));
383 assert_checkequal(I16 .\I16, int16([ 1, 1; 1, 1]));
384 assert_checkequal(I16 .\ui16, uint16([ 0, 0; 0, 0]));
385 assert_checkequal(I16 .\UI16, uint16([ 0, 0; 0, 0]));
386 assert_checkequal(I16 .\i32, int32([ 2, 1; 0, 0]));
387 assert_checkequal(I16 .\I32, int32([ 2, 2; 2, 2]));
388 assert_checkequal(I16 .\ui32, uint32([ 0, 0; 0, 0]));
389 assert_checkequal(I16 .\UI32, uint32([ 0, 0; 0, 0]));
390
391 assert_checkequal(ui16 .\r, uint16( 0));
392 assert_checkequal(ui16 .\R, uint16([ 0, 0; 0, 0]));
393 assert_checkequal(ui16 .\i8, uint16( 4095));
394 assert_checkequal(ui16 .\I8, uint16([ 4095, 4095; 4094, 4094]));
395 assert_checkequal(ui16 .\ui8, uint16( 0));
396 assert_checkequal(ui16 .\UI8, uint16([ 0, 1; 1, 2]));
397 assert_checkequal(ui16 .\i16, uint16( 4095));
398 assert_checkequal(ui16 .\I16, uint16([ 4095, 4094; 4093, 4092]));
399 assert_checkequal(ui16 .\ui16, uint16( 1));
400 assert_checkequal(ui16 .\UI16, uint16([ 1, 2; 3, 4]));
401 assert_checkequal(ui16 .\i32, uint32( 268435454));
402 assert_checkequal(ui16 .\I32, uint32([ 268435454, 268435452; 268435450, 268435448]));
403 assert_checkequal(ui16 .\ui32, uint32( 2));
404 assert_checkequal(ui16 .\UI32, uint32([ 2, 4; 6, 8]));
405
406 assert_checkequal(UI16 .\r, uint16([ 0, 0; 0, 0]));
407 assert_checkequal(UI16 .\R, uint16([ 0, 0; 0, 0]));
408 assert_checkequal(UI16 .\i8, uint16([ 4095, 2047; 1365, 1023]));
409 assert_checkequal(UI16 .\I8, uint16([ 4095, 2047; 1364, 1023]));
410 assert_checkequal(UI16 .\ui8, uint16([ 0, 0; 0, 0]));
411 assert_checkequal(UI16 .\UI8, uint16([ 0, 0; 0, 0]));
412 assert_checkequal(UI16 .\i16, uint16([ 4095, 2047; 1365, 1023]));
413 assert_checkequal(UI16 .\I16, uint16([ 4095, 2047; 1364, 1023]));
414 assert_checkequal(UI16 .\ui16, uint16([ 1, 0; 0, 0]));
415 assert_checkequal(UI16 .\UI16, uint16([ 1, 1; 1, 1]));
416 assert_checkequal(UI16 .\i32, uint32([ 268435454, 134217727; 89478484, 67108863]));
417 assert_checkequal(UI16 .\I32, uint32([ 268435454, 134217726; 89478483, 67108862]));
418 assert_checkequal(UI16 .\ui32, uint32([ 2, 1; 0, 0]));
419 assert_checkequal(UI16 .\UI32, uint32([ 2, 2; 2, 2]));
420
421 assert_checkequal(i32 .\r, int32( 0));
422 assert_checkequal(i32 .\R, int32([ 0, 0; 0, 0]));
423 assert_checkequal(i32 .\i8, int32( 0));
424 assert_checkequal(i32 .\I8, int32([ 0, 0; 0, 1]));
425 assert_checkequal(i32 .\ui8, uint32( 0));
426 assert_checkequal(i32 .\UI8, uint32([ 0, 0; 0, 0]));
427 assert_checkequal(i32 .\i16, int32( 0));
428 assert_checkequal(i32 .\I16, int32([ 0, 1; 1, 2]));
429 assert_checkequal(i32 .\ui16, uint32( 0));
430 assert_checkequal(i32 .\UI16, uint32([ 0, 0; 0, 0]));
431 assert_checkequal(i32 .\i32, int32( 1));
432 assert_checkequal(i32 .\I32, int32([ 1, 2; 3, 4]));
433 assert_checkequal(i32 .\ui32, uint32( 0));
434 assert_checkequal(i32 .\UI32, uint32([ 0, 0; 0, 0]));
435
436 assert_checkequal(I32 .\r, int32([ 0, 0; 0, 0]));
437 assert_checkequal(I32 .\R, int32([ 0, 0; 0, 0]));
438 assert_checkequal(I32 .\i8, int32([ 0, 0; 0, 0]));
439 assert_checkequal(I32 .\I8, int32([ 0, 0; 0, 0]));
440 assert_checkequal(I32 .\ui8, uint32([ 0, 0; 0, 0]));
441 assert_checkequal(I32 .\UI8, uint32([ 0, 0; 0, 0]));
442 assert_checkequal(I32 .\i16, int32([ 0, 0; 0, 0]));
443 assert_checkequal(I32 .\I16, int32([ 0, 0; 0, 0]));
444 assert_checkequal(I32 .\ui16, uint32([ 0, 0; 0, 0]));
445 assert_checkequal(I32 .\UI16, uint32([ 0, 0; 0, 0]));
446 assert_checkequal(I32 .\i32, int32([ 1, 0; 0, 0]));
447 assert_checkequal(I32 .\I32, int32([ 1, 1; 1, 1]));
448 assert_checkequal(I32 .\ui32, uint32([ 0, 0; 0, 0]));
449 assert_checkequal(I32 .\UI32, uint32([ 0, 0; 0, 0]));
450
451 assert_checkequal(ui32 .\r, uint32( 0));
452 assert_checkequal(ui32 .\R, uint32([ 0, 0; 0, 0]));
453 assert_checkequal(ui32 .\i8, uint32( 134217727));
454 assert_checkequal(ui32 .\I8, uint32([ 134217727, 134217727; 134217727, 134217727]));
455 assert_checkequal(ui32 .\ui8, uint32( 0));
456 assert_checkequal(ui32 .\UI8, uint32([ 0, 0; 0, 1]));
457 assert_checkequal(ui32 .\i16, uint32( 134217727));
458 assert_checkequal(ui32 .\I16, uint32([ 134217727, 134217727; 134217726, 134217726]));
459 assert_checkequal(ui32 .\ui16, uint32( 0));
460 assert_checkequal(ui32 .\UI16, uint32([ 0, 1; 1, 2]));
461 assert_checkequal(ui32 .\i32, uint32( 134217727));
462 assert_checkequal(ui32 .\I32, uint32([ 134217727, 134217726; 134217725, 134217724]));
463 assert_checkequal(ui32 .\ui32, uint32( 1));
464 assert_checkequal(ui32 .\UI32, uint32([ 1, 2; 3, 4]));
465
466 assert_checkequal(UI32 .\r, uint32([ 0, 0; 0, 0]));
467 assert_checkequal(UI32 .\R, uint32([ 0, 0; 0, 0]));
468 assert_checkequal(UI32 .\i8, uint32([ 134217727, 67108863; 44739242, 33554431]));
469 assert_checkequal(UI32 .\I8, uint32([ 134217727, 67108863; 44739242, 33554431]));
470 assert_checkequal(UI32 .\ui8, uint32([ 0, 0; 0, 0]));
471 assert_checkequal(UI32 .\UI8, uint32([ 0, 0; 0, 0]));
472 assert_checkequal(UI32 .\i16, uint32([ 134217727, 67108863; 44739242, 33554431]));
473 assert_checkequal(UI32 .\I16, uint32([ 134217727, 67108863; 44739242, 33554431]));
474 assert_checkequal(UI32 .\ui16, uint32([ 0, 0; 0, 0]));
475 assert_checkequal(UI32 .\UI16, uint32([ 0, 0; 0, 0]));
476 assert_checkequal(UI32 .\i32, uint32([ 134217727, 67108863; 44739242, 33554431]));
477 assert_checkequal(UI32 .\I32, uint32([ 134217727, 67108863; 44739241, 33554431]));
478 assert_checkequal(UI32 .\ui32, uint32([ 1, 0; 0, 0]));
479 assert_checkequal(UI32 .\UI32, uint32([ 1, 1; 1, 1]));
480
481 assert_checkequal(empty ./ empty, []);
482 assert_checkequal(empty ./ r, []);
483 assert_checkequal(empty ./ c, []);
484 assert_checkequal(empty ./ R, []);
485 assert_checkequal(empty ./ C, []);
486 assert_checkequal(empty ./ e, []);
487 assert_checkequal(empty ./ ec, []);
488 assert_checkequal(empty ./ p, []);
489 assert_checkequal(empty ./ pc, []);
490 assert_checkequal(empty ./ P, []);
491 assert_checkequal(empty ./ PC, []);
492 assert_checkequal(empty ./ SP, []);
493 assert_checkequal(empty ./ SPC, []);
494 assert_checkequal(empty ./ SP1, []);
495 assert_checkequal(empty ./ SPC1, []);
496
497 assert_checkequal(r ./ empty, []);
498 assert_checkequal(r ./ r,  1);
499 assert_checkequal(r ./ c,  0.4-%i* 0.8);
500 assert_checkequal(r ./ R, [ 2, 1; (2/3), 0.5]);
501 assert_checkequal(r ./ C, [ 0.4-%i* 0.8, 0.2-%i* 0.4; 2/15-%i* 4/15, 0.1-%i* 0.2]);
502 assert_checkequal(r ./ e, ( 2)*eye());
503 assert_checkalmostequal(r ./ ec, ( 1/2.6-%i* 1/13)*eye());
504
505 test = r ./ p;
506 assert_checkequal(test(2), 2+0*%s);
507 assert_checkequal(test(3), 1+(1)*s+(- 1)*s^ 2);
508 test = r ./ pc;
509 assert_checkequal(test(2), 2+0*%s);
510 assert_checkequal(test(3), 1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2);
511 test = r ./ P;
512 assert_checkequal(test(2), [2,2;2,2]+0*%s);
513 assert_checkequal(test(3),[2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
514 test = r ./ PC;
515 assert_checkequal(test(2), [2,2;2,2]+0*%s);
516 assert_checkequal(test(3),[2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
517 assert_checkequal(r ./ SP, sparse([ 1, 2; 3, 10; 4, 5],[ 2; (2/3); 1],[ 4, 10]));
518 assert_checkequal(r ./ SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 2/17-%i* 8/17; 2/51-%i* 8/51; 1/17-%i* 4/17],[ 4, 10]));
519 assert_checkequal(r ./ SP1, sparse([ 1, 1], 0.2,[ 1, 1]));
520 assert_checkalmostequal(r ./ SPC1, sparse([ 1, 1], 0.1-%i* 0.3,[ 1, 1]));
521 assert_checkequal(r ./ i8, int8( 0));
522 assert_checkequal(r ./ I8, int8([ 0, 0; 0, 0]));
523 assert_checkequal(r ./ ui8, uint8( 0));
524 assert_checkequal(r ./ UI8, uint8([ 0, 0; 0, 0]));
525 assert_checkequal(r ./ i16, int16( 0));
526 assert_checkequal(r ./ I16, int16([ 0, 0; 0, 0]));
527 assert_checkequal(r ./ ui16, uint16( 0));
528 assert_checkequal(r ./ UI16, uint16([ 0, 0; 0, 0]));
529 assert_checkequal(r ./ i32, int32( 0));
530 assert_checkequal(r ./ I32, int32([ 0, 0; 0, 0]));
531 assert_checkequal(r ./ ui32, uint32( 0));
532 assert_checkequal(r ./ UI32, uint32([ 0, 0; 0, 0]));
533
534 assert_checkequal(c ./ empty, []);
535 assert_checkequal(c ./ r,  0.5+%i);
536 assert_checkequal(c ./ c,  1+%i*0);
537 assert_checkequal(c ./ R,  0.2-%i* 0.4);
538 assert_checkequal(c ./ C, [ 1, 0.5; (1/3), 0.25]+%i*0);
539 assert_checkequal(c ./ e, ( 1+%i* 2)*eye());
540 assert_checkequal(c ./ ec, ( 7/26+%i* 9/26)*eye());
541 test = c ./ p;
542 assert_checkequal(test(2), 1+%i*2+0*%s);
543 assert_checkequal(test(3), 1+(1)*s+(- 1)*s^ 2);
544 test = c ./ pc;
545 assert_checkequal(test(2), 1+%i*2+0*%s);
546 assert_checkequal(test(3), 1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2);
547 test = c ./ P;
548 assert_checkequal(test(2), [1,1;1,1]*(1+%i*2)+0*%s);
549 assert_checkequal(test(3),[2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
550 test = c ./ PC;
551 assert_checkequal(test(2), [1,1;1,1]*(1+%i*2)+0*%s);
552 assert_checkequal(test(3),[2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
553 assert_checkequal(c ./ SP, sparse([ 1, 2; 3, 10; 4, 5],[ 1+%i* 2; (1/3)+%i* (2/3); 0.5+%i],[ 4, 10]));
554 assert_checkequal(c ./ SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 9/17-%i* 2/17; 3/17-%i* 2/51; 9/34-%i* 1/17],[ 4, 10]));
555 assert_checkequal(c ./ SP1, sparse([ 1, 1], 0.1+%i* 0.2,[ 1, 1]));
556 assert_checkalmostequal(c ./ SPC1, sparse([ 1, 1], 0.35-%i* 0.05,[ 1, 1]));
557
558 assert_checkequal(R ./ empty, []);
559 assert_checkequal(R ./ r, [ 0.5, 1; 1.5, 2]);
560 assert_checkequal(R ./ c, [ 0.2-%i* 0.4, 0.4-%i* 0.8; 0.6-%i* 1.2, 0.8-%i* 1.60]);
561 assert_checkequal(R ./ R, [ 1, 1; 1, 1]);
562 assert_checkequal(R ./ C, [ 0.2-%i* 0.4, 0.2-%i* 0.4; 0.2-%i* 0.4, 0.2-%i* 0.4]);
563 test = R ./ p;
564 assert_checkequal(test(2), [1,2;3,4]+0*%s);
565 assert_checkequal(test(3), [1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2;1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2]);
566 test = R ./ pc;
567 assert_checkequal(test(2), [1,2;3,4]+0*%s);
568 assert_checkequal(test(3), [1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2;1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2]);
569 test = R ./ P;
570 assert_checkequal(test(2), [1,2;3,4]+0*%s);
571 assert_checkequal(test(3),[2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
572 test = R ./ PC;
573 assert_checkequal(test(2), [1,2;3,4]+0*%s);
574 assert_checkequal(test(3),[2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
575 assert_checkequal(R ./ SP1, [ 0.1 ,0.2;0.3,0.4]);
576 assert_checkequal(R ./ SPC1, [ 0.05-%i* 0.15, 0.1-%i* 0.3; 0.15-%i* 0.45, 0.2-%i* 0.6]);
577 assert_checkequal(R ./ i8, int8([ 0, 0; 0, 0]));
578 assert_checkequal(R ./ I8, int8([ 0, 0; 0, 0]));
579 assert_checkequal(R ./ ui8, uint8([ 0, 0; 0, 0]));
580 assert_checkequal(R ./ UI8, uint8([ 0, 0; 0, 0]));
581 assert_checkequal(R ./ i16, int16([ 0, 0; 0, 0]));
582 assert_checkequal(R ./ I16, int16([ 0, 0; 0, 0]));
583 assert_checkequal(R ./ ui16, uint16([ 0, 0; 0, 0]));
584 assert_checkequal(R ./ UI16, uint16([ 0, 0; 0, 0]));
585 assert_checkequal(R ./ i32, int32([ 0, 0; 0, 0]));
586 assert_checkequal(R ./ I32, int32([ 0, 0; 0, 0]));
587 assert_checkequal(R ./ ui32, uint32([ 0, 0; 0, 0]));
588 assert_checkequal(R ./ UI32, uint32([ 0, 0; 0, 0]));
589
590 assert_checkequal(C ./ empty, []);
591 assert_checkequal(C ./ r, [ 0.5+%i, 1+%i* 2; 1.5+%i* 3, 2+%i* 4]);
592 assert_checkequal(C ./ c, [ 1, 2; 3, 4]+%i*0);
593 assert_checkequal(C ./ R, [ 1+%i* 2, 1+%i* 2; 1+%i* 2, 1+%i* 2]);
594 assert_checkequal(C ./ C, [ 1, 1; 1, 1]+%i*0);
595 test = C ./ p;
596 assert_checkequal(test(2), [1+%i* 2,2+%i* 4;3+%i* 6,4+%i* 8]+0*%s);
597 assert_checkequal(test(3), [1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2;1+(1)*s+(- 1)*s^ 2,1+(1)*s+(- 1)*s^ 2]);
598 test = C ./ pc;
599 assert_checkequal(test(2), [1+%i* 2,2+%i* 4;3+%i* 6,4+%i* 8]+0*%s);
600 assert_checkequal(test(3), [1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2;1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2]);
601 test = C ./ P;
602 assert_checkequal(test(2), [1+%i* 2,2+%i* 4;3+%i* 6,4+%i* 8]+0*%s);
603 assert_checkequal(test(3),[2+(2)*s+(- 2)*s^ 2,- 3+(- 3)*s+(3)*s^ 2;4+(4)*s+(- 4)*s^ 2,- 5+(- 5)*s+(5)*s^ 2]);
604 test = C ./ PC;
605 assert_checkequal(test(2), [1+%i* 2,2+%i* 4;3+%i* 6,4+%i* 8]+0*%s);
606 assert_checkequal(test(3),[2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 3-%i* 6+(- 3+%i* 9)*s+(3-%i* 12)*s^ 2;4+%i* 8+(4-%i* 12)*s+(- 4+%i* 16)*s^ 2,- 5-%i* 10+(- 5+%i* 15)*s+(5-%i* 20)*s^ 2]);
607 assert_checkequal(C ./ SP1, [ 0.1+0.2*%i,0.2+0.4*%i;0.3+0.6*%i,0.4+0.8*%i]);
608 assert_checkequal(C ./ SPC1, [ 0.35-%i* 0.05, 0.7-%i* 0.1; 1.05-%i* 0.15, 1.4-%i* 0.2]);
609
610 assert_checkequal(e ./ empty, []);
611 assert_checkequal(e ./ r, ( 0.5)*eye());
612 assert_checkequal(e ./ c, ( 1+%i* 2)*eye());
613 assert_checkequal(e ./ e, ( 1)*eye());
614 assert_checkequal(e ./ ec, ( 5/26-%i* 1/26)*eye());
615 assert_checkequal(e ./ SP1, ( 0.1)*eye());
616 assert_checkequal(e ./ SPC1, ( 2+%i* 6)*eye());
617 assert_checkequal(e ./ i8, int8(( 0)*eye()));
618 assert_checkequal(e ./ ui8, uint8(( 0)*eye()));
619 assert_checkequal(e ./ i16, int16(( 0)*eye()));
620 assert_checkequal(e ./ ui16, uint16(( 0)*eye()));
621 assert_checkequal(e ./ i32, int32(( 0)*eye()));
622 assert_checkequal(e ./ ui32, uint32(( 0)*eye()));
623
624 assert_checkequal(ec ./ empty, []);
625 assert_checkequal(ec ./ r, ( 2.5+%i* 0.5)*eye());
626 assert_checkequal(ec ./ c, ( 1.4-%i* 1.8)*eye());
627 assert_checkequal(ec ./ e, ( 5+%i)*eye());
628 assert_checkequal(ec ./ ec, ( 1+%i*0)*eye());
629
630 assert_checkequal(p ./ empty, []);
631 assert_checkequal(p ./ r, 0.5+(0.5)*s+(- 0.5)*s^ 2);
632 assert_checkequal(p ./ c, 0.2-%i* 0.08+(0.2-%i* 0.08)*s+(- 0.2+%i* 0.08)*s^ 2);
633 assert_checkequal(p ./ R, [1+(1)*s+(- 1)*s^ 2,0.5+(0.5)*s+(- 0.5)*s^ 2;(1/3)+((1/3))*s+(- (1/3))*s^ 2,0.25+(0.25)*s+(- 0.25)*s^ 2]);
634 assert_checkequal(p ./ C, [0.2-%i* 0.4+(0.2-%i* 0.4)*s+(- 0.2+%i* 0.4)*s^ 2,0.1-%i* 0.2+(0.1-%i* 0.2)*s+(- 0.1+%i* 0.2)*s^ 2;1/15-%i* 2/15+(1/15-%i* 2/15)*s+(- 1/15+%i* 2/15)*s^ 2,0.05-%i* 0.1+(0.05-%i* 0.1)*s+(- 0.05+%i* 0.1)*s^ 2]);
635 test = p ./ p;
636 assert_checkequal(test(2), 1+s*0);
637 assert_checkequal(test(3), 1+s*0);
638 test = p ./ pc;
639 assert_checkequal(test(2), 1+s-s^2);
640 assert_checkequal(test(3), 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
641 test = p ./ P;
642 assert_checkequal(test(2), [0.5,-(1/3);0.25,-0.2]+s*0);
643 assert_checkequal(test(3), [1,1;1,1]+s*0);
644 test = p ./ PC;
645 assert_checkequal(test(2), [1+s-s^2,1+s-s^2;1+s-s^2,1+s-s^2]);
646 assert_checkequal(test(3), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
647
648 assert_checkequal(pc ./ empty, []);
649 assert_checkequal(pc ./ r, 0.5+%i+(0.5-%i* 1.5)*s+(- 0.5+%i* 2)*s^ 2);
650 assert_checkequal(pc ./ c, 1+(- 1-%i)*s+(1.4+%i* 1.2)*s^ 2);
651 assert_checkequal(pc ./ R, [1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,0.5+%i+(0.5-%i* 1.5)*s+(- 0.5+%i* 2)*s^ 2;(1/3)+%i* (2/3)+((1/3)-%i)*s+(- (1/3)+%i* (1+1/3))*s^ 2,0.25+%i* 0.5+(0.25-%i* 0.75)*s+(- 0.25+%i)*s^ 2]);
652 assert_checkequal(pc ./ C, [1+(- 1-%i)*s+(1.4+%i* 1.2)*s^ 2,0.5+(- 0.5-%i* 0.5)*s+(0.7+%i* 0.6)*s^ 2;(1/3)+(- (1/3)-%i* (1/3))*s+(7/15+%i* 0.4)*s^ 2,0.25+(- 0.25-%i* 0.25)*s+(0.35+%i* 0.3)*s^ 2]);
653 test = pc ./ p;
654 assert_checkequal(test(2), 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
655 assert_checkequal(test(3), 1+s-s^2);
656 test = pc ./ pc;
657 assert_checkequal(test(2), 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
658 assert_checkequal(test(3), 1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2);
659 test = pc ./ P;
660 assert_checkequal(test(2), [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
661 assert_checkequal(test(3), [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
662 test = pc ./ PC;
663 assert_checkequal(test(2), [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
664 assert_checkequal(test(3), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
665
666 assert_checkequal(P ./ empty, []);
667 assert_checkequal(P ./ r, [1+(1)*s+(- 1)*s^ 2,- 1.5+(- 1.5)*s+(1.5)*s^ 2;2+(2)*s+(- 2)*s^ 2,- 2.5+(- 2.5)*s+(2.5)*s^ 2]);
668 assert_checkequal(P ./ c, [0.4-%i* 0.16+(0.4-%i* 0.16)*s+(- 0.4+%i* 0.16)*s^ 2,- 0.6+%i* 0.24+(- 0.6+%i* 0.24)*s+(0.6-%i* 0.24)*s^ 2;0.8-%i* 0.32+(0.8-%i* 0.32)*s+(- 0.8+%i* 0.32)*s^ 2,- 1+%i* 0.4+(- 1+%i* 0.4)*s+(1-%i* 0.4)*s^ 2]);
669 assert_checkequal(P ./ R, [2+(2)*s+(- 2)*s^ 2,- 1.5+(- 1.5)*s+(1.5)*s^ 2;(1+1/3)+((1+1/3))*s+(- (1+1/3))*s^ 2,- 1.25+(- 1.25)*s+(1.25)*s^ 2]);
670 assert_checkequal(P ./ C, [0.4-%i* 0.8+(0.4-%i* 0.8)*s+(- 0.4+%i* 0.8)*s^ 2,- 0.3+%i* 0.6+(- 0.3+%i* 0.6)*s+(0.3-%i* 0.6)*s^ 2;4/15-%i* 8/15+(4/15-%i* 8/15)*s+(- 4/15+%i* 8/15)*s^ 2,- 0.25+%i* 0.5+(- 0.25+%i* 0.5)*s+(0.25-%i* 0.5)*s^ 2]);
671 test = P ./ p;
672 assert_checkequal(test(2), [2,-3;4,-5]+s*0);
673 assert_checkequal(test(3), [1,1;1,1]+s*0);
674 test = P ./ pc;
675 assert_checkequal(test(2), [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
676 assert_checkequal(test(3), [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
677 test = P ./ P;
678 assert_checkequal(test(2), [1,1;1,1]+s*0);
679 assert_checkequal(test(3), [1,1;1,1]+%s*0);
680 test = P ./ PC;
681 assert_checkequal(test(2), [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
682 assert_checkequal(test(3), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
683
684 assert_checkequal(PC ./ empty, []);
685 assert_checkequal(PC ./ r, [1+%i* 2+(1-%i* 3)*s+(- 1+%i* 4)*s^ 2,- 1.5-%i* 3+(- 1.5+%i* 4.5)*s+(1.5-%i* 6)*s^ 2;2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 2.5-%i* 5+(- 2.5+%i* 7.5)*s+(2.5-%i* 10)*s^ 2]);
686 assert_checkequal(PC ./ c, [2+(- 2-%i* 2)*s+(2.8+%i* 2.4)*s^ 2,- 3+(3+%i* 3)*s+(- 4.2-%i* 3.6)*s^ 2;4+(- 4-%i* 4)*s+(5.6+%i* 4.8)*s^ 2,- 5+(5+%i* 5)*s+(- 7-%i* 6)*s^ 2]);
687 assert_checkequal(PC ./ R, [2+%i* 4+(2-%i* 6)*s+(- 2+%i* 8)*s^ 2,- 1.5-%i* 3+(- 1.5+%i* 4.5)*s+(1.5-%i* 6)*s^ 2;(1+1/3)+%i* 8/3+((1+1/3)-%i* 4)*s+(- (1+1/3)+%i* 16/3)*s^ 2,- 1.25-%i* 2.5+(- 1.25+%i* 3.75)*s+(1.25-%i* 5)*s^ 2]);
688 assert_checkequal(PC ./ C, [2+(- 2-%i* 2)*s+(2.8+%i* 2.4)*s^ 2,- 1.5+(1.5+%i* 1.5)*s+(- 2.1-%i* 1.8)*s^ 2;(1+1/3)+(- (1+1/3)-%i* (1+1/3))*s+(28/15+%i* 1.6)*s^ 2,- 1.25+(1.25+%i* 1.25)*s+(- 1.75-%i* 1.5)*s^ 2]);
689 test = PC ./ p;
690 assert_checkequal(test(2), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
691 assert_checkequal(test(3), [1+s-s^2,1+s-s^2;1+s-s^2,1+s-s^2]);
692 test = PC ./ pc;
693 assert_checkequal(test(2), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
694 assert_checkequal(test(3), [1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2;1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2,1+%i*2+(1-%i*3)*s+(-1+%i*4)*s^2]);
695 test = PC ./ P;
696 assert_checkequal(test(2), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
697 assert_checkequal(test(3), [2+2*s-2*s^2,-3-3*s+3*s^2;4+4*s-4*s^2,-5-5*s+5*s^2]);
698 test = PC ./ PC;
699 assert_checkequal(test(2), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
700 assert_checkequal(test(3), [2+%i*4+(2-%i*6)*s+(-2+%i*8)*s^2,-3-%i*6+(-3+%i*9)*s+(3-%i*12)*s^2;4+%i*8+(4-%i*12)*s+(-4+%i*16)*s^2,-5-%i*10+(-5+%i*15)*s+(5-%i*20)*s^2]);
701
702 assert_checkequal(SP ./ empty, []);
703 assert_checkequal(SP ./ r, sparse([ 1, 2; 3, 10; 4, 5],[ 0.5; 1.5; 1],[ 4, 10]));
704 assert_checkequal(SP ./ c, sparse([ 1, 2; 3, 10; 4, 5],[ 0.2-%i* 0.4; 0.6-%i* 1.2; 0.4-%i* 0.8],[ 4, 10]));
705 assert_checkequal(SP ./ SP, sparse([ 1, 2; 3, 10; 4, 5],[ 1; 1; 1],[ 4, 10]));
706 assert_checkequal(SP ./ SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 1/17-%i* 4/17; 1/17-%i* 4/17; 1/17-%i* 4/17],[ 4, 10]));
707 assert_checkequal(SP ./ SP1, sparse([ 1, 2; 3, 10; 4, 5],[ 0.1; 0.3; 0.2],[ 4, 10]));
708 assert_checkalmostequal(SP ./ SPC1, sparse([ 1, 2; 3, 10; 4, 5],[ 0.05-%i* 0.15; 0.15-%i* 0.45; 0.1-%i* 0.3],[ 4, 10]));
709
710 assert_checkequal(SPC ./ empty, []);
711 assert_checkequal(SPC ./ r, sparse([ 1, 2; 3, 10; 4, 5],[ 0.5+%i* 2; 1.5+%i* 6; 1+%i* 4],[ 4, 10]));
712 assert_checkequal(SPC ./ c, sparse([ 1, 2; 3, 10; 4, 5],[ 1.8+%i* 0.4; 5.4+%i* 1.2; 3.6+%i* 0.8],[ 4, 10]));
713 assert_checkequal(SPC ./ SP, sparse([ 1, 2; 3, 10; 4, 5],[ 1+%i* 4; 1+%i* 4; 1+%i* 4],[ 4, 10]));
714 assert_checkequal(SPC ./ SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 1; 1; 1],[ 4, 10]));
715 assert_checkequal(SPC ./ SP1, sparse([ 1, 2; 3, 10; 4, 5],[ 0.1+%i* 0.4; 0.3+%i* 1.2; 0.2+%i* 0.8],[ 4, 10]));
716 assert_checkalmostequal(SPC ./ SPC1, sparse([ 1, 2; 3, 10; 4, 5],[ 0.65+%i* 0.05; 1.95+%i* 0.15; 1.3+%i* 0.1],[ 4, 10]));
717
718 assert_checkequal(SP1 ./ empty, []);
719 assert_checkequal(SP1 ./ r, sparse([ 1, 1], 5,[ 1, 1]));
720 assert_checkequal(SP1 ./ c, sparse([ 1, 1], 2-%i* 4,[ 1, 1]));
721 assert_checkequal(SP1 ./ R, [ 10, 5; (3+1/3), 2.5]);
722 assert_checkequal(SP1 ./ C, [ 2-%i* 4, 1-%i* 2; (2/3)-%i* (1+1/3), 0.5-%i]);
723 assert_checkequal(SP1 ./ SP, sparse([ 1, 2; 3, 10; 4, 5],[ 10; (3+1/3); 5],[ 4, 10]));
724 assert_checkequal(SP1 ./ SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 10/17-%i* 40/17; 10/51-%i* 40/51; 10/34-%i* 20/17],[ 4, 10]));
725 assert_checkequal(SP1 ./ SP1, sparse([ 1, 1], 1,[ 1, 1]));
726 assert_checkalmostequal(SP1 ./ SPC1, sparse([ 1, 1], 0.5-%i* 1.5,[ 1, 1]));
727
728 assert_checkequal(SPC1 ./ empty, []);
729 assert_checkequal(SPC1 ./ r, sparse([ 1, 1], 1+%i* 3,[ 1, 1]));
730 assert_checkequal(SPC1 ./ c, sparse([ 1, 1], 2.8+%i* 0.4,[ 1, 1]));
731 assert_checkequal(SPC1 ./ R,  0.05-%i* 0.15);
732 assert_checkequal(SPC1 ./ C, [ 2.8+%i* 0.4, 1.4+%i* 0.2; 14/15+%i* 2/15, 0.7+%i* 0.1]);
733 assert_checkequal(SPC1 ./ SP, sparse([ 1, 2; 3, 10; 4, 5],[ 2+%i* 6; (2/3)+%i* 2; 1+%i* 3],[ 4, 10]));
734 assert_checkequal(SPC1 ./ SPC, sparse([ 1, 2; 3, 10; 4, 5],[ 26/17-%i* 2/17; 26/51-%i* 2/51; 13/17-%i* 1/17],[ 4, 10]));
735 assert_checkequal(SPC1 ./ SP1, sparse([ 1, 1], 0.2+%i* 0.6,[ 1, 1]));
736 assert_checkequal(SPC1 ./ SPC1, sparse([ 1, 1], 1,[ 1, 1]));
737
738 assert_checkequal(i8 ./ r, int8( - 4));
739 assert_checkequal(i8 ./ R, int8([ - 8, - 4; - 2, - 2]));
740 assert_checkequal(i8 ./ i8, int8( 1));
741 assert_checkequal(i8 ./ I8, int8([ 1, 0; 0, 0]));
742 assert_checkequal(i8 ./ ui8, uint8( 31));
743 assert_checkequal(i8 ./ UI8, uint8([ 31, 15; 10, 7]));
744 assert_checkequal(i8 ./ i16, int16( 0));
745 assert_checkequal(i8 ./ I16, int16([ 0, 0; 0, 0]));
746 assert_checkequal(i8 ./ ui16, uint16( 4095));
747 assert_checkequal(i8 ./ UI16, uint16([ 4095, 2047; 1365, 1023]));
748 assert_checkequal(i8 ./ i32, int32( 0));
749 assert_checkequal(i8 ./ I32, int32([ 0, 0; 0, 0]));
750 assert_checkequal(i8 ./ ui32, uint32( 134217727));
751 assert_checkequal(i8 ./ UI32, uint32([ 134217727, 67108863; 44739242, 33554431]));
752
753 assert_checkequal(I8 ./ r, int8([ - 4, - 8; - 12, - 16]));
754 assert_checkequal(I8 ./ R, int8([ - 8, - 8; - 8, - 8]));
755 assert_checkequal(I8 ./ i8, int8([ 1, 2; 3, 4]));
756 assert_checkequal(I8 ./ I8, int8([ 1, 1; 1, 1]));
757 assert_checkequal(I8 ./ ui8, uint8([ 31, 30; 29, 28]));
758 assert_checkequal(I8 ./ UI8, uint8([ 31, 15; 9, 7]));
759 assert_checkequal(I8 ./ i16, int16([ 0, 1; 1, 2]));
760 assert_checkequal(I8 ./ I16, int16([ 0, 0; 0, 0]));
761 assert_checkequal(I8 ./ ui16, uint16([ 4095, 4095; 4094, 4094]));
762 assert_checkequal(I8 ./ UI16, uint16([ 4095, 2047; 1364, 1023]));
763 assert_checkequal(I8 ./ i32, int32([ 0, 0; 0, 1]));
764 assert_checkequal(I8 ./ I32, int32([ 0, 0; 0, 0]));
765 assert_checkequal(I8 ./ ui32, uint32([ 134217727, 134217727; 134217727, 134217727]));
766 assert_checkequal(I8 ./ UI32, uint32([ 134217727, 67108863; 44739242, 33554431]));
767
768 assert_checkequal(ui8 ./ r, uint8( 4));
769 assert_checkequal(ui8 ./ R, uint8([ 8, 4; 2, 2]));
770 assert_checkequal(ui8 ./ i8, uint8( 0));
771 assert_checkequal(ui8 ./ I8, uint8([ 0, 0; 0, 0]));
772 assert_checkequal(ui8 ./ ui8, uint8( 1));
773 assert_checkequal(ui8 ./ UI8, uint8([ 1, 0; 0, 0]));
774 assert_checkequal(ui8 ./ i16, uint16( 0));
775 assert_checkequal(ui8 ./ I16, uint16([ 0, 0; 0, 0]));
776 assert_checkequal(ui8 ./ ui16, uint16( 0));
777 assert_checkequal(ui8 ./ UI16, uint16([ 0, 0; 0, 0]));
778 assert_checkequal(ui8 ./ i32, uint32( 0));
779 assert_checkequal(ui8 ./ I32, uint32([ 0, 0; 0, 0]));
780 assert_checkequal(ui8 ./ ui32, uint32( 0));
781 assert_checkequal(ui8 ./ UI32, uint32([ 0, 0; 0, 0]));
782
783 assert_checkequal(UI8 ./ r, uint8([ 4, 8; 12, 16]));
784 assert_checkequal(UI8 ./ R, uint8([ 8, 8; 8, 8]));
785 assert_checkequal(UI8 ./ i8, uint8([ 0, 0; 0, 0]));
786 assert_checkequal(UI8 ./ I8, uint8([ 0, 0; 0, 0]));
787 assert_checkequal(UI8 ./ ui8, uint8([ 1, 2; 3, 4]));
788 assert_checkequal(UI8 ./ UI8, uint8([ 1, 1; 1, 1]));
789 assert_checkequal(UI8 ./ i16, uint16([ 0, 0; 0, 0]));
790 assert_checkequal(UI8 ./ I16, uint16([ 0, 0; 0, 0]));
791 assert_checkequal(UI8 ./ ui16, uint16([ 0, 1; 1, 2]));
792 assert_checkequal(UI8 ./ UI16, uint16([ 0, 0; 0, 0]));
793 assert_checkequal(UI8 ./ i32, uint32([ 0, 0; 0, 0]));
794 assert_checkequal(UI8 ./ I32, uint32([ 0, 0; 0, 0]));
795 assert_checkequal(UI8 ./ ui32, uint32([ 0, 0; 0, 1]));
796 assert_checkequal(UI8 ./ UI32, uint32([ 0, 0; 0, 0]));
797
798 assert_checkequal(i16 ./ r, int16( - 8));
799 assert_checkequal(i16 ./ R, int16([ - 16, - 8; - 5, - 4]));
800 assert_checkequal(i16 ./ i8, int16( 2));
801 assert_checkequal(i16 ./ I8, int16([ 2, 1; 0, 0]));
802 assert_checkequal(i16 ./ ui8, uint16( 8190));
803 assert_checkequal(i16 ./ UI8, uint16([ 8190, 4095; 2730, 2047]));
804 assert_checkequal(i16 ./ i16, int16( 1));
805 assert_checkequal(i16 ./ I16, int16([ 1, 0; 0, 0]));
806 assert_checkequal(i16 ./ ui16, uint16( 4095));
807 assert_checkequal(i16 ./ UI16, uint16([ 4095, 2047; 1365, 1023]));
808 assert_checkequal(i16 ./ i32, int32( 0));
809 assert_checkequal(i16 ./ I32, int32([ 0, 0; 0, 0]));
810 assert_checkequal(i16 ./ ui32, uint32( 134217727));
811 assert_checkequal(i16 ./ UI32, uint32([ 134217727, 67108863; 44739242, 33554431]));
812
813 assert_checkequal(I16 ./ r, int16([ - 8, - 16; - 24, - 32]));
814 assert_checkequal(I16 ./ R, int16([ - 16, - 16; - 16, - 16]));
815 assert_checkequal(I16 ./ i8, int16([ 2, 4; 6, 8]));
816 assert_checkequal(I16 ./ I8, int16([ 2, 2; 2, 2]));
817 assert_checkequal(I16 ./ ui8, uint16([ 8190, 8188; 8186, 8184]));
818 assert_checkequal(I16 ./ UI8, uint16([ 8190, 4094; 2728, 2046]));
819 assert_checkequal(I16 ./ i16, int16([ 1, 2; 3, 4]));
820 assert_checkequal(I16 ./ I16, int16([ 1, 1; 1, 1]));
821 assert_checkequal(I16 ./ ui16, uint16([ 4095, 4094; 4093, 4092]));
822 assert_checkequal(I16 ./ UI16, uint16([ 4095, 2047; 1364, 1023]));
823 assert_checkequal(I16 ./ i32, int32([ 0, 1; 1, 2]));
824 assert_checkequal(I16 ./ I32, int32([ 0, 0; 0, 0]));
825 assert_checkequal(I16 ./ ui32, uint32([ 134217727, 134217727; 134217726, 134217726]));
826 assert_checkequal(I16 ./ UI32, uint32([ 134217727, 67108863; 44739242, 33554431]));
827
828 assert_checkequal(ui16 ./ r, uint16( 8));
829 assert_checkequal(ui16 ./ R, uint16([ 16, 8; 5, 4]));
830 assert_checkequal(ui16 ./ i8, uint16( 0));
831 assert_checkequal(ui16 ./ I8, uint16([ 0, 0; 0, 0]));
832 assert_checkequal(ui16 ./ ui8, uint16( 2));
833 assert_checkequal(ui16 ./ UI8, uint16([ 2, 1; 0, 0]));
834 assert_checkequal(ui16 ./ i16, uint16( 0));
835 assert_checkequal(ui16 ./ I16, uint16([ 0, 0; 0, 0]));
836 assert_checkequal(ui16 ./ ui16, uint16( 1));
837 assert_checkequal(ui16 ./ UI16, uint16([ 1, 0; 0, 0]));
838 assert_checkequal(ui16 ./ i32, uint32( 0));
839 assert_checkequal(ui16 ./ I32, uint32([ 0, 0; 0, 0]));
840 assert_checkequal(ui16 ./ ui32, uint32( 0));
841 assert_checkequal(ui16 ./ UI32, uint32([ 0, 0; 0, 0]));
842
843 assert_checkequal(UI16 ./ r, uint16([ 8, 16; 24, 32]));
844 assert_checkequal(UI16 ./ R, uint16([ 16, 16; 16, 16]));
845 assert_checkequal(UI16 ./ i8, uint16([ 0, 0; 0, 0]));
846 assert_checkequal(UI16 ./ I8, uint16([ 0, 0; 0, 0]));
847 assert_checkequal(UI16 ./ ui8, uint16([ 2, 4; 6, 8]));
848 assert_checkequal(UI16 ./ UI8, uint16([ 2, 2; 2, 2]));
849 assert_checkequal(UI16 ./ i16, uint16([ 0, 0; 0, 0]));
850 assert_checkequal(UI16 ./ I16, uint16([ 0, 0; 0, 0]));
851 assert_checkequal(UI16 ./ ui16, uint16([ 1, 2; 3, 4]));
852 assert_checkequal(UI16 ./ UI16, uint16([ 1, 1; 1, 1]));
853 assert_checkequal(UI16 ./ i32, uint32([ 0, 0; 0, 0]));
854 assert_checkequal(UI16 ./ I32, uint32([ 0, 0; 0, 0]));
855 assert_checkequal(UI16 ./ ui32, uint32([ 0, 1; 1, 2]));
856 assert_checkequal(UI16 ./ UI32, uint32([ 0, 0; 0, 0]));
857
858 assert_checkequal(i32 ./ r, int32( - 16));
859 assert_checkequal(i32 ./ R, int32([ - 32, - 16; - 10, - 8]));
860 assert_checkequal(i32 ./ i8, int32( 4));
861 assert_checkequal(i32 ./ I8, int32([ 4, 2; 1, 1]));
862 assert_checkequal(i32 ./ ui8, uint32( 536870908));
863 assert_checkequal(i32 ./ UI8, uint32([ 536870908, 268435454; 178956969, 134217727]));
864 assert_checkequal(i32 ./ i16, int32( 2));
865 assert_checkequal(i32 ./ I16, int32([ 2, 1; 0, 0]));
866 assert_checkequal(i32 ./ ui16, uint32( 268435454));
867 assert_checkequal(i32 ./ UI16, uint32([ 268435454, 134217727; 89478484, 67108863]));
868 assert_checkequal(i32 ./ i32, int32( 1));
869 assert_checkequal(i32 ./ I32, int32([ 1, 0; 0, 0]));
870 assert_checkequal(i32 ./ ui32, uint32( 134217727));
871 assert_checkequal(i32 ./ UI32, uint32([ 134217727, 67108863; 44739242, 33554431]));
872
873 assert_checkequal(I32 ./ r, int32([ - 16, - 32; - 48, - 64]));
874 assert_checkequal(I32 ./ R, int32([ - 32, - 32; - 32, - 32]));
875 assert_checkequal(I32 ./ i8, int32([ 4, 8; 12, 16]));
876 assert_checkequal(I32 ./ I8, int32([ 4, 4; 4, 4]));
877 assert_checkequal(I32 ./ ui8, uint32([ 536870908, 536870904; 536870900, 536870896]));
878 assert_checkequal(I32 ./ UI8, uint32([ 536870908, 268435452; 178956966, 134217724]));
879 assert_checkequal(I32 ./ i16, int32([ 2, 4; 6, 8]));
880 assert_checkequal(I32 ./ I16, int32([ 2, 2; 2, 2]));
881 assert_checkequal(I32 ./ ui16, uint32([ 268435454, 268435452; 268435450, 268435448]));
882 assert_checkequal(I32 ./ UI16, uint32([ 268435454, 134217726; 89478483, 67108862]));
883 assert_checkequal(I32 ./ i32, int32([ 1, 2; 3, 4]));
884 assert_checkequal(I32 ./ I32, int32([ 1, 1; 1, 1]));
885 assert_checkequal(I32 ./ ui32, uint32([ 134217727, 134217726; 134217725, 134217724]));
886 assert_checkequal(I32 ./ UI32, uint32([ 134217727, 67108863; 44739241, 33554431]));
887
888 assert_checkequal(ui32 ./ r, uint32( 16));
889 assert_checkequal(ui32 ./ R, uint32([ 32, 16; 10, 8]));
890 assert_checkequal(ui32 ./ i8, uint32( 0));
891 assert_checkequal(ui32 ./ I8, uint32([ 0, 0; 0, 0]));
892 assert_checkequal(ui32 ./ ui8, uint32( 4));
893 assert_checkequal(ui32 ./ UI8, uint32([ 4, 2; 1, 1]));
894 assert_checkequal(ui32 ./ i16, uint32( 0));
895 assert_checkequal(ui32 ./ I16, uint32([ 0, 0; 0, 0]));
896 assert_checkequal(ui32 ./ ui16, uint32( 2));
897 assert_checkequal(ui32 ./ UI16, uint32([ 2, 1; 0, 0]));
898 assert_checkequal(ui32 ./ i32, uint32( 0));
899 assert_checkequal(ui32 ./ I32, uint32([ 0, 0; 0, 0]));
900 assert_checkequal(ui32 ./ ui32, uint32( 1));
901 assert_checkequal(ui32 ./ UI32, uint32([ 1, 0; 0, 0]));
902
903 assert_checkequal(UI32 ./ r, uint32([ 16, 32; 48, 64]));
904 assert_checkequal(UI32 ./ R, uint32([ 32, 32; 32, 32]));
905 assert_checkequal(UI32 ./ i8, uint32([ 0, 0; 0, 0]));
906 assert_checkequal(UI32 ./ I8, uint32([ 0, 0; 0, 0]));
907 assert_checkequal(UI32 ./ ui8, uint32([ 4, 8; 12, 16]));
908 assert_checkequal(UI32 ./ UI8, uint32([ 4, 4; 4, 4]));
909 assert_checkequal(UI32 ./ i16, uint32([ 0, 0; 0, 0]));
910 assert_checkequal(UI32 ./ I16, uint32([ 0, 0; 0, 0]));
911 assert_checkequal(UI32 ./ ui16, uint32([ 2, 4; 6, 8]));
912 assert_checkequal(UI32 ./ UI16, uint32([ 2, 2; 2, 2]));
913 assert_checkequal(UI32 ./ i32, uint32([ 0, 0; 0, 0]));
914 assert_checkequal(UI32 ./ I32, uint32([ 0, 0; 0, 0]));
915 assert_checkequal(UI32 ./ ui32, uint32([ 1, 2; 3, 4]));
916 assert_checkequal(UI32 ./ UI32, uint32([ 1, 1; 1, 1]));
917