我有一个处理任意大网格的函数。我需要计算另一个数字的幂的网格是否由于使用std::pow
. 如果不能,我想采用不同的分支并使用 gnu 多精度库而不是正常的。
有没有一种快速的方法来查看是否:
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 难住了;也许有一些我不知道的数学技巧。