1/* { dg-do run } */ 2/* { dg-options "-fcilkplus" } */ 3/* { dg-additional-options "-ffloat-store" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ 4 5#define NUMBER 100 6#if HAVE_IO 7#include <stdio.h> 8#endif 9/* #include <stdlib.h> */ 10 11void my_func (double *x, double y) 12{ 13 if (*x < y) 14 *x = y; 15} 16 17 18int main(void) 19{ 20 int ii,array[NUMBER], y = 0, y_int = 0, array2[NUMBER]; 21 double x = 0.000, yy, array3[NUMBER], array4[NUMBER]; 22 double max_value = 0.000, min_value = 0.000, add_value, mul_value = 1.00; 23 int max_index = 0, min_index = 0; 24#if 1 25 for (ii = 0; ii < NUMBER; ii++) 26 { 27 array[ii] = 1+ii; 28 array2[ii]= 2; 29 } 30 31 for (ii = 0; ii < NUMBER; ii++) 32 { 33 if (ii%2 && ii) 34 array3[ii] = (double)(1.0000/(double)ii); 35 else 36 array3[ii] = (double) ii + 0.10; 37 array4[ii] = (double) (1.00000/ (double)(ii+1)); 38 } 39#endif 40 /* array[:] = 5; */ 41 __sec_reduce_mutating (&x, array3[:] * array4[:], my_func); 42#if 1 43 y = __sec_reduce_max_ind ( array3[:] * array4[:]); 44 45 /* Initialize it to the first variable. */ 46 max_value = array3[0] * array4[0]; 47 for (ii = 0; ii < NUMBER; ii++) 48 if (array3[ii] * array4[ii] > max_value) { 49 max_index = ii; 50 } 51 52 for (ii = 0; ii < NUMBER; ii++) 53 my_func (&max_value, array3[ii] * array4[ii]); 54 55#if HAVE_IO 56 for (ii = 0; ii < NUMBER; ii++) 57 printf("%5.3f ", array3[ii] * array4[ii]); 58 printf("\n"); 59 printf("Max = %5.3f\t Max Index = %2d\n", x, y); 60 printf("Max = %5.3f\t Max Index = %2d\n", max_value, max_index); 61#endif 62 63 if (x != max_value) 64 return 1; 65 66 if (y != max_index) 67 return 2; 68#endif 69 return 0; 70} 71