В ответе функции выдают nan

Программа вместо значений функций Js(2 * n, a, b) и P(n, a, b), в конце выдает nan. При меньших на 2 порядка значениях b ответ нормальный, но нужно именно это значение

#include <iostream>
#include <cmath>
using namespace std;

double f(double x) {
    return atan(x) / sqrt(1 + pow(x, 3));
}

double Js(int n, double a, double b) {
    double h = (b - a) / (2 * n);
    double sum1 = 0, sum2 = 0;
    for (int i = 0; i < n; ++i) {
        sum1 += f(a + (2 * i + 1) * h);
        if (i > 0) {
            sum2 += f(a + 2 * i * h);
        }
    }
    return (b - a) / (6 * n) * (f(a) + f(b) + 4 * sum1 + 2 * sum2);
}
double P(int n, double a, double b) {
    return abs(Js(n, a, b) - Js(2 * n, a, b)) / 15;
}

int main() {
    double a = 1;
    double b = pow(3.14, 2) / (25 * pow(10, -10));
    double epsilon = 1.0 / 100;

    int n = 1;
    while (abs(P(n, a, b)) > epsilon) {
        n *= 2;
    }

    cout << "n: " << n << endl;
    cout << "Js(2*n): " << Js(2 * n, a, b) << endl;
    cout << "P(n): " << P(n, a, b) << endl;

    return 0;
}

Ответы (0 шт):