LUA의 표준 (또는 가장 잘 지원되는) 대형 수 (임의의 정밀) 라이브러리는 무엇입니까?
문제
나는 반올림 할 수없는 많은 숫자로 일하고 있습니다. LUA의 표준 수학 라이브러리를 사용하면 일부 내부 한도를지나 정밀도를 보존하는 편리한 방법이없는 것 같습니다. 또한 큰 숫자로 작업하도록로드 할 수있는 여러 라이브러리가 있습니다.
- http://oss.digirati.com.br/luabignum/
- http://www.tc.umn.edu/~ringx004/mapm-main.html
- http://lua-users.org/lists/lua-l/2002-02/msg00312.html ( #2와 동일 할 수 있음)
- http://www.gammon.com.au/scripts/doc.php?general=lua_bc (하지만 나는 어떤 출처도 찾을 수 없다)
더욱이 있습니다 많은 도서관 C에서는 LUA에서 호출 할 수 있습니다.
이 라이브러리 중 하나 이상에 대한 경험이 있습니까?
해결책
그만큼 LMAPM 라이브러리 LUA 언어의 저자 중 한 명인 Luiz Figueiredo.
다른 팁
사용 LBC LBC가 독립적이기 때문에 LMAPM 대신 더 쉬울 것입니다.
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)
프로젝트 Euler 문제를 해결하기 위해 Norman Ramsey의 제안을 사용했습니다. #16. 문제의 요점이 303 자리 정수를 정확하게 계산한다고 스포일러라고 생각하지 않습니다.
라이브러리를 설치하고 사용하는 데 필요한 단계는 다음과 같습니다.
LUA는 동적 로딩을 활성화하여 구축해야합니다. Cygwin을 사용하지만 변경했습니다
PLAT
안에src/Makefile
되려고linux
. 기본값,none
, 동적 하중을 활성화하지 않습니다.그만큼 맘 C 컴파일러가 찾을 수있는 어딘가에 빌드 및 설치해야합니다. 나는 넣었다
libmapm.a
안에/usr/local/lib/
. 다음m_apm.h
그리고m_apm_lc.h
갔다/usr/local/include/
.makefile에 대한 lmamp LUA 및 MAMP 라이브러리의 올바른 위치로 변경되어야합니다. 나를 위해, 그것은 두 번째 선언을하지 않는 것을 의미합니다.
LUA
,LUAINC
,LUALIB
, 그리고LUABIN
그리고 선언 편집MAMP
.드디어,
mapm.so
Lua가 찾을 수있는 곳에 배치해야합니다. 나는 그것을 넣었다/usr/local/lib/lua/5.1/
.
제안에 감사드립니다!
정말 대답 할 수는 없지만 추가하겠습니다 LGMP, GMP 결합. 사용되지 않습니다.
내 전문 분야는 아니지만 GNU 다중 정밀 산술 라이브러리가 여기서 상당히 표준이 될 것으로 기대합니다.
그렇지는 않지만 임의 정도, Lua Dynumber, IBM 탈퇴를위한 LUA 5.1 래퍼는 제안 된 일반 소수점 산술 표준 IEEE 754R을 구현합니다. LUA 5.1 산술 연산자와 반올림 모드에 대한 완전한 제어 및 최대 69 자리의 정밀도가 있습니다.