boost::multiprecision::pow,具有两个cpp_int值
boost::multiprecision::pow with two cpp_int values
有没有一种方法可以使用两个cpp_int值作为参数的boost::multiprecision::pow?我在文档中所能找到的都是cpp_int类型的参数作为基数,int类型作为指数。这似乎非常有限。
注释:这有什么限制?你会提升到MAXINT以上的力量吗?怎样
Q:
你的"如何"是什么意思?多精度库处理这样巨大的数字难道不是有意义的吗?
否。像这样的巨大数字在无损精度下几乎没有任何意义。
假设我们从一个相当小的数字开始,比如10
。不适合64位整数的最小指数是2^64。所以,这个数字是10^(2^64),大约是18446744073709551617位小数≈1.84467×10^19位小数。
要打印出来,你需要大约1.4757×10^11公吨的纸,假设每80克纸5000位数。这大约相当于地球上的总生物量(≈8×10^13千克)。
现在,你当然不傻了,而且你不会打印的!你只需要把它放在RAM中,这就是为什么你开始为7.6598 EB的RAM进行众筹。更不用说它的电源了,因为供电一小时大约需要7吉瓦时,这相当于小男孩核弹能量产量的一半。
你能做什么
Boost Multiprecision确实允许您使用精确无损的大整数表示,但系统的资源限制了总容量。
如图所示,对于这些类型,超过64位整数的指数是不合理的。
当然,您可以使用任意精度的十进制/二进制浮点表示(当然,仍然遵守物理和经济学的约束),如boost::multiprecision::mpf_float_1000
。
您可以使用boost::multiprecision::float和相应的boost::multiprecision::pow实现。
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 将两个 cpp 文件合并为一个 cpp 文件
- 如果两个线程相互依赖,则 cpp 线程连接应使用连接导致死锁
- 在两个.cpp文件之间定义全局类/结构指针
- CPP 程序二查找两个给定日期之间的天数,conol CMD
- 我似乎无法获得在两个.cpp文件中保持一致的值
- 使用两个.cpp文件和一个头文件
- 如何将CPP文件包括在两个不同的CPP文件中
- 尝试在终端(MacOSX)中编译两个.cpp文件(来自XCode)时"Duplicate symbol"
- 带有两个.cpp文件和一个标头文件的基本makefile
- 匿名命名空间,用于在两个 cpp 文件中包含一个函数
- 两个头文件和两个 .CPP 文件
- 在Unix/Linux(Ubuntu)中编译头文件和两个.cpp文件
- 使用两个cpp文件时使用未声明的标识符
- 如何将两个CPP添加到一个CPP程序文件中?
- 链接两个.cpp和一个.h文件
- c++在两个.cpp源文件之间传递动态变量
- 全局变量-使用带有两个cpp文件和一个头部c++的extern
- 在两个cpp文件之间共享头文件中定义的全局变量