负基础情况的类Pow函数

时间:2013-07-16 07:54:03

标签: c++ algorithm math exponentiation

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值?

更新 - 总会有一类结果只能用复数表示。

1 个答案:

答案 0 :(得分:6)

这不是预期值。期望值是复数0.998 + 0.725i。如果您将ab定义为std::complex<double>,则可以使用。