我正在寻找一个良好的 C 或 C + + 任意精度的数学库。你能给我一些建议吗?
基本要求:
必须的可以处理任意大的整数ーー我的主要兴趣在于整数。如果你不知道“任意大”这个词是什么意思,想象一下100000!(100000的阶乘)。
在库初始化或对象创建期间指定的精度 必须不需要。只有的精度应该受到系统可用资源的限制。
它的 应该利用平台的全部权力,并应处理“小”本地数字。这意味着在64位平台上,计算(2 ^ 33 + 2 ^ 32)应该使用可用的64位 CPU 指令。库 不应该计算这个值的方法与它在同一平台上计算(2 ^ 66 + 2 ^ 65)的方法相同。
它 必须的有效地处理加法(+
)、减法(-
)、乘法(*
)、整数除法(/
)、余数(%
)、幂(**
)、增量(++
)、减法(--
)、 GCD、阶乘和其他常见的整数算术计算。能够处理不产生整数结果的函数(如平方根和对数)是一个优点。处理 象征性计算的能力甚至更好。
以下是我目前为止的发现:
Java 的 译自: 美国《科学》杂志网站(http://java.sun.com/javase/6/docs/api/java/data/BigInteger.html)和 译自: 美国《科学》杂志网站(http://java.sun.com/javase/6/docs/api/java/data/BigDecimal.html)类: 到目前为止我一直在使用它们。我读了源代码,但是我不明白其中的数学原理。它可能基于我从未学过的理论和算法。
内置的整数类型或者 翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳翻译: 奇芳、 一个 href = “ http://docs.Python.org/release/3.1.2/reference/lexical _ analysis.html # whole-Literals”rel = “ noReferrer”> Python 、 露比、 Haskell、 口齿不清、 二郎、 奥卡姆、 PHP等其他语言的核心库: 我使用过其中的一些,但是我不知道他们使用的是哪个库,或者他们使用的是哪种实现。
我已经知道的是:
对十进制数字使用 char
,对十进制字符串使用 char*
,并使用 for
循环对数字进行计算。
使用 int
(或者 long int
,或者 long long
)作为基本的“单元”,使用该类型的数组作为任意长整数,并使用 for
循环对元素进行计算。
使用整数类型将十进制数字(或几个数字)存储为 译自: http://www.wikipedia.org/wiki/2010/09/09/2010/09/09/09/2010/09/09/09/09/2010/09/09/09/09/09/09/09/09/09/09/09/09/09/09/09/。
我不知道的是:
char*
字符串来存储中间的十进制结果)。我感激的是:
对 GMP、 译自: 美国《每日邮报》网站(http://www.MPFR.org/)原著: http://www.MPFR.org/(http://www.MPFR.org/)原著: http://www.MPFR.org/(http://www.MPFR.org/)、 DecNumber < a href = “ http://speleotrove.com/decNumber.html”rel = “ noReferrer”> decNumber (或者其他你认为不错的库)进行很好的比较。
关于我应该读的书和文章的好建议。例如,有关 不幼稚二进制到十进制转换算法如何工作的图表就很好。道格拉斯 · 琼斯的文章《 精度有限的二进制到十进制转换》就是一篇好文章的例子。
任何帮助。
如果您认为使用 double
(或者 long double
,或者 long long double
)可以很容易地解决这个问题,请 不要回答这个问题。如果你这样认为,你就不明白问题所在。