我需要5^64使用 boost 多精度库进行计算,该库应该产生542101086242752217003726400434970855712890625但boost::multiprecision::pow()需要mpfloat并给出542101086242752217003726392492611895881105408.
但是,如果我循环并重复使用,mpint我会得到正确的结果。
这是一个错误吗?还是我boost::multiprecision::pow()以错误的方式使用?或者我有替代使用boost::multiprecision::pow()?
#include <iostream>
#include <string>
#include <boost/multiprecision/gmp.hpp>
typedef boost::multiprecision::mpz_int mpint;
typedef boost::multiprecision::number<boost::multiprecision::gmp_float<4> > mpfloat;
int main(){
mpfloat p = boost::multiprecision::pow(mpfloat(5), mpfloat(64));
std::cout << p.template convert_to<mpint>() << std::endl;
mpint res(1);
for(int i = 0; i < 64; ++i){
res = res * 5;
}
std::cout << res << std::endl;
}