5^64
生成するはずのブースト多精度ライブラリを使用して計算する必要がありますが、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;
}