@@ -73,34 +73,6 @@ void performMinMaxRed(int &min_val, int &max_val) {
73
73
max_val = input_data[i];
74
74
}
75
75
}
76
- int performComplexReduction () {
77
- double _Complex arr[N];
78
- double _Complex expected = 0.0 + 0.0 * I;
79
- double _Complex result = 0.0 + 0.0 * I;
80
- int error = 0 ;
81
-
82
- // Initialize the array and compute serial sum
83
- for (int i = 0 ; i < N; ++i) {
84
- arr[i] = i - i * I;
85
- expected += arr[i];
86
- }
87
- double real_sum = 0.0 , imag_sum = 0.0 ;
88
- #pragma omp parallel private(real_sum) private(imag_sum)
89
- {
90
- #pragma omp for reduction(+ : real_sum, imag_sum)
91
- for (int i = 0 ; i < N; ++i) {
92
- real_sum += creal (arr[i]);
93
- imag_sum += cimag (arr[i]);
94
- }
95
-
96
- result = real_sum + imag_sum * I;
97
- if (cabs (result - expected) > 1e-6 ) {
98
- error++;
99
- }
100
- }
101
- return error;
102
- }
103
-
104
76
std::complex<double > doComplexReduction (std::complex<double > *arr) {
105
77
std::complex<double > result (1 , 0 );
106
78
@@ -138,7 +110,8 @@ int main(void) {
138
110
const float kPiVal = 3 .14f ;
139
111
const int kExpectedSum = 45 ; // Sum of 0..9
140
112
const int kExpectedProd = 3628800 ; // 10!
141
- const float kExpectedFsum = kPiVal * N; // 3.14f * 10
113
+ const float kExpectedFsum = 31 .400000f ; // 3.14f * 10
114
+ const float kTolerance = 1e-4f ;
142
115
const int kExpectedMin = 3 ;
143
116
const int kExpectedMax = 12 ;
144
117
std::complex<double > arr[N];
@@ -163,7 +136,7 @@ int main(void) {
163
136
total_errors++;
164
137
if (t_prod_v != kExpectedProd )
165
138
total_errors++;
166
- if (t_fsum_v != kExpectedFsum )
139
+ if (std::abs ( t_fsum_v - kExpectedFsum ) > kTolerance )
167
140
total_errors++;
168
141
}
169
142
#pragma omp parallel num_threads(4)
@@ -177,7 +150,6 @@ int main(void) {
177
150
total_errors++;
178
151
}
179
152
total_errors += checkUserDefinedReduction ();
180
- total_errors += performComplexReduction ();
181
153
#pragma omp parallel num_threads(4)
182
154
{
183
155
std::complex<double > result (1 , 0 );
0 commit comments