0

我需要5^64使用 boost 多精度库进行计算,该库应该产生542101086242752217003726400434970855712890625boost::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;
}
4

0 回答 0