Was ist die Norm (oder am besten unterstützt) große Zahl (beliebige Genauigkeit) Bibliothek für Lua?

StackOverflow https://stackoverflow.com/questions/288707

  •  08-07-2019
  •  | 
  •  

Frage

Ich arbeite mit großen Zahlen, die ich kann nicht abgerundet haben. Mit Lua Standard-Mathematik-Bibliothek, scheint es keine bequeme Möglichkeit, zu bewahren Präzision Vergangenheit einige interne Grenze. Ich sehe auch, gibt es mehrere Bibliotheken, die mit großen Zahlen geladen werden können, arbeiten:

  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 (vielleicht zu # 2 identisch sein)
  4. http://www.gammon.com.au/scripts/ doc.php? General = lua_bc (aber ich kann jede Quelle nicht gefunden)

Darüber hinaus gibt es viele Bibliotheken in C, die aufgerufen werden können von Lua, wenn die Bindungen in dem festgelegt.

Haben Sie keine Erfahrungen mit einem oder mehreren dieser Bibliotheken?

War es hilfreich?

Lösung

Die lmapm Bibliothek von Luiz Figueiredo, ein von den Autoren der Lua Sprache.

Andere Tipps

Mit lbc statt von lmapm wäre einfacher, weil lbc in sich geschlossen ist.

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)

habe ich Norman Ramsey Vorschlag Projekt Euler Problem # 16 zu lösen. Ich glaube nicht, es ist ein Spoiler zu sagen, dass der Kern des Problems eine 303-stellige ganze Zahl genau ist die Berechnung.

Hier sind die Schritte, die ich benötigen, um die Bibliothek zu installieren und verwenden:

  1. Lua muss gebaut werden, mit dynamischer Belastung aktiviert. Ich benutze Cygwin, aber ich änderte PLAT in src/Makefile linux werden. Der Standard, none, ermöglicht keine dynamische Belastung.

  2. Das MAMP muss gebaut und installiert werden irgendwo, dass Ihr C-Compiler kann es finden. Ich habe libmapm.a in /usr/local/lib/. Weiter m_apm.h und m_apm_lc.h ging an /usr/local/include/.

  3. Die Make-Datei für lmamp Bedürfnisse geändert an die richtige Stelle der Lua und MAMP Bibliotheken werden. Für mich, das bedeutet, dass die zweite Erklärung von LUA, LUAINC, LUALIB und LUABIN und Bearbeitung der Deklaration von MAMP uncommenting.

  4. Schließlich mapm.so muss irgendwo platziert werden, dass Lua es finden. Ich habe es bei /usr/local/lib/lua/5.1/.

Vielen Dank für die Anregungen!

Ich kann nicht wirklich beantworten, aber ich werde hinzufügen LGMP , Bindung ein GMP. Nicht verwendet.

Nicht mein Fachgebiet, aber ich würde das GNU mehrere Genauigkeit arithmetische Bibliothek erwartet hier durchaus ein Standard zu sein, nicht wahr?

Obwohl nicht beliebige Präzision, Lua decNumber , ein Lua 5.1 Wrapper für IBM decNumber, implementiert den Standard IEEE 754r Allgemeine Dezimalarithmetik vorgeschlagen. Es hat die Lua 5.1 arithmetischen Operatoren und mehr, die volle Kontrolle über Modi Rundung und Arbeitsgenauigkeit auf 69 Dezimalstellen auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top