【问题标题】:Is there a generally accepted alternative to GMP for arbitrary precision? [closed]对于任意精度,是否存在普遍接受的 GMP 替代方案? [关闭]
【发布时间】:2011-09-12 13:00:44
【问题描述】:

在寻找 BigInt 库的过程中,我遇到了这篇文章: C or C++ BigInt library on Microsoft Windows

接受的答案提到了 GMP 库,但其中一位评论者声称该库不会非常优雅地出错,并且不适合生产代码。有人对这个库进行过长期开发吗?有什么好的选择吗?提前致谢。

【问题讨论】:

标签: c++ bigint


【解决方案1】:

好吧,像 GCC 这样的大型项目使用它来进行 printf 和编译时计算(如果我在这里错了,请纠正我),我认为它足够稳定。我认为有一些方法可以限制评论者担心的内存不足错误,但我没有亲自使用它,所以我无法帮助你。我要说的是,它是一个经过验证的稳定库。它甚至还有一个 C++ 接口库。

【讨论】:

  • 这很可能是一个独立的问题,但会在帖子的上下文中保留问题。当您说“限制错误”时,我假设您的意思是通过异常处理,还是您会修改源代码(可怕)?
  • 不,我想 GMP 具有限制内存的功能/定义。编辑 GMP 的来源是 ludacris。有关链接问题中的评论者似乎错过的所有信息,请参阅 here
  • AFAIU GCC 使用 GMP/MPFR/MPC 进行常量折叠,因此在固定精度模式下运行。我想如果你想做任意精度算术(例如精确有理算术),任何可能的内存问题都可能出现。
【解决方案2】:

Tcl 语言的实现使用libtommath 作为它的 bigint 库,而且它看起来确实适合生产使用。 (它是一个 C 库,不是 C++,但它肯定是合适的。)

【讨论】:

  • @Vlad:不。实际上,C完全适合生产使用。过去当然 C 比 C++ 更合适,因为它更容易控制某些平台上的依赖关系,但我不知道这是否仍然正确。 (作为支持某些部署模型的一部分,Tcl 的实现对链接有特别严格的要求;大多数代码不受这样的限制。不过,它占用的空间比我必须详细介绍的要多,而且它是题外话无论如何这个问题。)
  • 还有tomsfastmathtommath
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2021-11-26
  • 2020-05-27
  • 2011-05-05
  • 1970-01-01
  • 2011-01-29
  • 2011-02-05
相关资源
最近更新 更多