0

std::pow は、ベース値と指数値のほとんどの組み合わせで問題ありません。

ただし、基数が負で分数の場合、 std::pow はキールオーバーします。

以下の例では、予想される値がおよそ -1.2332863005546 の場合に、 (定義に従って) NaN が返されます。

#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 関数を開発する方法についてのアイデアはありますか?

更新 - 複素数を使用してのみ表現できる結果のクラスが常に存在します。

4

1 に答える 1

6

これは期待値ではありません。期待値は複素数0.998 + 0.725iです。andを定義するabstd::complex<double>それが機能します。

于 2013-07-16T07:58:01.973 に答える