式の 11 乗根を取得しようとしていますが、 が返され-inf
ます。
std::cout << pow(j,(1.0/11.0)) << std::endl;
wherej
は単なるlog
表現です。その番号が有効であることを確認しましたが、有効です。力の表現が実行されている方法だと思います。これを行うより良い方法はありますか?ありがとう。
そしてはい、私はcmath
自分の仕事に含めました。
式の 11 乗根を取得しようとしていますが、 が返され-inf
ます。
std::cout << pow(j,(1.0/11.0)) << std::endl;
wherej
は単なるlog
表現です。その番号が有効であることを確認しましたが、有効です。力の表現が実行されている方法だと思います。これを行うより良い方法はありますか?ありがとう。
そしてはい、私はcmath
自分の仕事に含めました。
FPUエラーを探してみてください
また、これを pow の前に追加してみてください
asm { fninit; };
クラッシュ前の j の値は、私たちと共有する良い出発点になります。
pow の結果を float/double 変数に格納してみてください
コードを最小限に抑えます(すべてを部分的にオフにします)
発見したことをお知らせください。
入力がわずかに正常である場合、 pow が -inf を返す正当な理由は考えられません。ただし、負の数を渡す場合は、次のことを試す価値があります。
if(j==0) return 0;
if(j<0) return -pow(-j, 1.0/11.0);
return pow(j,1.0/11.0);