任意の大きなグリッドを処理する関数があります。を使用することにより、別の数の累乗のグリッドが double に収まるかどうかを計算する必要がありstd::pow
ます。それができない場合は、別のブランチを取り、通常の代わりに gnu multiprecision ライブラリを使用したいと考えています。
次のことを簡単に確認する方法はありますか。
int a = 1024;
int b = 0-10;
if(checkPowFitsDouble(a, b)) {
long c = static_cast<long>(std::pow(a, b)); //this will only work if b < 6
} else {
mpz_t c; //yada yada gmp
}
私はcheckPowFitsDoubleに完全に困惑しています。私が知らない数学のトリックがあるかもしれません。