#include #include #include #include #include int main() { double accuracy; long numberOfLoops = 10; std::cout << "Set accuracy: \n"; std::cin >> accuracy; std::cout << " \n"; double harmon = 0; long minTime = INFINITY; long maxTime = 0; long sq_time = 0; long mt_time = 0; auto start = std::chrono::high_resolution_clock::now(); auto finish = std::chrono::high_resolution_clock::now(); //Sequenial std::cout << "Sequential:\n"; { harmon = 0; start = std::chrono::high_resolution_clock::now(); //////////////////////// for (double i = 1; i <= accuracy; i++) { harmon += (1 / (i)); } //////////////////////// finish = std::chrono::high_resolution_clock::now(); long currentTime = std::chrono::duration_cast(finish - start).count(); sq_time += currentTime; } std::cout << "Time = " << sq_time / numberOfLoops << "ns\n"; std::cout << "Harmonic number = " << std::setprecision(30) << harmon << "\n\n"; harmon = 0; minTime = INFINITY; maxTime = 0; //Parallel std::cout << "Parallel:\n"; { harmon = 0; start = std::chrono::high_resolution_clock::now(); //////////////////////// #pragma omp parallel for for (double i = 1; i <= accuracy; i++) { harmon += (1 / (i)); } //////////////////////// finish = std::chrono::high_resolution_clock::now(); long currentTime = std::chrono::duration_cast(finish - start).count(); mt_time += currentTime; } std::cout << "Avg time = " << mt_time / numberOfLoops << "ns\n"; std::cout << "Harmonic number = " << std::setprecision(30) << harmon << "\n\n"; harmon = 0; std::cin.ignore(2); return 0; }