2008-11-13 16 views
18

मैं बड़ी संख्या में काम कर रहा हूं जिसे मैं गोल नहीं कर सकता। लुआ की मानक गणित पुस्तकालय का उपयोग करके, कुछ आंतरिक सीमा से पहले परिशुद्धता को संरक्षित करने का कोई सुविधाजनक तरीका प्रतीत नहीं होता है। मैं भी वहाँ कई पुस्तकालयों कि बड़ी संख्या के साथ काम करने लोड किया जा सकता हैं:लुआ के लिए मानक (या सर्वोत्तम समर्थित) बड़ी संख्या (मनमानी परिशुद्धता) लाइब्रेरी क्या है?

  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 (लेकिन मैं नहीं कर सकता किसी भी स्रोत को ढूंढें)

आगे, many libraries सी में हैं जिन्हें लूआ से बुलाया जा सकता है, अगर बाइंडिंग्स की स्थापना हुई।

क्या आपके पास इन पुस्तकालयों में से एक या अधिक के साथ कोई अनुभव है?

+1

मैं कई बड़ी संख्या पुस्तकालयों के लिए लुआ बाइंडिंग लिखा है: lbc, LBN, lint64, lmapm, LQD, http://www.tecgraf.puc-rio.br/~lhf/ftp/ में सभी उपलब्ध lua /। उनके पास विभिन्न सुविधाएं और आवश्यकताएं हैं। – lhf

उत्तर

5

लुइज़ फिगुएरियो द्वारा lmapm library, लुआ भाषा के लेखकों में से एक।

5

मैं वास्तव में जवाब नहीं दे सकता, लेकिन मैं LGMP, एक जीएमपी बाध्यकारी जोड़ दूंगा। उपयोग नहीं किया।

विशेषज्ञता का मेरा क्षेत्र नहीं, लेकिन मैं उम्मीद करता हूं कि जीएनयू एकाधिक परिशुद्धता अंकगणित पुस्तकालय काफी मानक होगा, नहीं?

+1

आह। यह सहायक है क्योंकि जीएमपी दस्तावेज इसकी सूची नहीं देता है: http://gmplib.org/manual/Language-Bindings.html#Language- बाइंडिंग –

3

नहीं हालांकि मनमाना सटीक, Lua decNumber, आईबीएम decNumber के लिए एक लुआ 5.1 आवरण, प्रस्तावित जनरल दशमलव अंकगणित मानक आईईईई 754r लागू करता है। इसमें लूआ 5.1 अंकगणितीय ऑपरेटरों और अधिक, गोलाकार मोड पर पूर्ण नियंत्रण है, और 69 दशमलव अंकों तक परिशुद्धता कार्य कर रहा है।

+1

69? मुझे जितनी जरूरत है उतनी तीसरी है। (मैं पर काम कर रहा हूं।) –

6

मैंने प्रोजेक्ट यूलर समस्या #16 को हल करने के लिए नॉर्मन रैमसे के सुझाव का उपयोग किया। मुझे नहीं लगता कि यह कहना एक स्पूइलर है कि समस्या का क्रूक्स 303 अंक पूर्णांक की गणना कर रहा है।

  1. लुआ गतिशील लोड हो रहा है के साथ सक्षम बनाया जाना चाहिए:

    ये कदम उठाएँ मैं स्थापित करने और लाइब्रेरी का उपयोग करने के लिए आवश्यक हैं। मैं सिगविन का उपयोग करता हूं, लेकिन मैंने src/Makefile में linux होने के लिए PLAT बदल दिया। डिफ़ॉल्ट, none, गतिशील लोडिंग सक्षम नहीं करता है।

  2. MAMP को कहीं भी बनाया जाना चाहिए और इंस्टॉल किया जाना चाहिए कि आपका सी कंपाइलर इसे ढूंढ सके। मैंने libmapm.a/usr/local/lib/ में रखा है। अगला m_apm.h और m_apm_lc.h/usr/local/include/ पर गया।

  3. lmamp के लिए मेकफ़ाइल को लुआ और एमएएमपी पुस्तकालयों के सही स्थान में बदलने की आवश्यकता है। मेरे लिए, इसका मतलब LUA, LUAINC, LUALIB, और LUABIN की दूसरी घोषणा को अस्वीकार करना और MAMP की घोषणा को संपादित करना है।

  4. अंत में, mapm.so को कहीं भी रखा जाना चाहिए कि लुआ इसे पायेगा। मैंने इसे /usr/local/lib/lua/5.1/ पर रखा।

सुझावों के लिए सभी को धन्यवाद!

13

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)