c++ - 负基例的类 Pow 函数

标签 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;
}

我的问题是:关于如何开发在基数为负时返回非 NaN 值的通用 pow 函数有什么想法吗?

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

最佳答案

这不是预期值。期望值为复数 0.998 + 0.725i .如果定义 ab作为std::complex<double>它会起作用。

关于c++ - 负基例的类 Pow 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670989/

相关文章:

c++ - 为什么这个程序没有抛出任何错误?

c++ - 通过 WinApi 调整 WebKit COM 的大小

python - 开发算法可视化/模拟

python - gmpy2 : How do I track precision of mpc operations?

c++ - 如何在 win32 DLL 程序中使用 IntelliProtector API

c++ - 用于维护 API 向后二进制兼容性的 GCC 与 MS C++ 编译器

arrays - 当尝试在随机数字数组中查找运行最大值时,会调用多少次更新最大值?

java - SurfaceView运行方法代码

java - 我们如何计算大数字的行驶距离‽

math - Coursera 机器学习 : Gradient Descent vectorization