Бесконечный ряд и ошибка в коде

Дали задание: найти сумму бесконечного ряда с заданной точностью с использованием рекуррентной формулы. Ручками все нашёл и приступил к написанию кода, только вот ничего в итоге не получилось. Сам ищу ошибку, да найти не могу. Если нужен будет сам ряд или точность, а может мои вычисления - жду комментариев, так как сам не исключаю варианта того, что ошибкой может быть какой-нибудь пустяк.

{
    const double EPS = 1.0e-6;
    setlocale(LC_ALL, "Russian");
    double x, sum=0.5,r;
    int i;
    scanf_s("%lf", &x);
        x = 0.5;
        i = 0;
        while (fabs(sum >= EPS)) {
            sum += x;
            i++;
            x *= (((-2 * 2) * (x * x))) / ((2 * i) * (2 * i - 1));
        }
        printf("summa ryada: %lf", sum);
    return 0;
}

Заранее всем кто помог получает по котёнку бесплатно!

Это мои вычисления: введите сюда описание изображения

Это сам бесконечный ряд: введите сюда описание изображения

Функция для проверки: введите сюда описание изображения


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

Автор решения: MBo

Отрадно видеть, что шаги решения проработаны, члены ряды вычисляются, как положено.

Дефекты в реализации. Вы портите x, а ведь переменную r для очередного слагаемого подготовили, и не разобрались, как оценивать точность - с EPS нужно сравнивать абсолютное значение очередного члена ряда:

 double x, sum=0.5,r;
 int i;
 scanf_s("%lf", &x);
 r = 0.5;
 i = 0;
        while (fabs(r) >= EPS) {
            sum += r;
            i++;
            r *= (((-2 * 2) * (x * x))) / ((2 * i) * (2 * i - 1));
        }
→ Ссылка