/Users/lyon/j4p/src/math/Mat4.java
|
1 package math;
2
3 import java.awt.*;
4
5 public class Mat4 {
6 double a[] [] =
7 {{1, 0, 0, 0},
8 {0, 1, 0, 0},
9 {0, 0, 1, 0},
10 {0, 0, 0, 1}};
11
12 private static final double piOn180 = Math.PI / 180.0;
13
14
15 public Mat4() {
16 };
17 public Mat4(double a_[][]) {
18 a = a_;
19 if (a.length != 4)
20 System.out.println("Wrong size in Mat4, Danger Will Robinson!");
21 if (a.length != a[0].length)
22 System.out.println("row != col in Mat4, Take cover Dr. Smith!");
23 }
24
25 public double[][] getArray() {
26 return a;
27 }
28
29 /*
30 To find the determinant fast, in Maple, use:
31 with(linalg):readlib(C):
32 a:=array(0..3,0..3,[]):
33 C(det(matrix(a)));
34 */
35 public double determinant() {
36 double s1 = a[0][0] * a[1][1] * a[2][2] * a[3][3] - a[0][0] * a[1][1] * a[2][3] * a[3][2] - a[0]
37 [0] * a[2][1] * a[1][2] * a[3][3] + a[0][0] * a[2][1] * a[1][3] * a[3][2] + a[0][0] * a[3][1] * a
38 [1][2] * a[2][3] - a[0][0] * a[3][1] * a[1][3] * a[2][2] - a[1][0] * a[0][1] * a[2][2] * a[3][3] +
39 a[1][0] * a[0][1] * a[2][3] * a[3][2] + a[1][0] * a[2][1] * a[0][2] * a[3][3] - a[1][0] * a[2][1]
40 * a[0][3] * a[3][2] - a[1][0] * a[3][1] * a[0][2] * a[2][3] + a[1][0] * a[3][1] * a[0][3] * a[2]
41 [2];
42 return s1 + a[2][0] * a[0][1] * a[1][2] * a[3][3] - a[2][0] * a[0][1] * a[1][3] * a[3][2] - a
43 [2][0] * a[1][1] * a[0][2] * a[3][3] + a[2][0] * a[1][1] * a[0][3] * a[3][2] + a[2][0] * a[3][1] *
44 a[0][2] * a[1][3] - a[2][0] * a[3][1] * a[0][3] * a[1][2] - a[3][0] * a[0][1] * a[1][2] * a[2][3]
45 + a[3][0] * a[0][1] * a[1][3] * a[2][2] + a[3][0] * a[1][1] * a[0][2] * a[2][3] - a[3][0] * a[1]
46 [1] * a[0][3] * a[2][2] - a[3][0] * a[2][1] * a[0][2] * a[1][3] + a[3][0] * a[2][1] * a[0][3] * a
47 [1][2];
48 }
49
50
51 /*
52 To generate a time-optimal 4x4 matrix inversion, use maple:
53 with(linalg):readlib(C):
54 a:=array(0..3,0..3,[]):
55 b:=array(0..3,0..3,[]):
56 b:=inverse(matrix(a)):
57 C(b,optimized);
58
59 */
60 public Mat4 invert() {
61 if (determinant() == 0) {
62 System.out.println("invert error: determinant == 0");
63 throw new ArithmeticException();
64 }
65 double b[] [] = new double[4][4];
66 t14 = a[0][0] * a[1][1];
67 t15 = a[2][2] * a[3][3];
68 t17 = a[2][3] * a[3][2];
69 t19 = a[0][0] * a[2][1];
70 t20 = a[1][2] * a[3][3];
71 t22 = a[1][3] * a[3][2];
72 t24 = a[0][0] * a[3][1];
73 t25 = a[1][2] * a[2][3];
74 t27 = a[1][3] * a[2][2];
75 t29 = a[1][0] * a[0][1];
76 t32 = a[1][0] * a[2][1];
77 t33 = a[0][2] * a[3][3];
78 t35 = a[0][3] * a[3][2];
79 t37 = a[1][0] * a[3][1];
80 t38 = a[0][2] * a[2][3];
81 t40 = a[0][3] * a[2][2];
82 t42 = t14 * t15 - t14 * t17 - t19 * t20 + t19 * t22 + t24 * t25 - t24 * t27 - t29 * t15 + t29 * t17 + t32
83 * t33 - t32 * t35 - t37 * t38 + t37 * t40;
84 t43 = a[2][0] * a[0][1];
85 t46 = a[2][0] * a[1][1];
86 t49 = a[2][0] * a[3][1];
87 t50 = a[0][2] * a[1][3];
88 t52 = a[0][3] * a[1][2];
89 t54 = a[3][0] * a[0][1];
90 t57 = a[3][0] * a[1][1];
91 t60 = a[3][0] * a[2][1];
92 t63 = t43 * t20 - t43 * t22 - t46 * t33 + t46 * t35 + t49 * t50 - t49 * t52 - t54 * t25 + t54 * t27 + t57
93 * t38 - t57 * t40 - t60 * t50 + t60 * t52;
94 t65 = 1 / (t42 + t63);
95 t71 = a[0][2] * a[2][1];
96 t73 = a[0][3] * a[2][1];
97 t75 = a[0][2] * a[3][1];
98 t77 = a[0][3] * a[3][1];
99 t81 = a[0][1] * a[1][2];
100 t83 = a[0][1] * a[1][3];
101 t85 = a[0][2] * a[1][1];
102 t87 = a[0][3] * a[1][1];
103 t101 = a[1][0] * a[2][2];
104 t103 = a[1][0] * a[2][3];
105 t105 = a[2][0] * a[1][2];
106 t107 = a[2][0] * a[1][3];
107 t109 = a[3][0] * a[1][2];
108 t111 = a[3][0] * a[1][3];
109 t115 = a[0][0] * a[2][2];
110 t117 = a[0][0] * a[2][3];
111 t119 = a[2][0] * a[0][2];
112 t121 = a[2][0] * a[0][3];
113 t123 = a[3][0] * a[0][2];
114 t125 = a[3][0] * a[0][3];
115 t129 = a[0][0] * a[1][2];
116 t131 = a[0][0] * a[1][3];
117 t133 = a[1][0] * a[0][2];
118 t135 = a[1][0] * a[0][3];
119 b[0][0] = (a[1][1] * a[2][2] * a[3][3] - a[1][1] * a[2][3] * a[3][2] - a[2][1] * a[1]
120 [2] * a[3][3] + a[2][1] * a[1][3] * a[3][2] + a[3][1] * a[1][2] * a[2][3] - a[3][1] * a[1][3] * a
121 [2][2]) * t65;
122 b[0][1] = -(a[0][1] * a[2][2] * a[3][3] - a[0][1] * a[2][3] * a[3][2] - t71 * a[3][3] +
123 t73 * a[3][2] + t75 * a[2][3] - t77 * a[2][2]) * t65;
124 b[0][2] = (t81 * a[3][3] - t83 * a[3][2] - t85 * a[3][3] + t87 * a[3][2] + t75 * a[1][3] -
125 t77 * a[1][2]) * t65;
126 b[0][3] = -(t81 * a[2][3] - t83 * a[2][2] - t85 * a[2][3] + t87 * a[2][2] + t71 * a[1][3] -
127 t73 * a[1][2]) * t65;
128 b[1][0] = -(t101 * a[3][3] - t103 * a[3][2] - t105 * a[3][3] + t107 * a[3][2] + t109 * a[2]
129 [3] - t111 * a[2][2]) * t65;
130 b[1][1] = (t115 * a[3][3] - t117 * a[3][2] - t119 * a[3][3] + t121 * a[3][2] + t123 * a[2]
131 [3] - t125 * a[2][2]) * t65;
132 b[1][2] = -(t129 * a[3][3] - t131 * a[3][2] - t133 * a[3][3] + t135 * a[3][2] + t123 * a[1]
133 [3] - t125 * a[1][2]) * t65;
134 b[1][3] = (t129 * a[2][3] - t131 * a[2][2] - t133 * a[2][3] + t135 * a[2][2] + t119 * a[1]
135 [3] - t121 * a[1][2]) * t65;
136 b[2][0] = (t32 * a[3][3] - t103 * a[3][1] - t46 * a[3][3] + t107 * a[3][1] + t57 * a[2][3] -
137 t111 * a[2][1]) * t65;
138 b[2][1] = -(t19 * a[3][3] - t117 * a[3][1] - t43 * a[3][3] + t121 * a[3][1] + t54 * a[2][3]
139 - t125 * a[2][1]) * t65;
140 b[2][2] = (t14 * a[3][3] - t131 * a[3][1] - t29 * a[3][3] + t135 * a[3][1] + t54 * a[1][3] -
141 t125 * a[1][1]) * t65;
142 b[2][3] = -(t14 * a[2][3] - t131 * a[2][1] - t29 * a[2][3] + t135 * a[2][1] + t43 * a[1][3]
143 - t121 * a[1][1]) * t65;
144 b[3][0] = -(t32 * a[3][2] - t101 * a[3][1] - t46 * a[3][2] + t105 * a[3][1] + t57 * a[2][2]
145 - t109 * a[2][1]) * t65;
146 b[3][1] = (t19 * a[3][2] - t115 * a[3][1] - t43 * a[3][2] + t119 * a[3][1] + t54 * a[2][2] -
147 t123 * a[2][1]) * t65;
148 b[3][2] = -(t14 * a[3][2] - t129 * a[3][1] - t29 * a[3][2] + t133 * a[3][1] + t54 * a[1][2]
149 - t123 * a[1][1]) * t65;
150 b[3][3] = (t14 * a[2][2] - t129 * a[2][1] - t29 * a[2][2] + t133 * a[2][1] + t43 * a[1][2] -
151 t119 * a[1][1]) * t65;
152
153 return new Mat4(b);
154 }
155 /* To generate a new matrix, transposed:
156 with(linalg):readlib(C):
157 a:=array(0..3,0..3,[]):
158 b:=array(0..3,0..3,[]):
159 b:=transpose(matrix(a)):
160 C(b,optimized);
161 */
162 public Mat4 transpose() {
163 double b[][] = new double[3][3];
164 b[0][0] = a[0][0];
165 b[0][1] = a[1][0];
166 b[0][2] = a[2][0];
167 b[0][3] = a[3][0];
168 b[1][0] = a[0][1];
169 b[1][1] = a[1][1];
170 b[1][2] = a[2][1];
171 b[1][3] = a[3][1];
172 b[2][0] = a[0][2];
173 b[2][1] = a[1][2];
174 b[2][2] = a[2][2];
175 b[2][3] = a[3][2];
176 b[3][0] = a[0][3];
177 b[3][1] = a[1][3];
178 b[3][2] = a[2][3];
179 b[3][3] = a[3][3];
180 return new Mat4(b);
181 }
182
183 /*
184 To multiply two 4x4's, fast, use:
185
186 with(linalg):
187 readlib(C):
188 a:=array(0..3,0..3,[]):
189 b:=array(0..3,0..3,[]):
190 c:=array(0..3,0..3,[]):
191 c:=multiply(matrix(b),matrix(a)):
192 C(c,optimized);
193 */
194
195 public Mat4 multiply(Mat4 bmat4) {
196 double c [][] = new double[4][4];
197 double b [][] = bmat4.getArray();
198 c[0][0] = b[0][0] * a[0][0] + b[0][1] * a[1][0] + b[0][2] * a[2][0] + b[0][3] * a[3][0];
199 c[0][1] = b[0][0] * a[0][1] + b[0][1] * a[1][1] + b[0][2] * a[2][1] + b[0][3] * a[3][1];
200 c[0][2] = b[0][0] * a[0][2] + b[0][1] * a[1][2] + b[0][2] * a[2][2] + b[0][3] * a[3][2];
201 c[0][3] = b[0][0] * a[0][3] + b[0][1] * a[1][3] + b[0][2] * a[2][3] + b[0][3] * a[3][3];
202 c[1][0] = b[1][0] * a[0][0] + b[1][1] * a[1][0] + b[1][2] * a[2][0] + b[1][3] * a[3][0];
203 c[1][1] = b[1][0] * a[0][1] + b[1][1] * a[1][1] + b[1][2] * a[2][1] + b[1][3] * a[3][1];
204 c[1][2] = b[1][0] * a[0][2] + b[1][1] * a[1][2] + b[1][2] * a[2][2] + b[1][3] * a[3][2];
205 c[1][3] = b[1][0] * a[0][3] + b[1][1] * a[1][3] + b[1][2] * a[2][3] + b[1][3] * a[3][3];
206 c[2][0] = b[2][0] * a[0][0] + b[2][1] * a[1][0] + b[2][2] * a[2][0] + b[2][3] * a[3][0];
207 c[2][1] = b[2][0] * a[0][1] + b[2][1] * a[1][1] + b[2][2] * a[2][1] + b[2][3] * a[3][1];
208 c[2][2] = b[2][0] * a[0][2] + b[2][1] * a[1][2] + b[2][2] * a[2][2] + b[2][3] * a[3][2];
209 c[2][3] = b[2][0] * a[0][3] + b[2][1] * a[1][3] + b[2][2] * a[2][3] + b[2][3] * a[3][3];
210 c[3][0] = b[3][0] * a[0][0] + b[3][1] * a[1][0] + b[3][2] * a[2][0] + b[3][3] * a[3][0];
211 c[3][1] = b[3][0] * a[0][1] + b[3][1] * a[1][1] + b[3][2] * a[2][1] + b[3][3] * a[3][1];
212 c[3][2] = b[3][0] * a[0][2] + b[3][1] * a[1][2] + b[3][2] * a[2][2] + b[3][3] * a[3][2];
213 c[3][3] = b[3][0] * a[0][3] + b[3][1] * a[1][3] + b[3][2] * a[2][3] + b[3][3] * a[3][3];
214 return (new Mat4(c));
215 }
216
217 public static Mat4 polygonToMat4(Polygon p) {
218 if (p.npoints != 4)
219 System.out.println("wrong number of points in Mat4:polygonToMat4");
220 // use the point points in the polygon to construct a
221 // matrix of the form:
222 // [uv u v 1]
223 int u[] = p.xpoints;
224 int v[] = p.ypoints;
225 double b[][] = {
226 {u[0], v[0], u[0] * v[0], 1},
227 {u[1], v[1], u[1] * v[1], 1},
228 {u[2], v[2], u[2] * v[2], 1},
229 {u[3], v[3], u[3] * v[3], 1}};
230 return new Mat4(b);
231 }
232 /*
233 To do a fast premultply of a 2x4*4x4,
234 use:
235 with(linalg):
236 readlib(C):
237 a:=array(0..3,0..3,[]):
238 b:=array(0..1,0..3,[]):
239 c:=array(0..1,0..3,[]):
240 c:=multiply(matrix(b),matrix(a)):
241 C(c,optimized);
242 */
243 public double[][] multiply2x4(double b[][]) {
244 if (b.length != 2)
245 System.out.println("multiply2x4: bad b.length");
246 if (b[0].length != 4)
247 System.out.println("multiply2x4: bad b[0].length");
248 double c[][] = new double[2][4];
249 c[0][0] = b[0][0] * a[0][0] + b[0][1] * a[1][0] + b[0][2] * a[2][0] + b[0][3] * a[3][0];
250 c[0][1] = b[0][0] * a[0][1] + b[0][1] * a[1][1] + b[0][2] * a[2][1] + b[0][3] * a[3][1];
251 c[0][2] = b[0][0] * a[0][2] + b[0][1] * a[1][2] + b[0][2] * a[2][2] + b[0][3] * a[3][2];
252 c[0][3] = b[0][0] * a[0][3] + b[0][1] * a[1][3] + b[0][2] * a[2][3] + b[0][3] * a[3][3];
253 c[1][0] = b[1][0] * a[0][0] + b[1][1] * a[1][0] + b[1][2] * a[2][0] + b[1][3] * a[3][0];
254 c[1][1] = b[1][0] * a[0][1] + b[1][1] * a[1][1] + b[1][2] * a[2][1] + b[1][3] * a[3][1];
255 c[1][2] = b[1][0] * a[0][2] + b[1][1] * a[1][2] + b[1][2] * a[2][2] + b[1][3] * a[3][2];
256 c[1][3] = b[1][0] * a[0][3] + b[1][1] * a[1][3] + b[1][2] * a[2][3] + b[1][3] * a[3][3];
257 return c;
258 }
259
260 /*
261 To get 4x2 = 4x4*4x2 , fast, use:
262
263 with(linalg):
264 readlib(C):
265 a:=array(0..3,0..3,[]):
266 b:=array(0..3,0..1,[]):
267 c:=array(0..3,0..1,[]):
268 c:=multiply(matrix(a),matrix(b)):
269 C(c,optimized);
270 */
271 public double[][] multiply4x2(double b[][]) {
272 if (b.length != 4)
273 System.out.println("multiply4x2: bad b.length");
274 if (b[0].length != 2)
275 System.out.println("multiply4x2: bad b[0].length");
276 double c[][] = new double[4][2];
277 c[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0] + a[0][3] * b[3][0];
278 c[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1] + a[0][2] * b[2][1] + a[0][3] * b[3][1];
279 c[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0] + a[1][2] * b[2][0] + a[1][3] * b[3][0];
280 c[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1] + a[1][2] * b[2][1] + a[1][3] * b[3][1];
281 c[2][0] = a[2][0] * b[0][0] + a[2][1] * b[1][0] + a[2][2] * b[2][0] + a[2][3] * b[3][0];
282 c[2][1] = a[2][0] * b[0][1] + a[2][1] * b[1][1] + a[2][2] * b[2][1] + a[2][3] * b[3][1];
283 c[3][0] = a[3][0] * b[0][0] + a[3][1] * b[1][0] + a[3][2] * b[2][0] + a[3][3] * b[3][0];
284 c[3][1] = a[3][0] * b[0][1] + a[3][1] * b[1][1] + a[3][2] * b[2][1] + a[3][3] * b[3][1];
285 return c;
286 }
287
288 public void print(String s) {
289 System.out.println(s);
290 print();
291 }
292
293 public void print() {
294 for (int i = 0; i < a.length; i++) {
295 for (int j = 0; j < a[0].length; j++)
296 System.out.print(a[i][j] + " ");
297 System.out.println();
298 }
299 }
300
301 static double t0 = 0;
302 static double t1 = 0;
303 static double t2 = 0;
304 static double t3 = 0;
305 static double t4 = 0;
306 static double t5 = 0;
307 static double t6 = 0;
308 static double t7 = 0;
309 static double t8 = 0;
310 static double t9 = 0;
311 static double t10 = 0;
312 static double t11 = 0;
313 static double t12 = 0;
314 static double t13 = 0;
315 static double t14 = 0;
316 static double t15 = 0;
317 static double t16 = 0;
318 static double t17 = 0;
319 static double t18 = 0;
320 static double t19 = 0;
321 static double t20 = 0;
322 static double t21 = 0;
323 static double t22 = 0;
324 static double t23 = 0;
325 static double t24 = 0;
326 static double t25 = 0;
327 static double t26 = 0;
328 static double t27 = 0;
329 static double t28 = 0;
330 static double t29 = 0;
331 static double t30 = 0;
332 static double t31 = 0;
333 static double t32 = 0;
334 static double t33 = 0;
335 static double t34 = 0;
336 static double t35 = 0;
337 static double t36 = 0;
338 static double t37 = 0;
339 static double t38 = 0;
340 static double t39 = 0;
341 static double t40 = 0;
342 static double t41 = 0;
343 static double t42 = 0;
344 static double t43 = 0;
345 static double t44 = 0;
346 static double t45 = 0;
347 static double t46 = 0;
348 static double t47 = 0;
349 static double t48 = 0;
350 static double t49 = 0;
351 static double t50 = 0;
352 static double t51 = 0;
353 static double t52 = 0;
354 static double t53 = 0;
355 static double t54 = 0;
356 static double t55 = 0;
357 static double t56 = 0;
358 static double t57 = 0;
359 static double t58 = 0;
360 static double t59 = 0;
361 static double t60 = 0;
362 static double t61 = 0;
363 static double t62 = 0;
364 static double t63 = 0;
365 static double t64 = 0;
366 static double t65 = 0;
367 static double t66 = 0;
368 static double t67 = 0;
369 static double t68 = 0;
370 static double t69 = 0;
371 static double t70 = 0;
372 static double t71 = 0;
373 static double t72 = 0;
374 static double t73 = 0;
375 static double t74 = 0;
376 static double t75 = 0;
377 static double t76 = 0;
378 static double t77 = 0;
379 static double t78 = 0;
380 static double t79 = 0;
381 static double t80 = 0;
382 static double t81 = 0;
383 static double t82 = 0;
384 static double t83 = 0;
385 static double t84 = 0;
386 static double t85 = 0;
387 static double t86 = 0;
388 static double t87 = 0;
389 static double t88 = 0;
390 static double t89 = 0;
391 static double t90 = 0;
392 static double t91 = 0;
393 static double t92 = 0;
394 static double t93 = 0;
395 static double t94 = 0;
396 static double t95 = 0;
397 static double t96 = 0;
398 static double t97 = 0;
399 static double t98 = 0;
400 static double t99 = 0;
401 static double t100 = 0;
402 static double t101 = 0;
403 static double t102 = 0;
404 static double t103 = 0;
405 static double t104 = 0;
406 static double t105 = 0;
407 static double t106 = 0;
408 static double t107 = 0;
409 static double t108 = 0;
410 static double t109 = 0;
411 static double t110 = 0;
412 static double t111 = 0;
413 static double t112 = 0;
414 static double t113 = 0;
415 static double t114 = 0;
416 static double t115 = 0;
417 static double t116 = 0;
418 static double t117 = 0;
419 static double t118 = 0;
420 static double t119 = 0;
421 static double t120 = 0;
422 static double t121 = 0;
423 static double t122 = 0;
424 static double t123 = 0;
425 static double t124 = 0;
426 static double t125 = 0;
427 static double t126 = 0;
428 static double t127 = 0;
429 static double t128 = 0;
430 static double t129 = 0;
431 static double t130 = 0;
432 static double t131 = 0;
433 static double t132 = 0;
434 static double t133 = 0;
435 static double t134 = 0;
436 static double t135 = 0;
437 static double t136 = 0;
438 static double t137 = 0;
439 static double t138 = 0;
440 static double t139 = 0;
441 static double t140 = 0;
442 static double t141 = 0;
443 static double t142 = 0;
444 static double t143 = 0;
445 static double t144 = 0;
446 static double t145 = 0;
447 static double t146 = 0;
448 static double t147 = 0;
449 static double t148 = 0;
450 static double t149 = 0;
451 static double t150 = 0;
452 static double t151 = 0;
453 static double t152 = 0;
454 static double t153 = 0;
455 static double t154 = 0;
456 static double t155 = 0;
457 static double t156 = 0;
458 static double t157 = 0;
459 static double t158 = 0;
460 static double t159 = 0;
461 static double t160 = 0;
462 static double t161 = 0;
463 static double t162 = 0;
464 static double t163 = 0;
465 static double t164 = 0;
466 static double t165 = 0;
467 static double t166 = 0;
468 static double t167 = 0;
469 static double t168 = 0;
470 static double t169 = 0;
471 static double t170 = 0;
472 static double t171 = 0;
473 static double t172 = 0;
474 static double t173 = 0;
475 static double t174 = 0;
476 static double t175 = 0;
477 static double t176 = 0;
478 static double t177 = 0;
479 static double t178 = 0;
480 static double t179 = 0;
481 static double t180 = 0;
482 static double t181 = 0;
483 static double t182 = 0;
484 static double t183 = 0;
485 static double t184 = 0;
486 static double t185 = 0;
487 static double t186 = 0;
488 static double t187 = 0;
489 static double t188 = 0;
490 static double t189 = 0;
491 static double t190 = 0;
492 static double t191 = 0;
493 static double t192 = 0;
494 static double t193 = 0;
495 static double t194 = 0;
496 static double t195 = 0;
497 static double t196 = 0;
498 static double t197 = 0;
499 static double t198 = 0;
500 static double t199 = 0;
501 static double t200 = 0;
502 static double t201 = 0;
503 static double t202 = 0;
504 static double t203 = 0;
505 static double t204 = 0;
506 static double t205 = 0;
507 static double t206 = 0;
508 static double t207 = 0;
509 static double t208 = 0;
510 static double t209 = 0;
511 static double t210 = 0;
512 static double t211 = 0;
513 static double t212 = 0;
514 static double t213 = 0;
515 static double t214 = 0;
516 static double t215 = 0;
517 static double t216 = 0;
518 static double t217 = 0;
519 static double t218 = 0;
520 static double t219 = 0;
521 static double t220 = 0;
522 static double t221 = 0;
523 static double t222 = 0;
524 static double t223 = 0;
525 static double t224 = 0;
526 static double t225 = 0;
527 static double t226 = 0;
528 static double t227 = 0;
529 static double t228 = 0;
530 static double t229 = 0;
531 static double t230 = 0;
532 static double t231 = 0;
533 static double t232 = 0;
534 static double t233 = 0;
535 static double t234 = 0;
536 static double t235 = 0;
537 static double t236 = 0;
538 static double t237 = 0;
539 static double t238 = 0;
540 static double t239 = 0;
541 static double t240 = 0;
542 static double t241 = 0;
543 static double t242 = 0;
544 static double t243 = 0;
545 static double t244 = 0;
546 static double t245 = 0;
547 static double t246 = 0;
548 static double t247 = 0;
549 static double t248 = 0;
550 static double t249 = 0;
551
552 }
553
554