1 /* This file is distributed under the University of Illinois Open Source
2 License. See license.txt for details. */
6 /* Was: #define iterations 10000 */
10 #define ARRAY_ALIGNMENT 64
12 #pragma GCC push_options
13 #pragma GCC optimize "-fno-tree-vectorize"
17 #if __has_include(<malloc.h>)
20 #if __has_include(<sys/time.h>)
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
;
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
);
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
]);
75 real_t
sum_flat_2d_array();
77 real_t
sum1d(real_t arr
[LEN_1D
]){
79 for (int i
= 0; i
< LEN_1D
; i
++)
84 real_t
sum2d(real_t arr
[LEN_2D
][LEN_2D
]){
86 for (int i
= 0; i
< LEN_2D
; i
++){
87 for (int j
= 0; j
< LEN_2D
; j
++){
117 return sum1d(a
) + sum2d(aa
);
142 return sum2d(aa
) + sum2d(bb
);
154 for (int i
= 0; i
< LEN_1D
/2; i
++){
161 real_t
sum_flat_2d_array()
165 for (int i
= 0; i
< LEN_2D
*LEN_2D
; i
++){
166 sum
+= flat_2d_array
[i
];
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));
184 for (int i
= 0; i
< length
; i
+= stride
) {
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
));
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
));
209 posix_memalign ((void*)&xx
, ARRAY_ALIGNMENT
, LEN_1D
*sizeof(real_t
));
210 posix_memalign ((void*)ip
, ARRAY_ALIGNMENT
, LEN_1D
*sizeof(real_t
));
214 for (int i
= 0; i
< LEN_1D
; i
= i
+5){
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;
240 int initialise_arrays(const char* name
)
247 real_t small
= .000001;
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
++) {
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
);
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
);
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
);
622 } else if (!strcmp(name
, "s332")) {
623 set_1d_array(a
, LEN_1D
, any
,frac2
);
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
);
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
);
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
);
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
);
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
);
825 real_t
calc_checksum(const char * name
)
827 if (!strcmp(name
, "s000")) {
829 } else if (!strcmp(name
, "s111")) {
831 } else if (!strcmp(name
, "s1111")) {
833 } else if (!strcmp(name
, "s112")) {
835 } else if (!strcmp(name
, "s1112")) {
837 } else if (!strcmp(name
, "s113")) {
839 } else if (!strcmp(name
, "s1113")) {
841 } else if (!strcmp(name
, "s114")) {
843 } else if (!strcmp(name
, "s115")) {
845 } else if (!strcmp(name
, "s1115")) {
847 } else if (!strcmp(name
, "s116")) {
849 } else if (!strcmp(name
, "s118")) {
851 } else if (!strcmp(name
, "s119")) {
853 } else if (!strcmp(name
, "s1119")) {
855 } else if (!strcmp(name
, "s121")) {
857 } else if (!strcmp(name
, "s122")) {
859 } else if (!strcmp(name
, "s123")) {
861 } else if (!strcmp(name
, "s124")) {
863 } else if (!strcmp(name
, "s125")) {
864 return sum_flat_2d_array();
865 } else if (!strcmp(name
, "s126")) {
867 } else if (!strcmp(name
, "s127")) {
869 } else if (!strcmp(name
, "s128")) {
870 return sum_a() + sum_b();
871 } else if (!strcmp(name
, "s131")) {
873 } else if (!strcmp(name
, "s132")) {
875 } else if (!strcmp(name
, "s141")) {
876 return sum_flat_2d_array();
877 } else if (!strcmp(name
, "s151")) {
879 } else if (!strcmp(name
, "s152")) {
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")) {
887 } else if (!strcmp(name
, "s171")) {
889 } else if (!strcmp(name
, "s172")) {
891 } else if (!strcmp(name
, "s173")) {
893 } else if (!strcmp(name
, "s174")) {
895 } else if (!strcmp(name
, "s175")) {
897 } else if (!strcmp(name
, "s176")) {
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")) {
913 } else if (!strcmp(name
, "s232")) {
915 } else if (!strcmp(name
, "s1232")) {
917 } else if (!strcmp(name
, "s233")) {
919 } else if (!strcmp(name
, "s2233")) {
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")) {
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")) {
937 } else if (!strcmp(name
, "s1251")) {
939 } else if (!strcmp(name
, "s2251")) {
941 } else if (!strcmp(name
, "s3251")) {
943 } else if (!strcmp(name
, "s252")) {
945 } else if (!strcmp(name
, "s253")) {
946 return sum_a() + sum_c();
947 } else if (!strcmp(name
, "s254")) {
949 } else if (!strcmp(name
, "s255")) {
951 } else if (!strcmp(name
, "s256")) {
953 } else if (!strcmp(name
, "s257")) {
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")) {
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")) {
969 } else if (!strcmp(name
, "s2275")) {
971 } else if (!strcmp(name
, "s276")) {
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")) {
985 } else if (!strcmp(name
, "s2712")) {
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")) {
993 } else if (!strcmp(name
, "s292")) {
995 } else if (!strcmp(name
, "s293")) {
997 } else if (!strcmp(name
, "s2101")) {
999 } else if (!strcmp(name
, "s2102")) {
1001 } else if (!strcmp(name
, "s2111")) {
1003 } else if (!strcmp(name
, "s311")) {
1005 } else if (!strcmp(name
, "s31111")) {
1007 } else if (!strcmp(name
, "s321")) {
1009 } else if (!strcmp(name
, "s322")) {
1011 } else if (!strcmp(name
, "s323")) {
1012 return sum_a() + sum_b();
1013 } else if (!strcmp(name
, "s341")) {
1015 } else if (!strcmp(name
, "s342")) {
1017 } else if (!strcmp(name
, "s343")) {
1018 return sum_flat_2d_array();
1019 } else if (!strcmp(name
, "s351")) {
1021 } else if (!strcmp(name
, "s1351")) {
1023 } else if (!strcmp(name
, "s353")) {
1025 } else if (!strcmp(name
, "s421")) {
1027 } else if (!strcmp(name
, "s1421")) {
1028 return sum_half_xx();
1029 } else if (!strcmp(name
, "s422")) {
1031 } else if (!strcmp(name
, "s423")) {
1032 return sum_flat_2d_array();
1033 } else if (!strcmp(name
, "s424")) {
1035 } else if (!strcmp(name
, "s431")) {
1037 } else if (!strcmp(name
, "s441")) {
1039 } else if (!strcmp(name
, "s442")) {
1041 } else if (!strcmp(name
, "s443")) {
1043 } else if (!strcmp(name
, "s451")) {
1045 } else if (!strcmp(name
, "s452")) {
1047 } else if (!strcmp(name
, "s453")) {
1049 } else if (!strcmp(name
, "s471")) {
1050 return sum_x() + sum_b();
1051 } else if (!strcmp(name
, "s481")) {
1053 } else if (!strcmp(name
, "s482")) {
1055 } else if (!strcmp(name
, "s491")) {
1057 } else if (!strcmp(name
, "s4112")) {
1059 } else if (!strcmp(name
, "s4113")) {
1061 } else if (!strcmp(name
, "s4114")) {
1063 } else if (!strcmp(name
, "s4117")) {
1065 } else if (!strcmp(name
, "s4121")) {
1067 } else if (!strcmp(name
, "va")) {
1069 } else if (!strcmp(name
, "vag")) {
1071 } else if (!strcmp(name
, "vas")) {
1073 } else if (!strcmp(name
, "vif")) {
1075 } else if (!strcmp(name
, "vpv")) {
1077 } else if (!strcmp(name
, "vtv")) {
1079 } else if (!strcmp(name
, "vpvtv")) {
1081 } else if (!strcmp(name
, "vpvts")) {
1083 } else if (!strcmp(name
, "vpvpv")) {
1085 } else if (!strcmp(name
, "vtvtv")) {
1087 } else if (!strcmp(name
, "vsumr")) {
1089 } else if (!strcmp(name
, "vbor")) {
1092 fprintf(stderr
, "Unknown function name passed to calc_checksum: %s\n", name
);
1097 real_t
get_expected_result(const char * name
)
1100 fprintf(stderr
, "NULL name passed to expected_result.\n");
1102 #if iterations == 10000
1103 } else if (!strcmp(name
, "s000")) {
1105 } else if (!strcmp(name
, "s111")) {
1106 return 32000.410156f
;
1107 } else if (!strcmp(name
, "s1111")) {
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")) {
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")) {
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")) {
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")) {
1147 } else if (!strcmp(name
, "s131")) {
1148 return 32009.027344f
;
1149 } else if (!strcmp(name
, "s132")) {
1151 } else if (!strcmp(name
, "s141")) {
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")) {
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")) {
1181 } else if (!strcmp(name
, "s221")) {
1183 } else if (!strcmp(name
, "s1221")) {
1184 return 79623.265625f
;
1185 } else if (!strcmp(name
, "s222")) {
1187 } else if (!strcmp(name
, "s231")) {
1188 return 119107.445312f
;
1189 } else if (!strcmp(name
, "s232")) {
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")) {
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")) {
1209 } else if (!strcmp(name
, "s2244")) {
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")) {
1217 } else if (!strcmp(name
, "s3251")) {
1219 } else if (!strcmp(name
, "s252")) {
1221 } else if (!strcmp(name
, "s253")) {
1223 } else if (!strcmp(name
, "s254")) {
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")) {
1231 } else if (!strcmp(name
, "s258")) {
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")) {
1239 } else if (!strcmp(name
, "s273")) {
1240 return 96311.546875f
;
1241 } else if (!strcmp(name
, "s274")) {
1243 } else if (!strcmp(name
, "s275")) {
1245 } else if (!strcmp(name
, "s2275")) {
1247 } else if (!strcmp(name
, "s276")) {
1248 return 97793.570312f
;
1249 } else if (!strcmp(name
, "s277")) {
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")) {
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")) {
1265 } else if (!strcmp(name
, "s1281")) {
1267 } else if (!strcmp(name
, "s291")) {
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")) {
1277 } else if (!strcmp(name
, "s2111")) {
1279 } else if (!strcmp(name
, "s311")) {
1281 } else if (!strcmp(name
, "s31111")) {
1283 } else if (!strcmp(name
, "s312")) {
1285 } else if (!strcmp(name
, "s313")) {
1287 } else if (!strcmp(name
, "s314")) {
1289 } else if (!strcmp(name
, "s315")) {
1291 } else if (!strcmp(name
, "s316")) {
1293 } else if (!strcmp(name
, "s317")) {
1295 } else if (!strcmp(name
, "s318")) {
1297 } else if (!strcmp(name
, "s319")) {
1299 } else if (!strcmp(name
, "s3110")) {
1301 } else if (!strcmp(name
, "s13110")) {
1303 } else if (!strcmp(name
, "s3111")) {
1305 } else if (!strcmp(name
, "s3112")) {
1307 } else if (!strcmp(name
, "s3113")) {
1309 } else if (!strcmp(name
, "s321")) {
1311 } else if (!strcmp(name
, "s322")) {
1313 } else if (!strcmp(name
, "s323")) {
1314 return 146472.4375f
;
1315 } else if (!strcmp(name
, "s331")) {
1317 } else if (!strcmp(name
, "s332")) {
1319 } else if (!strcmp(name
, "s341")) {
1321 } else if (!strcmp(name
, "s342")) {
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")) {
1329 } else if (!strcmp(name
, "s352")) {
1331 } else if (!strcmp(name
, "s353")) {
1333 } else if (!strcmp(name
, "s421")) {
1334 return 32009.023438f
;
1335 } else if (!strcmp(name
, "s1421")) {
1337 } else if (!strcmp(name
, "s422")) {
1339 } else if (!strcmp(name
, "s423")) {
1340 return 64006.683594f
;
1341 } else if (!strcmp(name
, "s424")) {
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")) {
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")) {
1367 } else if (!strcmp(name
, "s4113")) {
1368 return 32001.640625f
;
1369 } else if (!strcmp(name
, "s4114")) {
1371 } else if (!strcmp(name
, "s4115")) {
1373 } else if (!strcmp(name
, "s4116")) {
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")) {
1381 } else if (!strcmp(name
, "vag")) {
1383 } else if (!strcmp(name
, "vas")) {
1385 } else if (!strcmp(name
, "vif")) {
1387 } else if (!strcmp(name
, "vpv")) {
1388 return 164487.78125f
;
1389 } else if (!strcmp(name
, "vtv")) {
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")) {
1397 } else if (!strcmp(name
, "vtvtv")) {
1399 } else if (!strcmp(name
, "vsumr")) {
1401 } else if (!strcmp(name
, "vdotr")) {
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")) {
1410 } else if (!strcmp (name
, "s1112")) {
1411 return 32008.869141f
;
1412 } else if (!strcmp (name
, "s1113")) {
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")) {
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")) {
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")) {
1450 } else if (!strcmp (name
, "s124")) {
1451 return 32001.640625f
;
1452 } else if (!strcmp (name
, "s1251")) {
1454 } else if (!strcmp (name
, "s125")) {
1456 } else if (!strcmp (name
, "s126")) {
1457 return 65536.000000f
;
1458 } else if (!strcmp (name
, "s1279")) {
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")) {
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")) {
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")) {
1502 } else if (!strcmp (name
, "s2111")) {
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")) {
1516 } else if (!strcmp (name
, "s2251")) {
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")) {
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")) {
1588 } else if (!strcmp (name
, "s31111")) {
1590 } else if (!strcmp (name
, "s3112")) {
1592 } else if (!strcmp (name
, "s3113")) {
1594 } else if (!strcmp (name
, "s311")) {
1596 } else if (!strcmp (name
, "s312")) {
1598 } else if (!strcmp (name
, "s313")) {
1600 } else if (!strcmp (name
, "s314")) {
1602 } else if (!strcmp (name
, "s315")) {
1603 return 54857.000000f
;
1604 } else if (!strcmp (name
, "s316")) {
1606 } else if (!strcmp (name
, "s317")) {
1608 } else if (!strcmp (name
, "s318")) {
1609 return 32002.000000f
;
1610 } else if (!strcmp (name
, "s319")) {
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")) {
1620 } else if (!strcmp (name
, "s331")) {
1621 return 32000.000000f
;
1622 } else if (!strcmp (name
, "s332")) {
1624 } else if (!strcmp (name
, "s341")) {
1626 } else if (!strcmp (name
, "s342")) {
1628 } else if (!strcmp (name
, "s343")) {
1630 } else if (!strcmp (name
, "s351")) {
1631 return 2592000.000000f
;
1632 } else if (!strcmp (name
, "s352")) {
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")) {
1644 } else if (!strcmp (name
, "s4116")) {
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")) {
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")) {
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")) {
1682 } else if (!strcmp (name
, "vas")) {
1684 } else if (!strcmp (name
, "va")) {
1686 } else if (!strcmp (name
, "vbor")) {
1687 return 31924.044922f
;
1688 } else if (!strcmp (name
, "vdotr")) {
1690 } else if (!strcmp (name
, "vif")) {
1692 } else if (!strcmp (name
, "vpvpv")) {
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")) {
1700 } else if (!strcmp (name
, "vsumr")) {
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")) {
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 */
1734 fprintf(stderr
, "Unknown function name passed to expected_result: %s\n", name
);
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
;
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
);
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'
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
);
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
1787 #pragma GCC pop_options