相关疑难解决方法(0)

任意精度算术解释

我正在尝试学习C并且遇到无法使用真正的大数字(即100位,1000位等).我知道存在这样做的库,但我想尝试自己实现它.

我只是想知道是否有人或者可以提供任意精度算术的非常详细,愚蠢的解释.

math biginteger bignum

89
推荐指数
3
解决办法
3万
查看次数

最好的跨平台(便携式)任意精度数学库

我在C或C++中寻找一个好的任意精度数学库.你能给我一些意见/建议吗?

主要要求:

  1. 必须处理任意大整数(我的主要兴趣是整数).如果你不知道这个词是什么意思大,意味着像100000这样的东西!(阶乘为100000).
  2. 在库初始化/对象创建期间,不必指定精度.精度应该受系统可用资源的限制.
  3. 应该利用平台的全部功能,并且应该本地处理"小"数字.这意味着在64位平台上,计算2 ^ 33 + 2 ^ 32应该使用可用的64位CPU指令.库不应该像在同一平台上使用2 ^ 66 + 2 ^ 65那样计算它.
  4. 必须处理加法(+),减法( - ),乘法(*),整数除法(/),余数(%),幂(**),增量(++),减量( - ),gcd() ,factorial()和其他常见的整数算术计算有效.能够处理不产生整数结果的sqrt()(平方根),log()(对数)等函数是一个优点.处理符号计算的能力甚至更好.

这是我到目前为止发现的:

  1. JavaBigIntegerBigDecimal类:到目前为止我一直在使用它们.我已经阅读了源代码,但我不了解下面的数学.它可能基于我从未学过的理论/算法.
  2. 内置的整数类型或bc/Python/Ruby/Haskell/Lisp/Erlang/OCaml/PHP /其他一些语言的核心库:我曾经使用过其中的一些,但我不知道他们使用的是哪个库,或者他们正在使用哪种实现方式.

我所知道的:

  1. 使用char作为十进制数字,使用char*作为十进制字符串,并使用for循环对数字进行计算.
  2. 使用int(或long intlong long)作为基本"单元"并将其数组作为任意长整数,并使用for循环对元素进行计算.
  3. 使用整数类型将十进制数字(或几位数)存储为BCD(二进制编码的十进制).
  4. Booth的乘法算法 …

c c++ biginteger gmp bigdecimal

77
推荐指数
5
解决办法
2万
查看次数

标签 统计

biginteger ×2

bigdecimal ×1

bignum ×1

c ×1

c++ ×1

gmp ×1

math ×1