क्या किसी ने ऐसी चीज देखी है? छोटे स्व-पर्याप्त मॉड्यूल को प्राथमिकता दी जाती है।शुद्ध पाइथन तर्कसंगत संख्या मॉड्यूल 2.5
उत्तर
fractions module 2.6 से आवश्यक हो तो बाहर निकाल दिया जा सकता है। Frctions.py, numbers.py, और abc.py पकड़ो; सभी शुद्ध पायथन मॉड्यूल।
आप (2.6 शाखा, 2.7 काम नहीं करता है) यहां से एकल फ़ाइलें प्राप्त कर सकते हैं: प्रयास करने के लिए http://hg.python.org/cpython/branches
SymPy एक प्रतीकात्मक गणित लाइब्रेरी है जो पूरी तरह से पायथन में लिखी गई है और तर्कसंगत संख्याओं के लिए पूर्ण समर्थन है। tutorial से:
>>> from sympy import *
>>> a = Rational(1,2)
>>> a
1/2
>>> a*2
1
>>> Rational(2)**50/Rational(10)**50
1/88817841970012523233890533447265625
वहाँ भी अजगर (GMPY) जो है, जबकि शुद्ध अजगर, शायद और अधिक कुशल है के लिए जीएमपी है।
धन्यवाद। सिम्पी का तर्कसंगत अच्छा है, अगर लाइब्रेरी के अन्य हिस्सों के साथ थोड़ा सा अंतर्निहित है। – Constantin
एक और बात अजगर 2.5 रखरखाव शाखा में डेमो फ़ोल्डर से Rat.py है। अगर मैं सही ढंग से समझता हूं, तो यह 2.6 fractions
का पिता है। यह निर्भरता के बिना एक एकल मॉड्यूल है।
>>> from Rat import rat
>>> rat(1)/rat(3)
Rat(1,3)
>>> rat(1, 3) ** 2
Rat(1,9)
अद्यतन: नहीं, fractions.py
मेरे कार्य के लिए लगभग 2.5 गुना तेज है।
सच है, मैंने सोचा कि यह और भी मुश्किल होगा! – Constantin
नोट: यह सामान्य मामले में काम नहीं करता है। उदा। फ्रैक्शन। फ्रैक्शन (10) * 10 => विशेषता त्रुटि: 'int' ऑब्जेक्ट में कोई विशेषता 'numerator' नहीं है। प्रतीत होता है कि int ऑब्जेक्ट्स Python 2.6 में एक संख्यात्मक है, लेकिन पायथन 2.5 में नहीं। मुझे यह जानने में दिलचस्पी होगी कि दूसरों ने इस समस्या के आसपास कैसे काम किया (मैंने ऑपरेटर का उपयोग करने से पहले अपने शाब्दिकों को भिन्न होने के लिए मजबूर किया)। – benno
इंटरेक्ट और लंबे समय से सही तरीके से संभालने के लिए '_operator_fallbacks' फ़ंक्शन में 'आगे' और 'रिवर्स' की परिभाषाओं को बदलने के लिए एक बेहतर कार्य-आसपास है। सीमित प्रारूप विकल्पों के कारण टिप्पणी में वर्णित करना मुश्किल है, लेकिन कुछ ऐसा है: "elif isinstance (बी, (int, long)): monomorphic_operator (ए, फ्रैक्शन (बी)" लौटाएं – benno