С++ Лабораторная работа. Суммирование рядов

Задание: посчитать значение по этой формуле и вывести в таблицу
image
Здесь колонка “Сумма” это то что считаю я по выведенной формуле, “контрольное значение” - это сам результат логарифа, значения в этих колонках должны совпадать, формулу перепроверил несколько раз но результаты все равно не совпадают.
image

#include<iostream>
#include<math.h>
#include<limits.h>
#include<locale.h>
using namespace std ;
double riad(double, double, int& n);
//main_beg________________________________________________________________
int main()
{int vid,
       n ;			//число слагаемых, попавших в сумму
 double x, xn, xk, 	//текущее, начальное и конечное значения аргумента
	h ;			//шаг изменения значения аргумента
 double eps,		//точность вычисления суммы
	rez ;			//результат вычисления суммы ряда
 setlocale(LC_ALL,"Russian") ;
 for(;;)
 {//Ввод исходных данных
  cout << "\n                      Вид действия:" << endl ;
  cout << "                  1 - получение таблицы значений" << endl ;
  cout << "                  2 - завершение работы программы" << endl ;
  cout << "                  Выберите вид действия -> " ;
  cin >> vid ;
  if (vid == 1)
  {cout << " Введите начальное значение аргумента " ;
   cin >> xn ;
   if (fabs(xn) <= 1)
      {cout << " Ошибка! Значение д.б. xn<=1" ;
       continue ;
      }
   cout << " Введите конечное значение аргумента " ;
   cin >> xk ;
   if ((fabs(xk) <= 1) || (xk < xn))
      {cout << " Ошибка! Значение д.б. xn<=1 и xk>=xn" ;
       continue ;
      }
   cout << " Введите шаг изменения аргумента h " ;
   cin >> h ;
   if (h <= 0)
      {cout << " Ошибка! Значение h д.б. >0" ;
       continue ;
      }
   cout << " Введите точность вычисления eps " ;
   cin >> eps ;
   if ((eps <= 0) || (eps > 0.1))
      {cout << " Ошибка! Значение eps д.б. >0 и <=0.1" ;
       continue ;
      }
//Вывод заголовка
   cout << "\n Аргумент|  Сумма |Кол.слаг.|Контрольное значение" << endl ;
   x =xn ;
   do{n = 1 ;
      rez = riad(x, eps, n) ;
      cout.width(7) ; cout.setf(ios::fixed); cout.precision(2) ; cout << x ;
      if(n < INT_MAX)
      {cout.width(11); cout.setf(ios::fixed); cout.precision(4) ; cout << rez ;
       cout.width(6) ; 			   cout << n ;
       cout.width(15); cout.setf(ios::fixed); cout.precision(4) ; cout << log10((x+1.)/(x-1.)) << endl ;
      }
      else cout << " Точность не достигнута" << endl ;
      x += h ;
     }while(x <= xk + eps) ;
   }
   else break ;
 }
 return 1 ;
}
//main_end________________________________________________________________

//riad_beg________________________________________________________________
//Вычисление суммы
double riad(double x, double eps, int& n)
{double rez = 0 ;	//результат вычисления
 double pr = x ;		//величина текущего слагаемого
 n = 0 ;			//номер текущего слагаемого
 while(fabs(pr) > eps && n < INT_MAX)
      {rez += pr ;
       n++ ;
       pr *= 2*(2.*n-1.)/(x*x*(2*n+1));
      }
 return rez;
}
//riad_end________________________________________________________________

Разве это ln?