c - C中是否有任何可靠的大整数实现?

标签 c integer

<分区>

我正在从事一个项目,我需要以绝对精度和尽可能快的速度处理大整数(如 3^361)。 C 是我熟悉的最快的语言,因此我尝试用该语言编写我的解决方案。

问题是除了 Python 的源代码之外,我无法找到任何数据类型的良好实现来用 C 语言表示无限整数。我需要时间来检查代码并确定我需要什么。

我宁愿使用别人经过测试的具有全套功能的代码(加法、减法、乘法、除法、调制、求幂、相等性检查……即使是按位运算也很不错),而不是花费数周的时间我什至开始让自己的版本达到标准。虽然这将是一次很好的学习经历,但这不是我的问题重点,我宁愿进入我感兴趣的部分:)

最佳答案

一些人已经提到了 GMP。我只想补充一点,至少在我最后一次查看时,它非常限于使用 gcc。

如果你想使用其他编译器,你可能会考虑的是 NTLMIRACL .我对 MIRACL 进行了一些测试,它似乎运行良好。我使用 NTL 的次数更多了,虽然大整数更像是它的副业,但它仍然做得很好。它并不声称与 GMP 一样快(事实上,可以使用 GMP 进行基本操作),但是当我在两者之间进行一些最小的基准测试时,我没有发现很多显着差异(尽管那是很久以前的事了,我怀疑它是否仍然有效)。

关于c - C中是否有任何可靠的大整数实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3191002/

相关文章:

c++ - opencv 是如何工作的?

c - 需要一种算法来为 C 中的字符串生成整数哈希值

java - Java中的整数到两位十六进制

javascript - jQuery:如何在没有 for 循环的情况下将事件处理程序应用于 $ ('#text' + 'any integer' )?

c++ - 编译器是否避免中间整数提升或转换?

c++ - 8个8位字符数组示意图

c - C 中的 realloc 函数导致 "realloc(): invalid pointer:"错误

c++ - 为什么taskset对fedora没有影响?

c - 确定 UTF16 值是 libunistring 中的代理项

python - 如何循环遍历一个整数并提取另一个较短的整数(从左到右)?