达到GMP整数大小限制?

时间:2014-08-25 04:02:20

标签: memory gmp

我已经用GMP编写了Toom乘法的实现。我测试了大约7000位数(23,000位)的2个数字的乘法,它运行得很好。然而,当我用70000位(230,000位)尝试它时,程序开始产生错误的答案。

我使用的是32位系统。 GMP可能会耗尽内存使用吗?我没有得到任何错误,所以我认为这不太可能。如果不是这种情况,我怀疑某处会有一些精度损失。

1 个答案:

答案 0 :(得分:3)

通常,GMP使用“malloc and friends”在堆上分配数据。如果无法正确分配数据,则会调用标准abort()函数(因此应简单地中止该过程),请参阅memory.c

ret = malloc (size);
if (ret == 0)
  {
    fprintf (stderr, "GNU MP: Cannot allocate memory (size=%lu)\n", (long) size);
    abort ();
  }

如果没有更多详细信息(请参阅我的评论),就无法分辨计算中出现的问题。