boost :: multiprecision :: pow有两个cpp_int值

时间:2017-04-19 01:03:56

标签: c++ boost pow

有没有办法使用boost :: multiprecision :: pow并将两个cpp_int值作为参数?我在文档中找到的所有参数都是base的cpp_int类型和exponent的int。这似乎非常有限。

2 个答案:

答案 0 :(得分:2)

  

评论:这是怎么限制的?你会加强到MAXINT以上的权力吗?怎么样?

     

Q
  你是什​​么意思'怎么样'?多精度库不是要处理这样庞大的数字吗?

没有。像这样的巨大数字在无损精确度上很少有任何意义。

让我们说我们从一个相当小的数字开始,比如result。不适合64位整数的最小指数为2 ^ 64。因此,该数字为10 ^(2 ^ 64),大约为18446744073709551617十进制数字 ≈1.84467×10 ^ 19十进制数字。

要打印您需要的纸张重量约为1.4757×10 ^ 11公吨,假设为5,000 digits per 80g page。这大致相当于地球上的总生物量(≈8×10 ^ 13 kg)。

现在,你当然不傻,也不打印!你只需要将它放在RAM中,这就是为什么你已经开始为你的7.6598艾字节RAM提供资金。更不用说它的供电,因为powering that一小时需要花费大约7千兆瓦时,这相当于小男孩核弹的能量产量的一半。

你能做什么

Boost Multiprecision 确实允许您使用巨大整数的精确无损表示,但系统资源限制了总容量。

如图所示,超过64位整数的指数对这些类型是不明智的。

当然,您可以使用任意精度的十进制/二进制浮点表示(当然,仍然遵守物理和经济学的约束),例如10

答案 1 :(得分:0)

你可以使用boost :: multiprecision :: float和相应的boost :: multi precision :: pow实现。