我需要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;
}