25

四捨五入できない多数の数値を処理しています。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のライブラリが多数あります。

これらのライブラリの1つ以上を使用した経験はありますか?

4

6 に答える 6

17

lbc は自己完結型であるため、lmapm の代わりに lbc を使用する方が簡単です。

local bc = 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)
于 2009-05-14T14:10:17.390 に答える
8

Project Euler の問題#16を解決するために、Norman Ramsey の提案を使用しました。問題の核心は 303 桁の整数を正確に計算することだと言ってもネタバレではないと思います。

ライブラリをインストールして使用するために必要な手順は次のとおりです。

  1. Lua は動的読み込みを有効にしてビルドする必要があります。私は Cygwin を使用していますが、に変更PLATしましsrc/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私にとって、これは、 LUAINCLUALIB、およびの 2 番目の宣言のコメントを外し、LUABINの宣言を編集することを意味しMAMPます。

  4. 最後に、mapm.soLua が見つけられる場所に配置する必要があります。に入れました/usr/local/lib/lua/5.1/

提案をありがとうございました!

于 2009-03-06T22:58:16.553 に答える
7

Lua 言語の作者の 1 人である Luiz Figueiredo によるlmapmライブラリ。

于 2008-11-28T21:09:30.053 に答える
6

本当に答えることはできませんが、GMPバインディングであるLGMPを追加します。使用されていない。

私の専門分野ではありませんが、GNU多精度算術ライブラリはここではかなり標準的であると思いますね。

于 2008-11-13T23:16:02.330 に答える
4

任意の精度ではありませんが、IBM decNumber の Lua 5.1 ラッパーである Lua decNumberは、提案されている一般的な 10 進数演算標準 IEEE 754r を実装しています。Lua 5.1 算術演算子など、丸めモードを完全に制御し、最大 69 桁の精度で動作します。

于 2008-11-15T05:51:33.467 に答える