有没有办法使用boost :: multiprecision :: pow并将两个cpp_int值作为参数?我在文档中找到的所有参数都是base的cpp_int类型和exponent的int。这似乎非常有限。
答案 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实现。