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;
}
我的问题是:关于如何开发在基数为负时返回非 NaN 值的通用 pow 函数有什么想法吗?
更新 - 总会有一类结果只能用复数表示。
最佳答案
这不是预期值。期望值为复数 0.998 + 0.725i
.如果定义 a
和 b
作为std::complex<double>
它会起作用。
关于c++ - 负基例的类 Pow 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670989/