Lua的标准(或最佳支持)大数(任意精度)库是什么?

Jon*_*son 20 math precision lua bignum

我正在处理那些我无法完成的大数字.使用Lua的标准数学库,似乎没有方便的方法来保持精度超过某些内部限制.我还看到有几个库可以加载以使用大数字:

  1. http://oss.digirati.com.br/luabignum/
  2. http://www.tc.umn.edu/~ringx004/mapm-main.html
  3. http://lua-users.org/lists/lua-l/2002-02/msg00312.html(可能与#2相同)
  4. http://www.gammon.com.au/scripts/doc.php?general=lua_bc(但我找不到任何来源)

此外,如果已建立绑定,则可以从Lua调用C 中的许多库.

您是否有过使用这些库中的一个或多个的经验?

lhf*_*lhf 15

使用lbc而不是lmapm会更容易,因为lbc是自包含的.

require"bc"
s=bc.pow(2,1000):tostring()
z=0
for i=1,#s do
        z=z+s:byte(i)-("0"):byte(1)
end
print(z)
Run Code Online (Sandbox Code Playgroud)


Nor*_*sey 6

Lua Figueiredo 的lmapm图书馆,Lua语言的作者之一.


Jon*_*son 6

我使用Norman Ramsey的建议来解决Project Euler问题#16.我认为问题的关键在于准确计算303位整数,这并不是一个扰流.

以下是我需要安装和使用库的步骤:

  1. Lua需要在启用动态加载的情况下构建.我使用Cygwin,但我改变PLATsrc/Makefilelinux.默认情况下,none不启用动态加载.

  2. MAMP需要建立和安装的地方,你的C编译器可以找到它.我把libmapm.a/usr/local/lib/.接下来m_apm.hm_apm_lc.h/usr/local/include/.

  3. 需要将lmamp的makefile 更改为Lua和MAMP库的正确位置.对我来说,这意味着在取消的第二个声明LUA, LUAINC,LUALIB,和LUABIN和编辑的声明MAMP.

  4. 最后,mapm.so需要放在Lua会找到的地方.我把它放在了/usr/local/lib/lua/5.1/.

谢谢大家的建议!


Phi*_*Lho 5

我无法回答,但我会添加LGMP,一个GMP绑定.不曾用过.

不是我的专业领域,但我希望GNU多精度算术库在这里成为一个标准,不是吗?