Pow-подобная функция для отрицательного базового случая

std :: pow подходит для большинства комбинаций значений базы и экспоненты.

Однако, когда основание является отрицательным и дробным, std :: pow обнуляется.

В приведенном ниже примере возвращается NaN (согласно определению), когда ожидаемое значение примерно: -1.2332863005546

#include <cmath>
#include <cstdio>

int main()
{
double a = -1.1;
double b =  2.2;
double c = std::pow(a,b);
printf("%5.2f ^ %5.2f = %25.10f\n",a,b,c);
return 0;
}

Мой вопрос: есть ли идеи о том, как разработать общую функцию pow, которая возвращает значения, отличные от NaN, когда основание отрицательно?

Обновление — всегда будет класс результатов, которые можно выразить только с помощью комплексных чисел.

0

Решение

Это не ожидаемое значение. Ожидаемое значение — комплексное число 0.998 + 0.725i, Если вы определите a а также b как std::complex<double> это будет работать.

6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector