|  | /* { dg-do run { target { ! { hppa*-*-hpux* } } } } */ | 
|  |  | 
|  | /* complex reductions.  */ | 
|  |  | 
|  | #include <stdlib.h> | 
|  | #include <complex.h> | 
|  | #include "reduction.h" | 
|  |  | 
|  | #define ng 8 | 
|  | #define nw 4 | 
|  | #define vl 32 | 
|  |  | 
|  | static void | 
|  | test_reductions (void) | 
|  | { | 
|  | const int n = 10; | 
|  | int i; | 
|  | double _Complex array[n]; | 
|  |  | 
|  | for (i = 0; i < n; i++) | 
|  | array[i] = i+1; | 
|  |  | 
|  | /* Gang reductions.  */ | 
|  | check_reduction_op (double, +, 0, creal (array[i]), num_gangs (ng), gang); | 
|  | check_reduction_op (double, *, 1, creal (array[i]), num_gangs (ng), gang); | 
|  |  | 
|  | /* Worker reductions.  */ | 
|  | check_reduction_op (double, +, 0, creal (array[i]), num_workers (nw), | 
|  | worker); | 
|  | check_reduction_op (double, *, 1, creal (array[i]), num_workers (nw), | 
|  | worker); | 
|  |  | 
|  | /* Vector reductions.  */ | 
|  | check_reduction_op (double, +, 0, creal (array[i]), vector_length (vl), | 
|  | vector); | 
|  | check_reduction_op (double, *, 1, creal (array[i]), vector_length (vl), | 
|  | vector); | 
|  |  | 
|  | /* Combined reductions.  */ | 
|  | check_reduction_op (double, +, 0, creal (array[i]), num_gangs (ng) | 
|  | num_workers (nw) vector_length (vl), gang worker | 
|  | vector); | 
|  | check_reduction_op (double, *, 1, creal (array[i]), num_gangs (ng) | 
|  | num_workers (nw) vector_length (vl), gang worker | 
|  | vector); | 
|  | } | 
|  |  | 
|  | int | 
|  | main (void) | 
|  | { | 
|  | test_reductions (); | 
|  | return 0; | 
|  | } |