]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/c-c++-common/cilk-plus/AN/builtin_func_double.c
[Patch AArch64] Fixup floating point division with -march=armv8-a+nosimd
[thirdparty/gcc.git] / gcc / testsuite / c-c++-common / cilk-plus / AN / builtin_func_double.c
CommitLineData
3c6d4197 1#if HAVE_IO
2#include <stdio.h>
3#endif
4/* #include <stdlib.h> */
5
6/* char __sec_reduce_add (int *); */
4c115a64 7int main(void)
3c6d4197 8{
9 int ii,array[10], y = 0, y_int = 0, array2[10];
10 double x, yy, array3[10], array4[10];
11 double max_value = 0.000, min_value = 0.000, add_value, mul_value = 1.00;
12 int max_index = 0, min_index = 0;
13 for (ii = 0; ii < 10; ii++)
14 {
15 array[ii] = 1+ii;
16 array2[ii]= 2;
17 }
18
19 for (ii = 0; ii < 10; ii++)
20 {
21 if (ii%2 && ii)
22 array3[ii] = (double)(1.0000/(double)ii);
23 else
24 array3[ii] = (double) ii + 0.10;
25 array4[ii] = (double) (1.00000/ (double)(ii+1));
26 }
27
28 /* array[:] = 5; */
29 x = __sec_reduce_max (array3[:] * array4[:]);
30 y = __sec_reduce_max_ind ( array3[:] * array4[:]);
31
32 /* Initialize it to the first variable. */
33 max_value = array3[0] * array4[0];
34 for (ii = 0; ii < 10; ii++)
35 if (array3[ii] * array4[ii] > max_value) {
36 max_value = array3[ii] * array4[ii];
37 max_index = ii;
38 }
39
40
41
42#if HAVE_IO
43 for (ii = 0; ii < 10; ii++)
44 printf("%5.3f ", array3[ii] * array4[ii]);
45 printf("\n");
46 printf("Max = %5.3f\t Max Index = %2d\n", x, y);
47#endif
48
49 if (x != max_value)
50 return 1;
51
52 if (y != max_index)
53 return 2;
54
55 x = __sec_reduce_min (array3[:] * array4[:]);
56 y = __sec_reduce_min_ind ( array3[:] * array4[:]);
57#if HAVE_IO
58 for (ii = 0; ii < 10; ii++)
59 printf("%5.3f ", array3[ii] * array4[ii]);
60 printf("\n");
61 printf("Min = %5.3f\t Min Index = %2d\n", x, y);
62#endif
63
64 /* Initialize it to the first variable. */
65 min_value = array3[0] * array4[0];
66 for (ii = 0; ii < 10; ii++)
67 if (array3[ii] * array4[ii] < min_value) {
68 min_value = array3[ii] * array4[ii];
69 min_index = ii;
70 }
71
72 if (x != min_value)
73 return 3;
74 if (y != min_index)
75 return 4;
76
77 x = __sec_reduce_add (array3[:] * array4[:]);
78 yy = __sec_reduce_mul ( array3[:] * array4[:]);
79#if HAVE_IO
80 for (ii = 0; ii < 10; ii++)
81 printf("%5.3f ", array3[ii] * array4[ii]);
82 printf("\n");
83 printf("Add = %5.3f\t Mul = %f\n", x, yy);
84#endif
85
86 /* Initialize it to the first variable. */
87 add_value = 0.0000;
88 mul_value = 1.0000;
89 for (ii = 0; ii < 10; ii++)
90 {
91 add_value += (array3[ii] * array4[ii]);
92 mul_value *= (array3[ii] * array4[ii]);
93 }
94
95 if (x != add_value)
96 return 5;
97 if (yy != mul_value)
98 return 6;
99
100 for (ii = 0; ii < 10; ii++)
101 {
102 if (ii%2 && ii)
103 array3[ii] = (double)(1.0000/(double)ii);
104 else
105 array3[ii] = (double) ii + 0.00;
106 array4[ii] = (double) (1.00000/ (double)(ii+1));
107 }
108 y_int = __sec_reduce_any_zero (array3[:] * array4[:]);
109 y = __sec_reduce_all_zero ( array3[:] * array4[:]);
110
111 if (y_int != 1)
112 return 7;
113
114 if (y != 0)
115 return 8;
116
117#if HAVE_IO
118 for (ii = 0; ii < 10; ii++)
119 printf("%5.3f ", array3[ii] * array4[ii]);
120 printf("\n");
121 printf("Any Zeros = %d\t All Zeros = %d\n", y_int, y);
122#endif
123 return 0;
124}