integral_calc.hpp 584 B

12345678910111213141516171819202122
  1. #include <omp.h>
  2. double integral_calc(const double param, Interval_t interval, size_t chunk, bool mode){
  3. double res = 0;
  4. double increase = (interval.sup - interval.inf) / (double) interval.increase_count;
  5. double init = interval.inf + 0.5 * increase;
  6. #if !mode
  7. #pragma omp parallel for schedule(static, chunk) reduction (+:res)
  8. #else
  9. #pragma omp parallel for schedule(dynamic, chunk) reduction (+:res)
  10. #endif
  11. for(int i = 0; i < interval.increase_count; ++i){
  12. double x = init + i * increase;
  13. res += integrand(x, param);
  14. }
  15. res *= increase;
  16. return res;
  17. }