|
1 | 1 | // statistics.cpp
|
2 |
| -#include "statistics.h" |
3 | 2 | #include <omp.h>
|
| 3 | + |
4 | 4 | #include <cmath>
|
5 | 5 | #include <iostream>
|
| 6 | + |
| 7 | +#include "statistics.h" |
| 8 | + |
6 | 9 | // Function to compute the mean
|
7 | 10 | double computeMean(const std::vector<int>& data, int num_threads) {
|
8 |
| - double sum = 0.0; |
| 11 | + double sum = 0.0; |
9 | 12 |
|
10 |
| - #pragma omp parallel for reduction(+:sum) num_threads(num_threads) |
11 |
| - for (size_t i = 0; i < data.size(); i++) { |
12 |
| - sum += data[i]; |
13 |
| - } |
| 13 | +#pragma omp parallel for reduction(+ : sum) num_threads(num_threads) |
| 14 | + for (size_t i = 0; i < data.size(); i++) { |
| 15 | + sum += data[i]; |
| 16 | + } |
14 | 17 |
|
15 |
| - return sum / data.size(); |
| 18 | + return sum / data.size(); |
16 | 19 | }
|
17 | 20 |
|
18 | 21 | // Function to compute the standard deviation
|
19 | 22 | double computeStandardDeviation(const std::vector<int>& data, int num_threads) {
|
20 |
| - double mean = computeMean(data, num_threads); |
| 23 | + double mean = computeMean(data, num_threads); |
21 | 24 |
|
22 |
| - double variance_sum = 0.0; |
| 25 | + double variance_sum = 0.0; |
23 | 26 |
|
24 |
| - #pragma omp parallel for reduction(+:variance_sum) num_threads(num_threads) |
25 |
| - for (size_t i = 0; i < data.size(); i++) { |
26 |
| - variance_sum += (data[i] - mean) * (data[i] - mean); |
27 |
| - } |
| 27 | +#pragma omp parallel for reduction(+ : variance_sum) num_threads(num_threads) |
| 28 | + for (size_t i = 0; i < data.size(); i++) { |
| 29 | + variance_sum += (data[i] - mean) * (data[i] - mean); |
| 30 | + } |
28 | 31 |
|
29 |
| - double variance = variance_sum / data.size(); |
30 |
| - return std::sqrt(variance); |
| 32 | + double variance = variance_sum / data.size(); |
| 33 | + return std::sqrt(variance); |
31 | 34 | }
|
32 | 35 |
|
33 |
| - |
34 | 36 | int main() {
|
35 |
| - // Data set |
36 |
| - std::vector<int> data = {1, 2, 3, 4, 5, 6}; |
| 37 | + // Data set |
| 38 | + std::vector<int> data = {1, 2, 3, 4, 5, 6}; |
37 | 39 |
|
38 |
| - // Number of threads for OpenMP |
39 |
| - int num_threads = 4; |
| 40 | + // Number of threads for OpenMP |
| 41 | + int num_threads = omp_get_max_threads(); |
40 | 42 |
|
41 |
| - // Calculate and print the standard deviation |
42 |
| - double stddev = computeStandardDeviation(data, num_threads); |
43 |
| - std::cout << "Standard Deviation: " << stddev << std::endl; |
| 43 | + // Calculate and print the standard deviation |
| 44 | + double stddev = computeStandardDeviation(data, num_threads); |
| 45 | + std::cout << "Standard Deviation: " << stddev << std::endl; |
44 | 46 |
|
45 |
| - return 0; |
| 47 | + return 0; |
46 | 48 | }
|
0 commit comments