libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / tsvc / tsvc.h
blob4d295d1ec2961c25301d1b57f88297dc81f3f825
1 /* This file is distributed under the University of Illinois Open Source
2 License. See license.txt for details. */
4 #ifndef iterations
5 #define iterations 10
6 /* Was: #define iterations 10000 */
7 #endif
8 #define LEN_1D 32000
9 #define LEN_2D 256
10 #define ARRAY_ALIGNMENT 64
12 #pragma GCC push_options
13 #pragma GCC optimize "-fno-tree-vectorize"
15 #include <stdio.h>
16 #include <stdlib.h>
17 #if __has_include(<malloc.h>)
18 #include <malloc.h>
19 #endif
20 #if __has_include(<sys/time.h>)
21 #include <sys/time.h>
22 #endif
23 #include <string.h>
24 #include <math.h>
26 typedef float real_t;
27 #define ABS fabsf
29 int dummy(real_t[LEN_1D], real_t[LEN_1D], real_t[LEN_1D], real_t[LEN_1D],
30 real_t[LEN_1D], real_t[LEN_2D][LEN_2D], real_t[LEN_2D][LEN_2D],
31 real_t[LEN_2D][LEN_2D], real_t);
33 __attribute__((aligned(ARRAY_ALIGNMENT)))
34 real_t flat_2d_array[LEN_2D * LEN_2D];
35 __attribute__((aligned(ARRAY_ALIGNMENT))) real_t x[LEN_1D];
36 __attribute__((aligned(ARRAY_ALIGNMENT))) real_t a[LEN_1D], b[LEN_1D],
37 c[LEN_1D], d[LEN_1D], e[LEN_1D], aa[LEN_2D][LEN_2D], bb[LEN_2D][LEN_2D],
38 cc[LEN_2D][LEN_2D], tt[LEN_2D][LEN_2D];
39 __attribute__((aligned(ARRAY_ALIGNMENT))) int indx[LEN_1D];
41 real_t* __restrict__ xx;
42 real_t* yy;
44 void set_1d_array(real_t * arr, int length, real_t value, int stride);
45 void set_2d_array(real_t arr[LEN_2D][LEN_2D], real_t value, int stride);
47 struct args_t {
48 struct timeval t1;
49 struct timeval t2;
50 void * __restrict__ arg_info;
53 enum {SET1D_RECIP_IDX = -1, SET1D_RECIP_IDX_SQ = -2};
55 real_t sum1d(real_t arr[LEN_1D]);
56 real_t sum2d(real_t arr[LEN_2D][LEN_2D]);
58 real_t sum_x();
59 real_t sum_a();
60 real_t sum_b();
61 real_t sum_c();
62 real_t sum_e();
64 real_t sum_half_xx();
66 real_t sum_a_aa();
68 real_t sum_aa();
69 real_t sum_bb();
70 real_t sum_cc();
71 real_t sum_xx();
73 real_t sum_aa_bb();
75 real_t sum_flat_2d_array();
77 real_t sum1d(real_t arr[LEN_1D]){
78 real_t ret = 0.;
79 for (int i = 0; i < LEN_1D; i++)
80 ret += arr[i];
81 return ret;
84 real_t sum2d(real_t arr[LEN_2D][LEN_2D]){
85 real_t sum = 0.;
86 for (int i = 0; i < LEN_2D; i++){
87 for (int j = 0; j < LEN_2D; j++){
88 sum += arr[i][j];
92 return sum;
95 real_t sum_x()
97 return sum1d(x);
100 real_t sum_xx()
102 return sum1d(xx);
105 real_t sum_a()
107 return sum1d(a);
110 real_t sum_b()
112 return sum1d(b);
115 real_t sum_a_aa()
117 return sum1d(a) + sum2d(aa);
120 real_t sum_c()
122 return sum1d(c);
125 real_t sum_e()
127 return sum1d(e);
130 real_t sum_aa()
132 return sum2d(aa);
135 real_t sum_bb()
137 return sum2d(bb);
140 real_t sum_aa_bb()
142 return sum2d(aa) + sum2d(bb);
145 real_t sum_cc()
147 return sum2d(cc);
150 real_t sum_half_xx()
152 real_t temp = 00;
154 for (int i = 0; i < LEN_1D/2; i++){
155 temp += xx[i];
158 return temp;
161 real_t sum_flat_2d_array()
163 real_t sum = 0.;
165 for (int i = 0; i < LEN_2D*LEN_2D; i++){
166 sum += flat_2d_array[i];
169 return sum;
173 void set_1d_array(real_t * arr, int length, real_t value, int stride)
175 if (stride == SET1D_RECIP_IDX) {
176 for (int i = 0; i < length; i++) {
177 arr[i] = 1. / (real_t) (i+1);
179 } else if (stride == SET1D_RECIP_IDX_SQ) {
180 for (int i = 0; i < length; i++) {
181 arr[i] = 1. / (real_t) ((i+1) * (i+1));
183 } else {
184 for (int i = 0; i < length; i += stride) {
185 arr[i] = value;
190 void set_2d_array(real_t arr[LEN_2D][LEN_2D], real_t value, int stride)
192 for (int i = 0; i < LEN_2D; i++) {
193 set_1d_array(arr[i], LEN_2D, value, stride);
197 void init(int** ip, real_t* s1, real_t* s2){
198 #if !defined (__APPLE__) && !defined (_AIX) && !defined(__DragonFly__)
199 xx = (real_t*) memalign(ARRAY_ALIGNMENT, LEN_1D*sizeof(real_t));
200 *ip = (int *) memalign(ARRAY_ALIGNMENT, LEN_1D*sizeof(real_t));
201 #else
202 # if defined (__APPLE__) \
203 && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060
204 /* We have no aligned allocator, but malloc is guaranteed to return
205 alignment suitable for the largest vector item. */
206 xx = (real_t*) malloc (LEN_1D*sizeof(real_t));
207 *ip = (int *) malloc (LEN_1D*sizeof(real_t));
208 # else
209 posix_memalign ((void*)&xx, ARRAY_ALIGNMENT, LEN_1D*sizeof(real_t));
210 posix_memalign ((void*)ip, ARRAY_ALIGNMENT, LEN_1D*sizeof(real_t));
211 # endif
212 #endif
214 for (int i = 0; i < LEN_1D; i = i+5){
215 (*ip)[i] = (i+4);
216 (*ip)[i+1] = (i+2);
217 (*ip)[i+2] = (i);
218 (*ip)[i+3] = (i+3);
219 (*ip)[i+4] = (i+1);
222 set_1d_array(a, LEN_1D, 1.,1);
223 set_1d_array(b, LEN_1D, 1.,1);
224 set_1d_array(c, LEN_1D, 1.,1);
225 set_1d_array(d, LEN_1D, 1.,1);
226 set_1d_array(e, LEN_1D, 1.,1);
227 set_1d_array(x, LEN_1D, 1.,1);
228 set_2d_array(aa, 0.,SET1D_RECIP_IDX);
229 set_2d_array(bb, 0.,SET1D_RECIP_IDX);
230 set_2d_array(cc, 0.,SET1D_RECIP_IDX);
232 for (int i = 0; i < LEN_1D; i++) {
233 indx[i] = (i+1) % 4+1;
236 *s1 = 1.0;
237 *s2 = 2.0;
240 int initialise_arrays(const char* name)
242 real_t any=0.;
243 real_t zero=0.;
244 real_t half=.5;
245 real_t one=1.;
246 real_t two=2.;
247 real_t small = .000001;
248 int unit =1;
249 int frac = SET1D_RECIP_IDX;
250 int frac2 = SET1D_RECIP_IDX_SQ;
252 if (!strcmp(name, "s000")) {
253 for (int i = 0; i < LEN_1D; i++) {
254 a[i] = 1+i;
255 b[i] = 2+i;
256 c[i] = 3+i;
257 d[i] = 4+i;
258 e[i] = 5+i;
260 } else if (!strcmp(name, "s111")) {
261 set_1d_array(a, LEN_1D, one,unit);
262 set_1d_array(b, LEN_1D, any,frac2);
263 set_1d_array(c, LEN_1D, any,frac2);
264 set_1d_array(d, LEN_1D, any,frac2);
265 set_1d_array(e, LEN_1D, any,frac2);
266 } else if (!strcmp(name, "s112")) {
267 set_1d_array(a, LEN_1D, one,unit);
268 set_1d_array(b, LEN_1D, any,frac2);
269 } else if (!strcmp(name, "s113")) {
270 set_1d_array(a, LEN_1D, one,unit);
271 set_1d_array(b, LEN_1D, any,frac2);
272 } else if (!strcmp(name, "s114")) {
273 set_2d_array(aa, any,frac);
274 set_2d_array(bb, any,frac2);
275 } else if (!strcmp(name, "s115")) {
276 set_1d_array(a, LEN_1D, one,unit);
277 set_2d_array(aa,small,unit);
278 set_2d_array(bb,small,unit);
279 set_2d_array(cc,small,unit);
280 } else if (!strcmp(name, "s116")) {
281 set_1d_array(a, LEN_1D, one,unit);
282 } else if (!strcmp(name, "s118")) {
283 set_1d_array(a, LEN_1D, one,unit);
284 set_2d_array(bb,small,unit);
285 } else if (!strcmp(name, "s119")) {
286 set_2d_array(aa, one,unit);
287 set_2d_array(bb, any,frac2);
288 } else if (!strcmp(name, "s121")) {
289 set_1d_array(a, LEN_1D, one,unit);
290 set_1d_array(b, LEN_1D, any,frac2);
291 } else if (!strcmp(name, "s122")) {
292 set_1d_array(a, LEN_1D, one,unit);
293 set_1d_array(b, LEN_1D, any,frac2);
294 } else if (!strcmp(name, "s123")) {
295 set_1d_array(a, LEN_1D,zero,unit);
296 set_1d_array(b, LEN_1D, one,unit);
297 set_1d_array(c, LEN_1D, one,unit);
298 set_1d_array(d, LEN_1D, any,frac);
299 set_1d_array(e, LEN_1D, any,frac);
300 } else if (!strcmp(name, "s124")) {
301 set_1d_array(a, LEN_1D,zero,unit);
302 set_1d_array(b, LEN_1D, one,unit);
303 set_1d_array(c, LEN_1D, one,unit);
304 set_1d_array(d, LEN_1D, any,frac);
305 set_1d_array(e, LEN_1D, any,frac);
306 } else if (!strcmp(name, "s125")) {
307 set_1d_array(flat_2d_array, LEN_2D*LEN_2D,zero,unit);
308 set_2d_array(aa, one,unit);
309 set_2d_array(bb,half,unit);
310 set_2d_array(cc, two,unit);
311 } else if (!strcmp(name, "s126")) {
312 set_2d_array(bb, one,unit);
313 set_1d_array( flat_2d_array, LEN_2D*LEN_2D,any,frac);
314 set_2d_array(cc, any,frac);
315 } else if (!strcmp(name, "s127")) {
316 set_1d_array(a, LEN_1D,zero,unit);
317 set_1d_array(b, LEN_1D, one,unit);
318 set_1d_array(c, LEN_1D, any,frac);
319 set_1d_array(d, LEN_1D, any,frac);
320 set_1d_array(e, LEN_1D, any,frac);
321 } else if (!strcmp(name, "s128")) {
322 set_1d_array(a, LEN_1D,zero,unit);
323 set_1d_array(b, LEN_1D, two,unit);
324 set_1d_array(c, LEN_1D, one,unit);
325 set_1d_array(d, LEN_1D, one,unit);
326 } else if (!strcmp(name, "s131")) {
327 set_1d_array(a, LEN_1D, one,unit);
328 set_1d_array(b, LEN_1D, any,frac2);
329 } else if (!strcmp(name, "s132")) {
330 set_2d_array(aa, one,unit);
331 set_1d_array(b, LEN_1D, any,frac);
332 set_1d_array(c, LEN_1D, any,frac);
333 } else if (!strcmp(name, "s141")) {
334 set_1d_array( flat_2d_array, LEN_2D*LEN_2D, one,unit);
335 set_2d_array(bb, any,frac2);
336 } else if (!strcmp(name, "s151")) {
337 set_1d_array(a, LEN_1D, one,unit);
338 set_1d_array(b, LEN_1D, any,frac2);
339 } else if (!strcmp(name, "s152")) {
340 set_1d_array(a, LEN_1D, one,unit);
341 set_1d_array(b, LEN_1D,zero,unit);
342 set_1d_array(c, LEN_1D, any,frac);
343 set_1d_array(d, LEN_1D, any,frac);
344 set_1d_array(e, LEN_1D, any,frac);
345 } else if (!strcmp(name, "s161")) {
346 set_1d_array(a, LEN_1D, one,unit);
347 set_1d_array( &b[0], LEN_1D/2, one,2);
348 set_1d_array( &b[1], LEN_1D/2,-one,2);
349 set_1d_array(c, LEN_1D, one,unit);
350 set_1d_array(d, LEN_1D, any,frac);
351 set_1d_array(e, LEN_1D, any,frac);
352 } else if (!strcmp(name, "s162")) {
353 set_1d_array(a, LEN_1D, one,unit);
354 set_1d_array(b, LEN_1D, any,frac);
355 set_1d_array(c, LEN_1D, any,frac);
356 } else if (!strcmp(name, "s171")) {
357 set_1d_array(a, LEN_1D, one,unit);
358 set_1d_array(b, LEN_1D, any,frac2);
359 } else if (!strcmp(name, "s172")) {
360 set_1d_array(a, LEN_1D, one,unit);
361 set_1d_array(b, LEN_1D, any,frac2);
362 } else if (!strcmp(name, "s173")) {
363 set_1d_array(a, LEN_1D, one,unit);
364 set_1d_array(b, LEN_1D, any,frac2);
365 } else if (!strcmp(name, "s174")) {
366 set_1d_array(a, LEN_1D, one,unit);
367 set_1d_array(b, LEN_1D, any,frac2);
368 } else if (!strcmp(name, "s175")) {
369 set_1d_array(a, LEN_1D, one,unit);
370 set_1d_array(b, LEN_1D, any,frac2);
371 } else if (!strcmp(name, "s176")) {
372 set_1d_array(a, LEN_1D, one,unit);
373 set_1d_array(b, LEN_1D, any,frac);
374 set_1d_array(c, LEN_1D, any,frac);
375 } else if (!strcmp(name, "s211")) {
376 set_1d_array(a, LEN_1D,zero,unit);
377 set_1d_array(b, LEN_1D, one,unit);
378 set_1d_array(c, LEN_1D, any,frac);
379 set_1d_array(d, LEN_1D, any,frac);
380 set_1d_array(e, LEN_1D, any,frac);
381 } else if (!strcmp(name, "s212")) {
382 set_1d_array(a, LEN_1D, any,frac);
383 set_1d_array(b, LEN_1D, one,unit);
384 set_1d_array(c, LEN_1D, one,unit);
385 set_1d_array(d, LEN_1D, any,frac);
386 } else if (!strcmp(name, "s221")) {
387 set_1d_array(a, LEN_1D, one,unit);
388 set_1d_array(b, LEN_1D, any,frac);
389 set_1d_array(c, LEN_1D, any,frac);
390 set_1d_array(d, LEN_1D, any,frac);
391 } else if (!strcmp(name, "s222")) {
392 set_1d_array(a, LEN_1D,zero,unit);
393 set_1d_array(b, LEN_1D, one,unit);
394 set_1d_array(c, LEN_1D, one,unit);
395 } else if (!strcmp(name, "s231")) {
396 set_2d_array(aa, one,unit);
397 set_2d_array(bb, any,frac2);
398 } else if (!strcmp(name, "s232")) {
399 set_2d_array(aa, one,unit);
400 set_2d_array(bb,zero,unit);
401 } else if (!strcmp(name, "s233")) {
402 set_2d_array(aa, any,frac);
403 set_2d_array(bb, any,frac);
404 set_2d_array(cc, any,frac);
405 } else if (!strcmp(name, "s234")) {
406 set_2d_array(aa, one,unit);
407 set_2d_array(bb, any,frac);
408 set_2d_array(cc, any,frac);
409 } else if (!strcmp(name, "s235")) {
410 set_1d_array(a, LEN_1D, one,unit);
411 set_1d_array(b, LEN_1D, any,frac);
412 set_1d_array(c, LEN_1D, any,frac);
413 set_2d_array(aa, one,unit);
414 set_2d_array(bb, any, frac2);
415 } else if (!strcmp(name, "s241")) {
416 set_1d_array(a, LEN_1D, one,unit);
417 set_1d_array(b, LEN_1D, one,unit);
418 set_1d_array(c, LEN_1D, one,unit);
419 set_1d_array(d, LEN_1D, one,unit);
420 } else if (!strcmp(name, "s242")) {
421 set_1d_array(a, LEN_1D,small,unit);
422 set_1d_array(b, LEN_1D,small,unit);
423 set_1d_array(c, LEN_1D,small,unit);
424 set_1d_array(d, LEN_1D,small,unit);
425 } else if (!strcmp(name, "s243")) {
426 set_1d_array(a, LEN_1D,zero,unit);
427 set_1d_array(b, LEN_1D, one,unit);
428 set_1d_array(c, LEN_1D, any,frac);
429 set_1d_array(d, LEN_1D, any,frac);
430 set_1d_array(e, LEN_1D, any,frac);
431 } else if (!strcmp(name, "s244")) {
432 set_1d_array(a, LEN_1D,zero,unit);
433 set_1d_array(b, LEN_1D, one,unit);
434 set_1d_array(c, LEN_1D,small,unit);
435 set_1d_array(d, LEN_1D,small,unit);
436 } else if (!strcmp(name, "s251")) {
437 set_1d_array(a, LEN_1D,zero,unit);
438 set_1d_array(b, LEN_1D, one,unit);
439 set_1d_array(c, LEN_1D, any,frac);
440 set_1d_array(d, LEN_1D, any,frac);
441 set_1d_array(e, LEN_1D, any,frac);
442 } else if (!strcmp(name, "s252")) {
443 set_1d_array(a, LEN_1D,zero,unit);
444 set_1d_array(b, LEN_1D, one,unit);
445 set_1d_array(c, LEN_1D, one,unit);
446 } else if (!strcmp(name, "s253")) {
447 set_1d_array(a, LEN_1D, one,unit);
448 set_1d_array(b, LEN_1D,small,unit);
449 set_1d_array(c, LEN_1D, one,unit);
450 set_1d_array(d, LEN_1D, any,frac);
451 } else if (!strcmp(name, "s254")) {
452 set_1d_array(a, LEN_1D,zero,unit);
453 set_1d_array(b, LEN_1D, one,unit);
454 } else if (!strcmp(name, "s255")) {
455 set_1d_array(a, LEN_1D,zero,unit);
456 set_1d_array(b, LEN_1D, one,unit);
457 } else if (!strcmp(name, "s256")) {
458 set_1d_array(a, LEN_1D, one,unit);
459 set_1d_array(d, LEN_1D, two,frac);
460 set_2d_array(aa, two,unit);
461 set_2d_array(bb, one,unit);
462 } else if (!strcmp(name, "s257")) {
463 set_1d_array(a, LEN_1D, one,unit);
464 set_2d_array(aa, two,unit);
465 set_2d_array(bb, one,unit);
466 } else if (!strcmp(name, "s258")) {
467 set_1d_array(a, LEN_1D, any,frac);
468 set_1d_array(b, LEN_1D,zero,unit);
469 set_1d_array(c, LEN_1D, any,frac);
470 set_1d_array(d, LEN_1D, any,frac);
471 set_1d_array(e, LEN_1D,zero,unit);
472 set_2d_array(aa, any,frac);
473 } else if (!strcmp(name, "s261")) {
474 set_1d_array(a, LEN_1D, one,unit);
475 set_1d_array(b, LEN_1D, any,frac2);
476 set_1d_array(c, LEN_1D, any,frac2);
477 set_1d_array(d, LEN_1D, one,unit);
478 } else if (!strcmp(name, "s271")) {
479 set_1d_array(a, LEN_1D, one,unit);
480 set_1d_array(b, LEN_1D, any,frac);
481 set_1d_array(c, LEN_1D, any,frac);
482 } else if (!strcmp(name, "s272")) {
483 set_1d_array(a, LEN_1D, one,unit);
484 set_1d_array(b, LEN_1D, one,unit);
485 set_1d_array(c, LEN_1D, any,frac);
486 set_1d_array(d, LEN_1D, any,frac);
487 set_1d_array(e, LEN_1D, two,unit);
488 } else if (!strcmp(name, "s273")) {
489 set_1d_array(a, LEN_1D, one,unit);
490 set_1d_array(b, LEN_1D, one,unit);
491 set_1d_array(c, LEN_1D, one,unit);
492 set_1d_array(d, LEN_1D,small,unit);
493 set_1d_array(e, LEN_1D, any,frac);
494 } else if (!strcmp(name, "s274")) {
495 set_1d_array(a, LEN_1D,zero,unit);
496 set_1d_array(b, LEN_1D, one,unit);
497 set_1d_array(c, LEN_1D, one,unit);
498 set_1d_array(d, LEN_1D, any,frac);
499 set_1d_array(e, LEN_1D, any,frac);
500 } else if (!strcmp(name, "s275")) {
501 set_2d_array(aa, one,unit);
502 set_2d_array(bb,small,unit);
503 set_2d_array(cc,small,unit);
504 } else if (!strcmp(name, "s276")) {
505 set_1d_array(a, LEN_1D, one,unit);
506 set_1d_array(b, LEN_1D, any,frac);
507 set_1d_array(c, LEN_1D, any,frac);
508 set_1d_array(d, LEN_1D, any,frac);
509 } else if (!strcmp(name, "s277")) {
510 set_1d_array(a, LEN_1D, one,unit);
511 set_1d_array( b, LEN_1D/2, one,unit);
512 set_1d_array( &b[LEN_1D/2], LEN_1D/2,-one,unit);
513 set_1d_array(c, LEN_1D, any,frac);
514 set_1d_array(d, LEN_1D, any,frac);
515 set_1d_array(e, LEN_1D, any,frac);
516 } else if (!strcmp(name, "s278")) {
517 set_1d_array( a, LEN_1D/2,-one,unit);
518 set_1d_array( &a[LEN_1D/2], LEN_1D/2,one,unit);
519 set_1d_array(b, LEN_1D, one,unit);
520 set_1d_array(c, LEN_1D, any,frac);
521 set_1d_array(d, LEN_1D, any,frac);
522 set_1d_array(e, LEN_1D, any,frac);
523 } else if (!strcmp(name, "s279")) {
524 set_1d_array( a, LEN_1D/2,-one,unit);
525 set_1d_array( &a[LEN_1D/2], LEN_1D/2,one,unit);
526 // set_1d_array(a, LEN_1D, -one,unit);
527 set_1d_array(b, LEN_1D, one,unit);
528 set_1d_array(c, LEN_1D, any,frac);
529 set_1d_array(d, LEN_1D, any,frac);
530 set_1d_array(e, LEN_1D, any,frac);
531 } else if (!strcmp(name, "s2710")) {
532 set_1d_array(a, LEN_1D, one,unit);
533 set_1d_array(b, LEN_1D, one,unit);
534 set_1d_array(c, LEN_1D, any,frac);
535 set_1d_array(d, LEN_1D, any,frac);
536 set_1d_array(e, LEN_1D, any,frac);
537 } else if (!strcmp(name, "s2711")) {
538 set_1d_array(a, LEN_1D, one,unit);
539 set_1d_array(b, LEN_1D, any,frac);
540 set_1d_array(c, LEN_1D, any,frac);
541 } else if (!strcmp(name, "s2712")) {
542 set_1d_array(a, LEN_1D, one,unit);
543 set_1d_array(b, LEN_1D, any,frac);
544 set_1d_array(c, LEN_1D, any,frac);
545 } else if (!strcmp(name, "s281")) {
546 set_1d_array(a, LEN_1D,zero,unit);
547 set_1d_array(b, LEN_1D, one,unit);
548 set_1d_array(c, LEN_1D, one,unit);
549 } else if (!strcmp(name, "1s281")) {
550 set_1d_array(a, LEN_1D,zero,unit);
551 set_1d_array(b, LEN_1D, one,unit);
552 set_1d_array(c, LEN_1D, one,unit);
553 set_1d_array(d, LEN_1D, one,unit);
554 set_1d_array(e, LEN_1D, one,unit);
555 set_1d_array(x, LEN_1D, one,unit);
556 } else if (!strcmp(name, "s291")) {
557 set_1d_array(a, LEN_1D,zero,unit);
558 set_1d_array(b, LEN_1D, one,unit);
559 } else if (!strcmp(name, "s292")) {
560 set_1d_array(a, LEN_1D,zero,unit);
561 set_1d_array(b, LEN_1D, one,unit);
562 } else if (!strcmp(name, "s293")) {
563 set_1d_array(a, LEN_1D, any,frac);
564 } else if (!strcmp(name, "s2101")) {
565 set_2d_array(aa, one,unit);
566 set_2d_array(bb, any,frac);
567 set_2d_array(cc, any,frac);
568 } else if (!strcmp(name, "s2102")) {
569 set_2d_array(aa,zero,unit);
570 } else if (!strcmp(name, "s2111")) {
571 set_2d_array(aa, small,unit);
572 } else if (!strcmp(name, "s311")) {
573 set_1d_array(a, LEN_1D, any,frac);
574 } else if (!strcmp(name, "s312")) {
575 set_1d_array(a, LEN_1D,1.000001,unit);
576 } else if (!strcmp(name, "s313")) {
577 set_1d_array(a, LEN_1D, any,frac);
578 set_1d_array(b, LEN_1D, any,frac);
579 } else if (!strcmp(name, "s314")) {
580 set_1d_array(a, LEN_1D, any,frac);
581 } else if (!strcmp(name, "s315")) {
582 set_1d_array(a, LEN_1D, any,frac);
583 } else if (!strcmp(name, "s316")) {
584 set_1d_array(a, LEN_1D, any,frac);
585 } else if (!strcmp(name, "s317")) {
586 } else if (!strcmp(name, "s318")) {
587 set_1d_array(a, LEN_1D, any,frac);
588 a[LEN_1D-1] = -two;
589 } else if (!strcmp(name, "s319")) {
590 set_1d_array(a, LEN_1D,zero,unit);
591 set_1d_array(b, LEN_1D,zero,unit);
592 set_1d_array(c, LEN_1D, any,frac);
593 set_1d_array(d, LEN_1D, any,frac);
594 set_1d_array(e, LEN_1D, any,frac);
595 } else if (!strcmp(name, "s3110")) {
596 set_2d_array(aa, any,frac);
597 aa[LEN_2D-1][LEN_2D-1] = two;
598 } else if (!strcmp(name, "s3111")) {
599 set_1d_array(a, LEN_1D, any,frac);
600 } else if (!strcmp(name, "s3112")) {
601 set_1d_array(a, LEN_1D, any,frac2);
602 set_1d_array(b, LEN_1D,zero,unit);
603 } else if (!strcmp(name, "s3113")) {
604 set_1d_array(a, LEN_1D, any,frac);
605 a[LEN_1D-1] = -two;
606 } else if (!strcmp(name, "s321")) {
607 set_1d_array(a, LEN_1D, one,unit);
608 set_1d_array(b, LEN_1D,zero,unit);
609 } else if (!strcmp(name, "s322")) {
610 set_1d_array(a, LEN_1D, one,unit);
611 set_1d_array(b, LEN_1D,zero,unit);
612 set_1d_array(c, LEN_1D,zero,unit);
613 } else if (!strcmp(name, "s323")) {
614 set_1d_array(a, LEN_1D, one,unit);
615 set_1d_array(b, LEN_1D, one,unit);
616 set_1d_array(c, LEN_1D, any,frac);
617 set_1d_array(d, LEN_1D, any,frac);
618 set_1d_array(e, LEN_1D, any,frac);
619 } else if (!strcmp(name, "s331")) {
620 set_1d_array(a, LEN_1D, any,frac);
621 a[LEN_1D-1] = -one;
622 } else if (!strcmp(name, "s332")) {
623 set_1d_array(a, LEN_1D, any,frac2);
624 a[LEN_1D-1] = two;
625 } else if (!strcmp(name, "s341")) {
626 set_1d_array(a, LEN_1D,zero,unit);
627 set_1d_array(b, LEN_1D, any,frac);
628 } else if (!strcmp(name, "s342")) {
629 set_1d_array(a, LEN_1D, any,frac);
630 set_1d_array(b, LEN_1D, any,frac);
631 } else if (!strcmp(name, "s343")) {
632 set_2d_array(aa, any,frac);
633 set_2d_array(bb, one,unit);
634 } else if (!strcmp(name, "s351")) {
635 set_1d_array(a, LEN_1D, one,unit);
636 set_1d_array(b, LEN_1D, one,unit);
637 c[0] = 1.;
638 } else if (!strcmp(name, "s352")) {
639 set_1d_array(a, LEN_1D, any,frac);
640 set_1d_array(b, LEN_1D, any,frac);
641 } else if (!strcmp(name, "s353")) {
642 set_1d_array(a, LEN_1D, one,unit);
643 set_1d_array(b, LEN_1D, one,unit);
644 c[0] = 1.;
645 } else if (!strcmp(name, "s411")) {
646 set_1d_array(a, LEN_1D, one,unit);
647 set_1d_array(b, LEN_1D, any,frac);
648 set_1d_array(c, LEN_1D, any,frac);
649 } else if (!strcmp(name, "s412")) {
650 set_1d_array(a, LEN_1D, one,unit);
651 set_1d_array(b, LEN_1D, any,frac);
652 set_1d_array(c, LEN_1D, any,frac);
653 } else if (!strcmp(name, "s413")) {
654 set_1d_array(a, LEN_1D,zero,unit);
655 set_1d_array(b, LEN_1D, one,unit);
656 set_1d_array(c, LEN_1D, one,unit);
657 set_1d_array(d, LEN_1D, any,frac);
658 set_1d_array(e, LEN_1D, any,frac);
659 } else if (!strcmp(name, "s414")) {
660 set_2d_array(aa, one,unit);
661 set_2d_array(bb, any,frac);
662 set_2d_array(cc, any,frac);
663 } else if (!strcmp(name, "s415")) {
664 set_1d_array(a, LEN_1D, one,unit);
665 set_1d_array(b, LEN_1D, any,frac);
666 set_1d_array(c, LEN_1D, any,frac);
667 a[LEN_1D-1] = -one;
668 } else if (!strcmp(name, "s421")) {
669 set_1d_array(a, LEN_1D, any,frac2);
670 set_1d_array(flat_2d_array, LEN_1D, one, unit);
671 } else if (!strcmp(name, "s422")) {
672 set_1d_array(flat_2d_array, LEN_1D,one,unit);
673 set_1d_array(a, LEN_1D, any,frac2);
674 set_1d_array(flat_2d_array + LEN_1D, LEN_1D, zero, unit);
675 } else if (!strcmp(name, "s1421")) {
676 set_1d_array(b, LEN_1D, one, unit);
677 } else if (!strcmp(name, "s423")) {
678 set_1d_array(flat_2d_array, LEN_1D,zero,unit);
679 set_1d_array(a, LEN_1D, any,frac2);
680 set_1d_array(flat_2d_array + LEN_1D, LEN_1D, one, unit);
681 } else if (!strcmp(name, "s424")) {
682 set_1d_array(flat_2d_array, LEN_1D,one,unit);
683 set_1d_array(a, LEN_1D, any,frac2);
684 set_1d_array(flat_2d_array, LEN_1D, zero, unit);
685 } else if (!strcmp(name, "s431")) {
686 set_1d_array(a, LEN_1D, one,unit);
687 set_1d_array(b, LEN_1D, any,frac2);
688 } else if (!strcmp(name, "s432")) {
689 set_1d_array(a, LEN_1D, one,unit);
690 set_1d_array(b, LEN_1D, any,frac2);
691 } else if (!strcmp(name, "s441")) {
692 set_1d_array(a, LEN_1D, one,unit);
693 set_1d_array(b, LEN_1D, any,frac);
694 set_1d_array(c, LEN_1D, any,frac);
695 set_1d_array(&d[0], LEN_1D/3 , -one,unit);
696 set_1d_array(&d[LEN_1D/3], LEN_1D/3 , zero,unit);
697 set_1d_array(&d[(2*LEN_1D/3)], LEN_1D/3+1, one,unit);
698 } else if (!strcmp(name, "s442")) {
699 set_1d_array(a, LEN_1D, one,unit);
700 set_1d_array(b, LEN_1D, any,frac);
701 set_1d_array(c, LEN_1D, any,frac);
702 set_1d_array(d, LEN_1D, any,frac);
703 set_1d_array(e, LEN_1D, any,frac);
704 } else if (!strcmp(name, "s443")) {
705 set_1d_array(a, LEN_1D, one,unit);
706 set_1d_array(b, LEN_1D, any,frac);
707 set_1d_array(c, LEN_1D, any,frac);
708 } else if (!strcmp(name, "s451")) {
709 set_1d_array(b, LEN_1D, any,frac);
710 set_1d_array(c, LEN_1D, any,frac);
711 } else if (!strcmp(name, "s452")) {
712 set_1d_array(a, LEN_1D,zero,unit);
713 set_1d_array(b, LEN_1D, one,unit);
714 set_1d_array(c, LEN_1D,small,unit);
715 } else if (!strcmp(name, "s453")) {
716 set_1d_array(a, LEN_1D,zero,unit);
717 set_1d_array(b, LEN_1D, any,frac2);
718 } else if (!strcmp(name, "s471")) {
719 set_1d_array(a, LEN_1D, one,unit);
720 set_1d_array(b, LEN_1D, one,unit);
721 set_1d_array(c, LEN_1D, one,unit);
722 set_1d_array(d, LEN_1D, any,frac);
723 set_1d_array(e, LEN_1D, any,frac);
724 set_1d_array(x, LEN_1D, zero, unit);
725 } else if (!strcmp(name, "s481")) {
726 set_1d_array(a, LEN_1D, one,unit);
727 set_1d_array(b, LEN_1D, any,frac);
728 set_1d_array(c, LEN_1D, any,frac);
729 set_1d_array(d, LEN_1D, any,frac);
730 } else if (!strcmp(name, "s482")) {
731 set_1d_array(a, LEN_1D, one,unit);
732 set_1d_array(b, LEN_1D, any,frac);
733 set_1d_array(c, LEN_1D, any,frac);
734 } else if (!strcmp(name, "s491")) {
735 set_1d_array(a, LEN_1D,zero,unit);
736 set_1d_array(b, LEN_1D, one,unit);
737 set_1d_array(c, LEN_1D, any,frac);
738 set_1d_array(d, LEN_1D, any,frac);
739 } else if (!strcmp(name, "s4112")) {
740 set_1d_array(a, LEN_1D, one,unit);
741 set_1d_array(b, LEN_1D, any,frac);
742 } else if (!strcmp(name, "s4113")) {
743 set_1d_array(a, LEN_1D,zero,unit);
744 set_1d_array(b, LEN_1D, one,unit);
745 set_1d_array(c, LEN_1D, any,frac2);
746 } else if (!strcmp(name, "s4114")) {
747 set_1d_array(a, LEN_1D,zero,unit);
748 set_1d_array(b, LEN_1D, one,unit);
749 set_1d_array(c, LEN_1D, any,frac);
750 set_1d_array(d, LEN_1D, any,frac);
751 } else if (!strcmp(name, "s4115")) {
752 set_1d_array(a, LEN_1D, any,frac);
753 set_1d_array(b, LEN_1D, any,frac);
754 } else if (!strcmp(name, "s4116")) {
755 set_1d_array(a, LEN_1D, any,frac);
756 set_2d_array(aa, any,frac);
757 } else if (!strcmp(name, "s4117")) {
758 set_1d_array(a, LEN_1D,zero,unit);
759 set_1d_array(b, LEN_1D, one,unit);
760 set_1d_array(c, LEN_1D, any,frac);
761 set_1d_array(d, LEN_1D, any,frac);
762 } else if (!strcmp(name, "s4121")) {
763 set_1d_array(a, LEN_1D, one,unit);
764 set_1d_array(b, LEN_1D, any,frac);
765 set_1d_array(c, LEN_1D, any,frac);
766 } else if (!strcmp(name, "va")) {
767 set_1d_array(a, LEN_1D,zero,unit);
768 set_1d_array(b, LEN_1D, any,frac2);
769 } else if (!strcmp(name, "vag")) {
770 set_1d_array(a, LEN_1D,zero,unit);
771 set_1d_array(b, LEN_1D, any,frac2);
772 } else if (!strcmp(name, "vas")) {
773 set_1d_array(a, LEN_1D,zero,unit);
774 set_1d_array(b, LEN_1D, any,frac2);
775 } else if (!strcmp(name, "vif")) {
776 set_1d_array(a, LEN_1D,zero,unit);
777 set_1d_array(b, LEN_1D, any,frac2);
778 } else if (!strcmp(name, "vpv")) {
779 set_1d_array(a, LEN_1D,zero,unit);
780 set_1d_array(b, LEN_1D, any,frac2);
781 } else if (!strcmp(name, "vtv")) {
782 set_1d_array(a, LEN_1D, one,unit);
783 set_1d_array(b, LEN_1D, one,unit);
784 } else if (!strcmp(name, "vpvtv")) {
785 set_1d_array(a, LEN_1D, one,unit);
786 set_1d_array(b, LEN_1D, any,frac);
787 set_1d_array(c, LEN_1D, any,frac);
788 } else if (!strcmp(name, "vpvts")) {
789 set_1d_array(a, LEN_1D, one,unit);
790 set_1d_array(b, LEN_1D, any,frac2);
791 } else if (!strcmp(name, "vpvpv")) {
792 set_1d_array(a, LEN_1D, any,frac2);
793 set_1d_array(b, LEN_1D, one,unit);
794 set_1d_array(c, LEN_1D,-one,unit);
795 } else if (!strcmp(name, "vtvtv")) {
796 set_1d_array(a, LEN_1D, one,unit);
797 set_1d_array(b, LEN_1D, two,unit);
798 set_1d_array(c, LEN_1D,half,unit);
799 } else if (!strcmp(name, "vsumr")) {
800 set_1d_array(a, LEN_1D, any,frac);
801 } else if (!strcmp(name, "vdotr")) {
802 set_1d_array(a, LEN_1D, any,frac);
803 set_1d_array(b, LEN_1D, any,frac);
804 } else if (!strcmp(name, "vbor")) {
805 set_1d_array(a, LEN_1D, any,frac);
806 set_1d_array(b, LEN_1D, any,frac);
807 set_1d_array(c, LEN_1D, one,frac);
808 set_1d_array(d, LEN_1D, two,frac);
809 set_1d_array(e, LEN_1D,half,frac);
810 set_2d_array(aa, any,frac);
811 } else {
812 set_1d_array(a, LEN_1D, any,frac);
813 set_1d_array(b, LEN_1D, any,frac);
814 set_1d_array(c, LEN_1D, one,frac);
815 set_1d_array(d, LEN_1D, two,frac);
816 set_1d_array(e, LEN_1D,half,frac);
817 set_2d_array(aa, half,frac);
818 set_2d_array(bb, one,frac);
819 set_2d_array(cc, any,frac);
822 return 0;
825 real_t calc_checksum(const char * name)
827 if (!strcmp(name, "s000")) {
828 return sum_a();
829 } else if (!strcmp(name, "s111")) {
830 return sum_a();
831 } else if (!strcmp(name, "s1111")) {
832 return sum_a();
833 } else if (!strcmp(name, "s112")) {
834 return sum_a();
835 } else if (!strcmp(name, "s1112")) {
836 return sum_a();
837 } else if (!strcmp(name, "s113")) {
838 return sum_a();
839 } else if (!strcmp(name, "s1113")) {
840 return sum_a();
841 } else if (!strcmp(name, "s114")) {
842 return sum_aa();
843 } else if (!strcmp(name, "s115")) {
844 return sum_a();
845 } else if (!strcmp(name, "s1115")) {
846 return sum_aa();
847 } else if (!strcmp(name, "s116")) {
848 return sum_a();
849 } else if (!strcmp(name, "s118")) {
850 return sum_a();
851 } else if (!strcmp(name, "s119")) {
852 return sum_aa();
853 } else if (!strcmp(name, "s1119")) {
854 return sum_aa();
855 } else if (!strcmp(name, "s121")) {
856 return sum_a();
857 } else if (!strcmp(name, "s122")) {
858 return sum_a();
859 } else if (!strcmp(name, "s123")) {
860 return sum_a();
861 } else if (!strcmp(name, "s124")) {
862 return sum_a();
863 } else if (!strcmp(name, "s125")) {
864 return sum_flat_2d_array();
865 } else if (!strcmp(name, "s126")) {
866 return sum_bb();
867 } else if (!strcmp(name, "s127")) {
868 return sum_a();
869 } else if (!strcmp(name, "s128")) {
870 return sum_a() + sum_b();
871 } else if (!strcmp(name, "s131")) {
872 return sum_a();
873 } else if (!strcmp(name, "s132")) {
874 return sum_aa();
875 } else if (!strcmp(name, "s141")) {
876 return sum_flat_2d_array();
877 } else if (!strcmp(name, "s151")) {
878 return sum_a();
879 } else if (!strcmp(name, "s152")) {
880 return sum_a();
881 } else if (!strcmp(name, "s161")) {
882 return sum_a() + sum_c();
883 } else if (!strcmp(name, "s1161")) {
884 return sum_a() + sum_c();
885 } else if (!strcmp(name, "s162")) {
886 return sum_a();
887 } else if (!strcmp(name, "s171")) {
888 return sum_a();
889 } else if (!strcmp(name, "s172")) {
890 return sum_a();
891 } else if (!strcmp(name, "s173")) {
892 return sum_a();
893 } else if (!strcmp(name, "s174")) {
894 return sum_a();
895 } else if (!strcmp(name, "s175")) {
896 return sum_a();
897 } else if (!strcmp(name, "s176")) {
898 return sum_a();
899 } else if (!strcmp(name, "s211")) {
900 return sum_a() + sum_b();
901 } else if (!strcmp(name, "s212")) {
902 return sum_a() + sum_b();
903 } else if (!strcmp(name, "s1213")) {
904 return sum_a() + sum_b();
905 } else if (!strcmp(name, "s221")) {
906 return sum_a() + sum_b();
907 } else if (!strcmp(name, "s1221")) {
908 return sum_a() + sum_b();
909 } else if (!strcmp(name, "s222")) {
910 return sum_a() + sum_b();
911 } else if (!strcmp(name, "s231")) {
912 return sum_aa();
913 } else if (!strcmp(name, "s232")) {
914 return sum_aa();
915 } else if (!strcmp(name, "s1232")) {
916 return sum_aa();
917 } else if (!strcmp(name, "s233")) {
918 return sum_aa_bb();
919 } else if (!strcmp(name, "s2233")) {
920 return sum_aa_bb();
921 } else if (!strcmp(name, "s235")) {
922 return sum_a() + sum_b();
923 } else if (!strcmp(name, "s241")) {
924 return sum_a() + sum_b();
925 } else if (!strcmp(name, "s242")) {
926 return sum_a();
927 } else if (!strcmp(name, "s243")) {
928 return sum_a() + sum_b();
929 } else if (!strcmp(name, "s244")) {
930 return sum_a() + sum_b();
931 } else if (!strcmp(name, "s1244")) {
932 return sum_a() + sum_b();
933 } else if (!strcmp(name, "s2244")) {
934 return sum_a() + sum_b();
935 } else if (!strcmp(name, "s251")) {
936 return sum_a();
937 } else if (!strcmp(name, "s1251")) {
938 return sum_a();
939 } else if (!strcmp(name, "s2251")) {
940 return sum_a();
941 } else if (!strcmp(name, "s3251")) {
942 return sum_a();
943 } else if (!strcmp(name, "s252")) {
944 return sum_a();
945 } else if (!strcmp(name, "s253")) {
946 return sum_a() + sum_c();
947 } else if (!strcmp(name, "s254")) {
948 return sum_a();
949 } else if (!strcmp(name, "s255")) {
950 return sum_a();
951 } else if (!strcmp(name, "s256")) {
952 return sum_a_aa();
953 } else if (!strcmp(name, "s257")) {
954 return sum_a_aa();
955 } else if (!strcmp(name, "s258")) {
956 return sum_b() + sum_e();
957 } else if (!strcmp(name, "s261")) {
958 return sum_a() + sum_c();
959 } else if (!strcmp(name, "s271")) {
960 return sum_a();
961 } else if (!strcmp(name, "s272")) {
962 return sum_a() + sum_b();
963 } else if (!strcmp(name, "s273")) {
964 return sum_a() + sum_b() + sum_c();
965 } else if (!strcmp(name, "s274")) {
966 return sum_a() + sum_b();
967 } else if (!strcmp(name, "s275")) {
968 return sum_aa();
969 } else if (!strcmp(name, "s2275")) {
970 return sum_aa();
971 } else if (!strcmp(name, "s276")) {
972 return sum_a();
973 } else if (!strcmp(name, "s277")) {
974 return sum_a() + sum_b();
975 } else if (!strcmp(name, "s278")) {
976 return sum_a() + sum_b() + sum_c();
977 } else if (!strcmp(name, "s279")) {
978 return sum_a() + sum_b() + sum_c();
979 } else if (!strcmp(name, "s1279")) {
980 return sum_a() + sum_b() + sum_c();
981 } else if (!strcmp(name, "s2710")) {
982 return sum_a() + sum_b() + sum_c();
983 } else if (!strcmp(name, "s2711")) {
984 return sum_a();
985 } else if (!strcmp(name, "s2712")) {
986 return sum_a();
987 } else if (!strcmp(name, "s281")) {
988 return sum_a() + sum_b();
989 } else if (!strcmp(name, "s1281")) {
990 return sum_a() + sum_b();
991 } else if (!strcmp(name, "s291")) {
992 return sum_a();
993 } else if (!strcmp(name, "s292")) {
994 return sum_a();
995 } else if (!strcmp(name, "s293")) {
996 return sum_a();
997 } else if (!strcmp(name, "s2101")) {
998 return sum_aa();
999 } else if (!strcmp(name, "s2102")) {
1000 return sum_aa();
1001 } else if (!strcmp(name, "s2111")) {
1002 return sum_aa();
1003 } else if (!strcmp(name, "s311")) {
1004 return sum_a();
1005 } else if (!strcmp(name, "s31111")) {
1006 return sum_a();
1007 } else if (!strcmp(name, "s321")) {
1008 return sum_a();
1009 } else if (!strcmp(name, "s322")) {
1010 return sum_a();
1011 } else if (!strcmp(name, "s323")) {
1012 return sum_a() + sum_b();
1013 } else if (!strcmp(name, "s341")) {
1014 return sum_a();
1015 } else if (!strcmp(name, "s342")) {
1016 return sum_a();
1017 } else if (!strcmp(name, "s343")) {
1018 return sum_flat_2d_array();
1019 } else if (!strcmp(name, "s351")) {
1020 return sum_a();
1021 } else if (!strcmp(name, "s1351")) {
1022 return sum_a();
1023 } else if (!strcmp(name, "s353")) {
1024 return sum_a();
1025 } else if (!strcmp(name, "s421")) {
1026 return sum_xx();
1027 } else if (!strcmp(name, "s1421")) {
1028 return sum_half_xx();
1029 } else if (!strcmp(name, "s422")) {
1030 return sum_xx();
1031 } else if (!strcmp(name, "s423")) {
1032 return sum_flat_2d_array();
1033 } else if (!strcmp(name, "s424")) {
1034 return sum_xx();
1035 } else if (!strcmp(name, "s431")) {
1036 return sum_a();
1037 } else if (!strcmp(name, "s441")) {
1038 return sum_a();
1039 } else if (!strcmp(name, "s442")) {
1040 return sum_a();
1041 } else if (!strcmp(name, "s443")) {
1042 return sum_a();
1043 } else if (!strcmp(name, "s451")) {
1044 return sum_a();
1045 } else if (!strcmp(name, "s452")) {
1046 return sum_a();
1047 } else if (!strcmp(name, "s453")) {
1048 return sum_a();
1049 } else if (!strcmp(name, "s471")) {
1050 return sum_x() + sum_b();
1051 } else if (!strcmp(name, "s481")) {
1052 return sum_a();
1053 } else if (!strcmp(name, "s482")) {
1054 return sum_a();
1055 } else if (!strcmp(name, "s491")) {
1056 return sum_a();
1057 } else if (!strcmp(name, "s4112")) {
1058 return sum_a();
1059 } else if (!strcmp(name, "s4113")) {
1060 return sum_a();
1061 } else if (!strcmp(name, "s4114")) {
1062 return sum_a();
1063 } else if (!strcmp(name, "s4117")) {
1064 return sum_a();
1065 } else if (!strcmp(name, "s4121")) {
1066 return sum_a();
1067 } else if (!strcmp(name, "va")) {
1068 return sum_a();
1069 } else if (!strcmp(name, "vag")) {
1070 return sum_a();
1071 } else if (!strcmp(name, "vas")) {
1072 return sum_a();
1073 } else if (!strcmp(name, "vif")) {
1074 return sum_a();
1075 } else if (!strcmp(name, "vpv")) {
1076 return sum_a();
1077 } else if (!strcmp(name, "vtv")) {
1078 return sum_a();
1079 } else if (!strcmp(name, "vpvtv")) {
1080 return sum_a();
1081 } else if (!strcmp(name, "vpvts")) {
1082 return sum_a();
1083 } else if (!strcmp(name, "vpvpv")) {
1084 return sum_a();
1085 } else if (!strcmp(name, "vtvtv")) {
1086 return sum_a();
1087 } else if (!strcmp(name, "vsumr")) {
1088 return sum_a();
1089 } else if (!strcmp(name, "vbor")) {
1090 return sum_x();
1091 } else {
1092 fprintf(stderr, "Unknown function name passed to calc_checksum: %s\n", name);
1093 exit(1);
1097 real_t get_expected_result(const char * name)
1099 if (!name) {
1100 fprintf(stderr, "NULL name passed to expected_result.\n");
1101 exit(1);
1102 #if iterations == 10000
1103 } else if (!strcmp(name, "s000")) {
1104 return 512075584.f;
1105 } else if (!strcmp(name, "s111")) {
1106 return 32000.410156f;
1107 } else if (!strcmp(name, "s1111")) {
1108 return 13.352669f;
1109 } else if (!strcmp(name, "s112")) {
1110 return 81335.929688f;
1111 } else if (!strcmp(name, "s1112")) {
1112 return 32009.560547f;
1113 } else if (!strcmp(name, "s113")) {
1114 return 32000.642578f;
1115 } else if (!strcmp(name, "s1113")) {
1116 return 40010.613281f;
1117 } else if (!strcmp(name, "s114")) {
1118 return 919.856323f;
1119 } else if (!strcmp(name, "s115")) {
1120 return 31727.289062f;
1121 } else if (!strcmp(name, "s1115")) {
1122 return 25487.052734f;
1123 } else if (!strcmp(name, "s116")) {
1124 return 32000.f;
1125 } else if (!strcmp(name, "s118")) {
1126 return 32353.884766f;
1127 } else if (!strcmp(name, "s119")) {
1128 return 86338.984375f;
1129 } else if (!strcmp(name, "s1119")) {
1130 return 201466.421875f;
1131 } else if (!strcmp(name, "s121")) {
1132 return 32009.027344f;
1133 } else if (!strcmp(name, "s122")) {
1134 return 48446.664062f;
1135 } else if (!strcmp(name, "s123")) {
1136 return 32003.285156f;
1137 } else if (!strcmp(name, "s124")) {
1138 return 32001.642578f;
1139 } else if (!strcmp(name, "s125")) {
1140 return 131072.f;
1141 } else if (!strcmp(name, "s126")) {
1142 return 66955.132812f;
1143 } else if (!strcmp(name, "s127")) {
1144 return 32003.285156f;
1145 } else if (!strcmp(name, "s128")) {
1146 return 80000.f;
1147 } else if (!strcmp(name, "s131")) {
1148 return 32009.027344f;
1149 } else if (!strcmp(name, "s132")) {
1150 return 65538.5625f;
1151 } else if (!strcmp(name, "s141")) {
1152 return 3307351.5f;
1153 } else if (!strcmp(name, "s151")) {
1154 return 32009.027344f;
1155 } else if (!strcmp(name, "s152")) {
1156 return 44020.523438f;
1157 } else if (!strcmp(name, "s161")) {
1158 return 64002.054688f;
1159 } else if (!strcmp(name, "s1161")) {
1160 return 23.546331f;
1161 } else if (!strcmp(name, "s162")) {
1162 return 32009.023438f;
1163 } else if (!strcmp(name, "s171")) {
1164 return 48448.019531f;
1165 } else if (!strcmp(name, "s172")) {
1166 return 48448.019531f;
1167 } else if (!strcmp(name, "s173")) {
1168 return 32001.626953f;
1169 } else if (!strcmp(name, "s174")) {
1170 return 32001.626953f;
1171 } else if (!strcmp(name, "s175")) {
1172 return 32009.023438f;
1173 } else if (!strcmp(name, "s176")) {
1174 return 32063.902344f;
1175 } else if (!strcmp(name, "s211")) {
1176 return 63983.308594f;
1177 } else if (!strcmp(name, "s212")) {
1178 return 42008.136719f;
1179 } else if (!strcmp(name, "s1213")) {
1180 return 14.450508f;
1181 } else if (!strcmp(name, "s221")) {
1182 return 615418176.f;
1183 } else if (!strcmp(name, "s1221")) {
1184 return 79623.265625f;
1185 } else if (!strcmp(name, "s222")) {
1186 return 32000.f;
1187 } else if (!strcmp(name, "s231")) {
1188 return 119107.445312f;
1189 } else if (!strcmp(name, "s232")) {
1190 return 65536.f;
1191 } else if (!strcmp(name, "s1232")) {
1192 return 2885.801514f;
1193 } else if (!strcmp(name, "s233")) {
1194 return 504911.65625f;
1195 } else if (!strcmp(name, "s2233")) {
1196 return 337652.8125f;
1197 } else if (!strcmp(name, "s235")) {
1198 return 44810.886719f;
1199 } else if (!strcmp(name, "s241")) {
1200 return 64000.f;
1201 } else if (!strcmp(name, "s242")) {
1202 return 1535966208.f;
1203 } else if (!strcmp(name, "s243")) {
1204 return 138653.21875f;
1205 } else if (!strcmp(name, "s244")) {
1206 return 64623.015625f;
1207 } else if (!strcmp(name, "s1244")) {
1208 return 36.141911f;
1209 } else if (!strcmp(name, "s2244")) {
1210 return 32.852161f;
1211 } else if (!strcmp(name, "s251")) {
1212 return 32004.367188f;
1213 } else if (!strcmp(name, "s1251")) {
1214 return 39967.507812f;
1215 } else if (!strcmp(name, "s2251")) {
1216 return 2.635388f;
1217 } else if (!strcmp(name, "s3251")) {
1218 return 13.59558f;
1219 } else if (!strcmp(name, "s252")) {
1220 return 63999.f;
1221 } else if (!strcmp(name, "s253")) {
1222 return 320115936.f;
1223 } else if (!strcmp(name, "s254")) {
1224 return 32000.f;
1225 } else if (!strcmp(name, "s255")) {
1226 return 31953.501953f;
1227 } else if (!strcmp(name, "s256")) {
1228 return 66207.828125f;
1229 } else if (!strcmp(name, "s257")) {
1230 return 163072.f;
1231 } else if (!strcmp(name, "s258")) {
1232 return 14.65278f;
1233 } else if (!strcmp(name, "s261")) {
1234 return 54894.515625f;
1235 } else if (!strcmp(name, "s271")) {
1236 return 97793.570312f;
1237 } else if (!strcmp(name, "s272")) {
1238 return 64000.f;
1239 } else if (!strcmp(name, "s273")) {
1240 return 96311.546875f;
1241 } else if (!strcmp(name, "s274")) {
1242 return 320133920.f;
1243 } else if (!strcmp(name, "s275")) {
1244 return 65536.f;
1245 } else if (!strcmp(name, "s2275")) {
1246 return 1640158.5f;
1247 } else if (!strcmp(name, "s276")) {
1248 return 97793.570312f;
1249 } else if (!strcmp(name, "s277")) {
1250 return 32000.f;
1251 } else if (!strcmp(name, "s278")) {
1252 return 64012.589844f;
1253 } else if (!strcmp(name, "s279")) {
1254 return 64014.289062f;
1255 } else if (!strcmp(name, "s1279")) {
1256 return 32.852161f;
1257 } else if (!strcmp(name, "s2710")) {
1258 return 96003.28125f;
1259 } else if (!strcmp(name, "s2711")) {
1260 return 97793.570312f;
1261 } else if (!strcmp(name, "s2712")) {
1262 return 97793.570312f;
1263 } else if (!strcmp(name, "s281")) {
1264 return 32000.f;
1265 } else if (!strcmp(name, "s1281")) {
1266 return INFINITY;
1267 } else if (!strcmp(name, "s291")) {
1268 return 32000.f;
1269 } else if (!strcmp(name, "s292")) {
1270 return 31953.501953f;
1271 } else if (!strcmp(name, "s293")) {
1272 return 31999.998047f;
1273 } else if (!strcmp(name, "s2101")) {
1274 return 229657.921875f;
1275 } else if (!strcmp(name, "s2102")) {
1276 return 256.f;
1277 } else if (!strcmp(name, "s2111")) {
1278 return 34544940.f;
1279 } else if (!strcmp(name, "s311")) {
1280 return 10.950721f;
1281 } else if (!strcmp(name, "s31111")) {
1282 return 10.950721f;
1283 } else if (!strcmp(name, "s312")) {
1284 return 1.030869f;
1285 } else if (!strcmp(name, "s313")) {
1286 return 1.644824f;
1287 } else if (!strcmp(name, "s314")) {
1288 return 1.f;
1289 } else if (!strcmp(name, "s315")) {
1290 return 54857.f;
1291 } else if (!strcmp(name, "s316")) {
1292 return 0.000031f;
1293 } else if (!strcmp(name, "s317")) {
1294 return 0.f;
1295 } else if (!strcmp(name, "s318")) {
1296 return 32002.f;
1297 } else if (!strcmp(name, "s319")) {
1298 return 43.802898f;
1299 } else if (!strcmp(name, "s3110")) {
1300 return 514.f;
1301 } else if (!strcmp(name, "s13110")) {
1302 return 3.f;
1303 } else if (!strcmp(name, "s3111")) {
1304 return 10.950725f;
1305 } else if (!strcmp(name, "s3112")) {
1306 return 1.644725f;
1307 } else if (!strcmp(name, "s3113")) {
1308 return 2.f;
1309 } else if (!strcmp(name, "s321")) {
1310 return 32000.f;
1311 } else if (!strcmp(name, "s322")) {
1312 return 32000.f;
1313 } else if (!strcmp(name, "s323")) {
1314 return 146472.4375f;
1315 } else if (!strcmp(name, "s331")) {
1316 return 32000.f;
1317 } else if (!strcmp(name, "s332")) {
1318 return -1.f;
1319 } else if (!strcmp(name, "s341")) {
1320 return 10.950721f;
1321 } else if (!strcmp(name, "s342")) {
1322 return 10.950721f;
1323 } else if (!strcmp(name, "s343")) {
1324 return 1567.932129f;
1325 } else if (!strcmp(name, "s351")) {
1326 return 2560660224.f;
1327 } else if (!strcmp(name, "s1351")) {
1328 return 21.901442f;
1329 } else if (!strcmp(name, "s352")) {
1330 return 1.644808f;
1331 } else if (!strcmp(name, "s353")) {
1332 return 320084192.f;
1333 } else if (!strcmp(name, "s421")) {
1334 return 32009.023438f;
1335 } else if (!strcmp(name, "s1421")) {
1336 return 16000.f;
1337 } else if (!strcmp(name, "s422")) {
1338 return 3.737715f;
1339 } else if (!strcmp(name, "s423")) {
1340 return 64006.683594f;
1341 } else if (!strcmp(name, "s424")) {
1342 return 822.364014f;
1343 } else if (!strcmp(name, "s431")) {
1344 return 196500.265625f;
1345 } else if (!strcmp(name, "s441")) {
1346 return 48448.019531f;
1347 } else if (!strcmp(name, "s442")) {
1348 return 40224.117188f;
1349 } else if (!strcmp(name, "s443")) {
1350 return 64895.867188f;
1351 } else if (!strcmp(name, "s451")) {
1352 return 32007.898438f;
1353 } else if (!strcmp(name, "s452")) {
1354 return 32511.939453f;
1355 } else if (!strcmp(name, "s453")) {
1356 return 21.901442f;
1357 } else if (!strcmp(name, "s471")) {
1358 return 64004.925781f;
1359 } else if (!strcmp(name, "s481")) {
1360 return 48448.019531f;
1361 } else if (!strcmp(name, "s482")) {
1362 return 48448.019531f;
1363 } else if (!strcmp(name, "s491")) {
1364 return 32001.640625f;
1365 } else if (!strcmp(name, "s4112")) {
1366 return 141504.875f;
1367 } else if (!strcmp(name, "s4113")) {
1368 return 32001.640625f;
1369 } else if (!strcmp(name, "s4114")) {
1370 return 32000.f;
1371 } else if (!strcmp(name, "s4115")) {
1372 return 1.038636f;
1373 } else if (!strcmp(name, "s4116")) {
1374 return 0.753265f;
1375 } else if (!strcmp(name, "s4117")) {
1376 return 32002.205078f;
1377 } else if (!strcmp(name, "s4121")) {
1378 return 48448.019531f;
1379 } else if (!strcmp(name, "va")) {
1380 return 1.644725f;
1381 } else if (!strcmp(name, "vag")) {
1382 return 1.644725f;
1383 } else if (!strcmp(name, "vas")) {
1384 return 1.644725f;
1385 } else if (!strcmp(name, "vif")) {
1386 return 1.644725f;
1387 } else if (!strcmp(name, "vpv")) {
1388 return 164487.78125f;
1389 } else if (!strcmp(name, "vtv")) {
1390 return 32000.f;
1391 } else if (!strcmp(name, "vpvtv")) {
1392 return 97793.570312f;
1393 } else if (!strcmp(name, "vpvts")) {
1394 return 17522152701952.f;
1395 } else if (!strcmp(name, "vpvpv")) {
1396 return 1.644725f;
1397 } else if (!strcmp(name, "vtvtv")) {
1398 return 32000.f;
1399 } else if (!strcmp(name, "vsumr")) {
1400 return 10.950725f;
1401 } else if (!strcmp(name, "vdotr")) {
1402 return 1.644824f;
1403 } else if (!strcmp(name, "vbor")) {
1404 return 31924.046875f;
1405 #elif iterations == 10
1406 } else if (!strcmp (name, "s000")) {
1407 return 512066944.000000f;
1408 } else if (!strcmp (name, "s1111")) {
1409 return 13.352139f;
1410 } else if (!strcmp (name, "s1112")) {
1411 return 32008.869141f;
1412 } else if (!strcmp (name, "s1113")) {
1413 return 51.947979f;
1414 } else if (!strcmp (name, "s1115")) {
1415 return 1567.842896f;
1416 } else if (!strcmp (name, "s1119")) {
1417 return 1567.842896f;
1418 } else if (!strcmp (name, "s111")) {
1419 return 32000.410156f;
1420 } else if (!strcmp (name, "s112")) {
1421 return 32049.320312f;
1422 } else if (!strcmp (name, "s113")) {
1423 return 32000.640625f;
1424 } else if (!strcmp (name, "s114")) {
1425 return 1567.842896f;
1426 } else if (!strcmp (name, "s115")) {
1427 return 32000.000000f;
1428 } else if (!strcmp (name, "s1161")) {
1429 return 23.546333f;
1430 } else if (!strcmp (name, "s116")) {
1431 return 32000.000000f;
1432 } else if (!strcmp (name, "s118")) {
1433 return 32000.000000f;
1434 } else if (!strcmp (name, "s119")) {
1435 return 65536.000000f;
1436 } else if (!strcmp (name, "s1213")) {
1437 return 14.449853f;
1438 } else if (!strcmp (name, "s121")) {
1439 return 32004.953125f;
1440 } else if (!strcmp (name, "s1221")) {
1441 return 79623.273438f;
1442 } else if (!strcmp (name, "s122")) {
1443 return 32016.369141f;
1444 } else if (!strcmp (name, "s1232")) {
1445 return 1567.842896f;
1446 } else if (!strcmp (name, "s123")) {
1447 return 32003.283203f;
1448 } else if (!strcmp (name, "s1244")) {
1449 return 36.141911f;
1450 } else if (!strcmp (name, "s124")) {
1451 return 32001.640625f;
1452 } else if (!strcmp (name, "s1251")) {
1453 return 42.998329f;
1454 } else if (!strcmp (name, "s125")) {
1455 return 0.000000f;
1456 } else if (!strcmp (name, "s126")) {
1457 return 65536.000000f;
1458 } else if (!strcmp (name, "s1279")) {
1459 return 32.852161f;
1460 } else if (!strcmp (name, "s127")) {
1461 return 32003.283203f;
1462 } else if (!strcmp (name, "s1281")) {
1463 return 3298534883328.000000f;
1464 } else if (!strcmp (name, "s128")) {
1465 return 80000.000000f;
1466 } else if (!strcmp (name, "s13110")) {
1467 return 2.000000f;
1468 } else if (!strcmp (name, "s131")) {
1469 return 32005.441406f;
1470 } else if (!strcmp (name, "s132")) {
1471 return 65538.562500f;
1472 } else if (!strcmp (name, "s1351")) {
1473 return 21.901442f;
1474 } else if (!strcmp (name, "s141")) {
1475 return 65536.000000f;
1476 } else if (!strcmp (name, "s1421")) {
1477 return 16000.000000f;
1478 } else if (!strcmp (name, "s151")) {
1479 return 32005.441406f;
1480 } else if (!strcmp (name, "s152")) {
1481 return 32012.019531f;
1482 } else if (!strcmp (name, "s161")) {
1483 return 64002.054688f;
1484 } else if (!strcmp (name, "s162")) {
1485 return 32003.865234f;
1486 } else if (!strcmp (name, "s171")) {
1487 return 32016.433594f;
1488 } else if (!strcmp (name, "s172")) {
1489 return 32016.433594f;
1490 } else if (!strcmp (name, "s173")) {
1491 return 32001.626953f;
1492 } else if (!strcmp (name, "s174")) {
1493 return 32001.626953f;
1494 } else if (!strcmp (name, "s175")) {
1495 return 32003.865234f;
1496 } else if (!strcmp (name, "s176")) {
1497 return 32000.000000f;
1498 } else if (!strcmp (name, "s2101")) {
1499 return 65700.101562f;
1500 } else if (!strcmp (name, "s2102")) {
1501 return 0.000000f;
1502 } else if (!strcmp (name, "s2111")) {
1503 return 0.065485f;
1504 } else if (!strcmp (name, "s211")) {
1505 return 63994.015625f;
1506 } else if (!strcmp (name, "s212")) {
1507 return 32020.935547f;
1508 } else if (!strcmp (name, "s221")) {
1509 return 512409472.000000f;
1510 } else if (!strcmp (name, "s222")) {
1511 return 32000.000000f;
1512 } else if (!strcmp (name, "s2233")) {
1513 return 3135.685791f;
1514 } else if (!strcmp (name, "s2244")) {
1515 return 32.852161f;
1516 } else if (!strcmp (name, "s2251")) {
1517 return 2.635389f;
1518 } else if (!strcmp (name, "s2275")) {
1519 return 1567.842896f;
1520 } else if (!strcmp (name, "s231")) {
1521 return 65536.000000f;
1522 } else if (!strcmp (name, "s232")) {
1523 return 65536.000000f;
1524 } else if (!strcmp (name, "s233")) {
1525 return 3135.685791f;
1526 } else if (!strcmp (name, "s235")) {
1527 return 32010.951172f;
1528 } else if (!strcmp (name, "s241")) {
1529 return 64000.000000f;
1530 } else if (!strcmp (name, "s242")) {
1531 return 1535966208.000000f;
1532 } else if (!strcmp (name, "s243")) {
1533 return 64082.726562f;
1534 } else if (!strcmp (name, "s244")) {
1535 return 64000.007812f;
1536 } else if (!strcmp (name, "s251")) {
1537 return 32004.367188f;
1538 } else if (!strcmp (name, "s252")) {
1539 return 63999.000000f;
1540 } else if (!strcmp (name, "s253")) {
1541 return 384000.000000f;
1542 } else if (!strcmp (name, "s254")) {
1543 return 32000.000000f;
1544 } else if (!strcmp (name, "s255")) {
1545 return 31953.501953f;
1546 } else if (!strcmp (name, "s256")) {
1547 return 163072.000000f;
1548 } else if (!strcmp (name, "s257")) {
1549 return 163072.000000f;
1550 } else if (!strcmp (name, "s258")) {
1551 return 14.652780f;
1552 } else if (!strcmp (name, "s261")) {
1553 return 32024.523438f;
1554 } else if (!strcmp (name, "s2710")) {
1555 return 96003.281250f;
1556 } else if (!strcmp (name, "s2711")) {
1557 return 32065.755859f;
1558 } else if (!strcmp (name, "s2712")) {
1559 return 32065.755859f;
1560 } else if (!strcmp (name, "s271")) {
1561 return 32065.755859f;
1562 } else if (!strcmp (name, "s272")) {
1563 return 64000.000000f;
1564 } else if (!strcmp (name, "s273")) {
1565 return 96000.000000f;
1566 } else if (!strcmp (name, "s274")) {
1567 return 384018.062500f;
1568 } else if (!strcmp (name, "s275")) {
1569 return 65536.000000f;
1570 } else if (!strcmp (name, "s276")) {
1571 return 32065.755859f;
1572 } else if (!strcmp (name, "s277")) {
1573 return 32000.000000f;
1574 } else if (!strcmp (name, "s278")) {
1575 return 64012.589844f;
1576 } else if (!strcmp (name, "s279")) {
1577 return 63988.562500f;
1578 } else if (!strcmp (name, "s281")) {
1579 return 32000.000000f;
1580 } else if (!strcmp (name, "s291")) {
1581 return 32000.000000f;
1582 } else if (!strcmp (name, "s292")) {
1583 return 31953.501953f;
1584 } else if (!strcmp (name, "s293")) {
1585 return 32000.000000f;
1586 } else if (!strcmp (name, "s3110")) {
1587 return 2.000000f;
1588 } else if (!strcmp (name, "s31111")) {
1589 return 10.950721f;
1590 } else if (!strcmp (name, "s3112")) {
1591 return 1.644725f;
1592 } else if (!strcmp (name, "s3113")) {
1593 return 2.000000f;
1594 } else if (!strcmp (name, "s311")) {
1595 return 10.950721f;
1596 } else if (!strcmp (name, "s312")) {
1597 return 1.030518f;
1598 } else if (!strcmp (name, "s313")) {
1599 return 1.644725f;
1600 } else if (!strcmp (name, "s314")) {
1601 return 1.000000f;
1602 } else if (!strcmp (name, "s315")) {
1603 return 54857.000000f;
1604 } else if (!strcmp (name, "s316")) {
1605 return 0.000031f;
1606 } else if (!strcmp (name, "s317")) {
1607 return 0.000000f;
1608 } else if (!strcmp (name, "s318")) {
1609 return 32002.000000f;
1610 } else if (!strcmp (name, "s319")) {
1611 return 43.803417f;
1612 } else if (!strcmp (name, "s321")) {
1613 return 32000.000000f;
1614 } else if (!strcmp (name, "s322")) {
1615 return 32000.000000f;
1616 } else if (!strcmp (name, "s323")) {
1617 return 146472.437500f;
1618 } else if (!strcmp (name, "s3251")) {
1619 return 13.595582f;
1620 } else if (!strcmp (name, "s331")) {
1621 return 32000.000000f;
1622 } else if (!strcmp (name, "s332")) {
1623 return -1.000000f;
1624 } else if (!strcmp (name, "s341")) {
1625 return 10.950721f;
1626 } else if (!strcmp (name, "s342")) {
1627 return 10.950721f;
1628 } else if (!strcmp (name, "s343")) {
1629 return 0.000000f;
1630 } else if (!strcmp (name, "s351")) {
1631 return 2592000.000000f;
1632 } else if (!strcmp (name, "s352")) {
1633 return 1.644725f;
1634 } else if (!strcmp (name, "s353")) {
1635 return 352000.000000f;
1636 } else if (!strcmp (name, "s4112")) {
1637 return 32103.878906f;
1638 } else if (!strcmp (name, "s4113")) {
1639 return 32001.640625f;
1640 } else if (!strcmp (name, "s4114")) {
1641 return 32000.000000f;
1642 } else if (!strcmp (name, "s4115")) {
1643 return 1.038636f;
1644 } else if (!strcmp (name, "s4116")) {
1645 return 0.753265f;
1646 } else if (!strcmp (name, "s4117")) {
1647 return 32002.205078f;
1648 } else if (!strcmp (name, "s4121")) {
1649 return 32016.433594f;
1650 } else if (!strcmp (name, "s421")) {
1651 return 32005.230469f;
1652 } else if (!strcmp (name, "s422")) {
1653 return 31678.765625f;
1654 } else if (!strcmp (name, "s423")) {
1655 return 34521.710938f;
1656 } else if (!strcmp (name, "s424")) {
1657 return 822.364014f;
1658 } else if (!strcmp (name, "s431")) {
1659 return 32164.423828f;
1660 } else if (!strcmp (name, "s441")) {
1661 return 32016.433594f;
1662 } else if (!strcmp (name, "s442")) {
1663 return 32008.214844f;
1664 } else if (!strcmp (name, "s443")) {
1665 return 32032.878906f;
1666 } else if (!strcmp (name, "s451")) {
1667 return 32007.896484f;
1668 } else if (!strcmp (name, "s452")) {
1669 return 32511.939453f;
1670 } else if (!strcmp (name, "s453")) {
1671 return 21.901442f;
1672 } else if (!strcmp (name, "s471")) {
1673 return 64004.925781f;
1674 } else if (!strcmp (name, "s481")) {
1675 return 32016.433594f;
1676 } else if (!strcmp (name, "s482")) {
1677 return 32016.433594f;
1678 } else if (!strcmp (name, "s491")) {
1679 return 32001.640625f;
1680 } else if (!strcmp (name, "vag")) {
1681 return 1.644725f;
1682 } else if (!strcmp (name, "vas")) {
1683 return 1.644725f;
1684 } else if (!strcmp (name, "va")) {
1685 return 1.644725f;
1686 } else if (!strcmp (name, "vbor")) {
1687 return 31924.044922f;
1688 } else if (!strcmp (name, "vdotr")) {
1689 return 1.644725f;
1690 } else if (!strcmp (name, "vif")) {
1691 return 1.644725f;
1692 } else if (!strcmp (name, "vpvpv")) {
1693 return 1.644725f;
1694 } else if (!strcmp (name, "vpvts")) {
1695 return 17521528832.000000f;
1696 } else if (!strcmp (name, "vpvtv")) {
1697 return 32065.755859f;
1698 } else if (!strcmp (name, "vpv")) {
1699 return 164.469772f;
1700 } else if (!strcmp (name, "vsumr")) {
1701 return 10.950721f;
1702 } else if (!strcmp (name, "vtvtv")) {
1703 return 32000.000000f;
1704 } else if (!strcmp (name, "vtv")) {
1705 return 32000.000000f;
1706 #elif iterations == 256
1707 } else if (!strcmp (name, "s1119")) {
1708 return 201466.390625f;
1709 } else if (!strcmp (name, "s115")) {
1710 return 31968.617188f;
1711 } else if (!strcmp (name, "s119")) {
1712 return 86343.289062f;
1713 } else if (!strcmp (name, "s125")) {
1714 return 131072.000000f;
1715 } else if (!strcmp (name, "s2102")) {
1716 return 256.000000f;
1717 } else if (!strcmp (name, "s2233")) {
1718 return 337652.718750f;
1719 } else if (!strcmp (name, "s2275")) {
1720 return 43579.421875f;
1721 } else if (!strcmp (name, "s231")) {
1722 return 119107.445312f;
1723 } else if (!strcmp (name, "s235")) {
1724 return 32339.158203f;
1725 #elif iterations == 3200
1726 } else if (!strcmp (name, "s176")) {
1727 #ifndef TRUNCATE_TEST
1728 return 32021.121094f;
1729 #else /* TRUNCATE_TEST */
1730 return 32023.751953f;
1731 #endif /* TRUNCATE_TEST */
1732 #endif /* iterations */
1733 } else {
1734 fprintf(stderr, "Unknown function name passed to expected_result: %s\n", name);
1735 exit(1);
1739 typedef real_t(*test_function_t)(struct args_t *);
1741 static _Bool is_checksum_same(real_t expected, real_t value)
1743 if (expected == INFINITY)
1744 return value == INFINITY;
1745 else if(expected == 0.f)
1746 return value <= 0.01f;
1747 else {
1748 real_t fraction = value / expected;
1749 return 0.99f <= fraction && fraction <= 1.01f;
1753 void run(test_function_t vector_func, const char *fname, void * arg_info)
1755 struct args_t func_args = {.arg_info=arg_info};
1757 double result = vector_func(&func_args);
1758 #if iterations == 10000 || iterations == 10 || iterations == 256 || iterations == 3200
1759 double expected_result = get_expected_result(fname);
1761 if (!is_checksum_same(expected_result, result))
1763 fprintf (stderr, "value: %f, expected: %f\n", result, expected_result);
1764 __builtin_abort();
1766 #else
1767 /* To generate values for a new iteration count, run
1768 check-gcc 'RUNTESTFLAGS=vect.exp'
1769 on a host you consider having a sound gcc port.
1770 The output can be collated by something like:
1771 grep '#### iterations == [0-9]*' ./gcc/testsuite/gcc/gcc.log|sort -n|uniq|sed 'sX.*iterations == [0-9]*XX'
1773 fprintf (stderr,
1774 "\n%5s X0#### iterations == %d } else if (!strcmp (name, \"%s\")) {"
1775 "\n%5s X1#### iterations == %d\treturn %ff;\n",
1776 fname, iterations, fname, fname, iterations, result);
1777 #endif
1781 __attribute__((noipa))
1782 dummy(float a[LEN_1D], float b[LEN_1D], float c[LEN_1D], float d[LEN_1D], float e[LEN_1D], float aa[LEN_2D][LEN_2D], float bb[LEN_2D][LEN_2D], float cc[LEN_2D][LEN_2D], float s){
1783 // -- called in each loop to make all computations appear required
1784 return 0;
1787 #pragma GCC pop_options