Подтвердить что ты не робот

Какая стандартная (или самая лучшая) библиотека большого числа (произвольная точность) для Lua?

Я работаю с большими числами, которые я не могу округлить. Используя стандартную математическую библиотеку Lua, похоже, нет удобного способа сохранить точность за пределами некоторого внутреннего предела. Я также вижу, что есть несколько библиотек, которые можно загружать для работы с большими номерами:

Кроме того, есть много библиотек в C, которые могут быть вызваны из Lua, если привязки, которые установлены.

У вас был опыт работы с одной или несколькими из этих библиотек?

4b9b3361

Ответ 2

Использование 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)

Ответ 3

Я использовал предложение Нормана Рэмси решить проблему Эйлера Эйлера # 16. Я не думаю, что это спойлер, чтобы сказать, что суть проблемы состоит в том, чтобы точно вычислить целое число из 303 цифр.

Вот шаги, которые мне нужно для установки и использования библиотеки:

  • Lua необходимо создать с включенной динамической загрузкой. Я использую Cygwin, но я изменил PLAT в src/Makefile на linux. Значение по умолчанию none не включает динамическую загрузку.

  • MAMP необходимо установить и установить где-нибудь, что ваш компилятор C может его найти. Я положил libmapm.a в /usr/local/lib/. Затем m_apm.h и m_apm_lc.h отправились в /usr/local/include/.

  • Файл make для lmamp должен быть изменен для правильного расположения библиотек Lua и MAMP. Для меня это означает раскомментирование второго объявления LUA, LUAINC, LUALIB и LUABIN и редактирование объявления MAMP.

  • Наконец, mapm.so нужно разместить где-нибудь, что найдет Lua. Я положил его на /usr/local/lib/lua/5.1/.

Спасибо всем за предложения!

Ответ 4

Я не могу ответить, но я добавлю LGMP, привязку к GMP. Не используется.

Не моя область знаний, но я бы ожидал, что библиотека арифметических данных с множественной точностью GNU будет довольно стандартным здесь, нет?

Ответ 5

Хотя не произвольная точность, Lua decNumber, оболочка Lua 5.1 для IBM decNumber, реализует предлагаемый общий десятичный арифметический стандарт IEEE 754r. Он имеет арифметические операторы Lua 5.1 и многое другое, полный контроль над режимами округления и рабочую точность до 69 десятичных цифр.