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

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

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

我宁愿使用其他人的测试代码,其中包含一整套function(加法,减法,乘法,除法,调制,求幂,等式检查……甚至按位运算都会很好),而不是花费几周时间才能让我连开始让我自己的版本达到标准杆。 虽然这将是一个很好的学习经历,但它不是我的问题的焦点,我宁愿到达我感兴趣的部分:)

Gnu MP提供了一个bignum图书馆。

有几个人已经提到过GMP。 我只会添加至少我最后一次看,它非常适合使用gcc。

如果你想使用其他编译器,你可能会考虑使用NTL和MIRACL 。 我对MIRACL进行了一些测试,看起来效果相当不错。 我已经使用了相当多的NTL,虽然大整数更多的是它的副业,但它仍然很好。 它声称没有GMP那么快(实际上,可以使用GMP进行基本操作),但是当我在两者之间做了一些最小的基准测试时,我没有发现很多重大差异(尽管那个很久以前,我怀疑它是否也有效)。

OpenSSL库还提供了一个可靠的BigNum实现( )。

我使用MAPM ,它是一个可移植的任意精度(整数和浮点)库。

如果您需要ANSI Standard C,请在Dave Hanson的C接口和实现中获取代码。 非常清晰,设计精良。

如果gcc和gcc扩展都没问题,那么正如其他人指出的那样,Gnu Multiprecision Library(GMP)已被充分考虑并广泛使用。

来自libtomcrypt的libtommath可能是最小,最简单,最快的。 (有趣的是这三个最高级的几乎总是聚集在一起……)如果你找不到上游,你可以从dropbear ssh源代码树中获取源代码。