我正在使用GMP
和MPFR
库处理大量数字,我需要快速计算数字的幂。增强的结果将始终为整数,但潜在值可以为浮点数,也可以不是浮点数。 GMP
库可以非常快速地计算幂,但不接受浮动幂(使用mpz_pow_ui
函数),MPFR
库可以接受浮动幂,但是非常慢,因为它需要高精度才能正确计算整数(使用函数[ C0])。有什么解决办法吗? mpfr_pow
如何接受浮动幂,或GMP
如何快速(正确)计算整数?
MPFR
//Ex:
mpz_pow_ui(mpz_power, base, 4790) //Fast
// power = 4790.60
mpfr_pow(mpfr_power, base, power, MPFR_RNDN) //Slow
函数速度很快,因为可以通过乘法来进行计算。请注意,如果不需要精确的整数结果(如果指数较大,则很大),因此mpz_pow_ui
与mpfr_pow_ui
的速度会更快,因为可以用较小的精度进行乘法并取整。