Всем привет. Написал код по заданию, не выдает правильные значения. Не могу найти ошибку, помогите исправить ошибку?

само задание

Непосредственно мое "решение"

#include <iostream>
#include <cmath>

int main() {

   double x, e;
   std::cout << "Введите значение x: ";
   std::cin >> x;
   std::cout << "Введите значение epsilon: ";
   std::cin >> e;
   
   double S = 0.0;
   
   double term = 1.0;
   int k = 0;
   
   while (std::abs(term) >= e) {
       S += term;
       k++;
       term = ((-1) * std::pow(k, k) * std::pow(x, 2*k)) / (std::pow(2, k) * std::tgamma(k+1));
   }
   
   std::cout << "Сумма: " << S << std::endl;
   
   return 0;
}

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

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

а вот по поводу не применения функции pow

Ну, по гамбургскому счету, так по гамбургскому...

Где здесь pow?

double S(double x, double e)
{
    x = -x*x/2;
    double sum = 1, term = 1;
    for(int k = 1; abs(term) >= e; ++k)
        sum += term *= x/k;
    return sum;
}

Кстати, можно еще проще :)

double S(double x, double e)
{
     return exp(-x*x/2);
}

И кстати же, по поводу pow рекомендую посмотреть этот вопрос...

→ Ссылка