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 関数を開発する方法についてのアイデアはありますか?
更新 - 複素数を使用してのみ表現できる結果のクラスが常に存在します。