b
を_int64
変数と仮定します。sqrt((long double)a)*sqrt((long double)b)
高精度の80ビット浮動小数点で計算する必要があります。
例。(__int64)(sqrt((long double)a)*sqrt((long double)a) + 0.5) != a
多くの場合、そうあるべきです。
どのwin32C/ C ++コンパイラが80ビット浮動小数点演算を管理できますか?
b
を_int64
変数と仮定します。sqrt((long double)a)*sqrt((long double)b)
高精度の80ビット浮動小数点で計算する必要があります。
例。(__int64)(sqrt((long double)a)*sqrt((long double)a) + 0.5) != a
多くの場合、そうあるべきです。
どのwin32C/ C ++コンパイラが80ビット浮動小数点演算を管理できますか?
整数の平方根を取るために浮動小数点を使用するべきではありません。特に、long double
サポートが不十分sqrtl
で、一部のシステムでは概算(正確ではない)になる可能性があります。代わりに、整数平方根アルゴリズムを検索してください。
sqrt()がlong doubleに対して有効であることを確認しますか?
少なくとも一部の環境では、sqrt()はdouble用、sqrtf()はfloat用、sqrtl()はlongdouble用です。
EmbarcaderoのC++Builderは、80ビット浮動小数点を処理します。long doubleタイプ、または(Delphiからインポートされた)Extndedタイプを使用します。それらは同じです。