मैं मनमाना-परिशुद्धता अंकगणित (कभी-कभी बिग्नम, इंटेगर या बिगइन्ट कहा जाता है) को लागू करने के विभिन्न तरीकों के बारे में सोच रहा हूं।क्या मनमानी-परिशुद्धता अंकगणित के लिए सामान्य कार्यान्वयन रणनीतियों हैं जो विशिष्ट भाषा के बावजूद मान्य हैं?
ऐसा लगता है कि सामान्य मुहावरे वास्तविक मूल्य के भंडारण के लिए एक सरणी का उपयोग करना है और यदि आवश्यकताएं बढ़ती हैं या घटती हैं तो इसे आवश्यकतानुसार पुन: आवंटित करें।
अधिक सटीक, ऐसा लगता है कि सरणी तत्वों का थोड़ा सा आकार आमतौर पर समर्थित दूसरा सबसे बड़ा आकार होता है (शायद लागू करने के लिए अतिप्रवाह आसान गणना के साथ गणना करने के लिए?), ई। जी। भाषा/मंच 128 बिट आकार के नंबरों का समर्थन करता है -> ओवरफ्लो को संभालने के लिए 64 बिट संख्या + 128 बिट चर का सरणी।
क्या मनमाने ढंग से सटीक अंकगणितीय को लागू करने के मूलभूत तरीके हैं या ऊपर प्रदर्शन के बिना इसे लागू करने के "प्रयास किए गए और सही" तरीके से ऊपर है?
मेरा प्रश्न अंतर्निहित डेटा संरचना के बारे में है, न कि संचालन के लिए एल्गोरिदम। मुझे करात्सुबा, टूम-कुक एट अलआई पता है।
बड़े पूर्णांक के लिए, एफएफटी और डीएफटी का उपयोग किया जाता है, मुझे लगता है। –
दक्षता के लिए (प्रसार प्रसार) एक बिग्नम को आमतौर पर छोटे-अंत फैशन में बाइनरी सरणी के रूप में संग्रहीत किया जाता है। सरणी तत्वों के आकार को वास्तव में किसी कंप्यूटर को ले जाने के लिए संख्याओं को संसाधित करने की क्षमता के साथ करना होता है (जोड़ों के लिए) या उधार (घटाव के लिए)। प्रोग्रामिंग भाषा विशिष्ट, बिग्नम धारण करने वाला सरणी बाइट सरणी हो सकता है, क्योंकि बाइट आसानी से उपलब्ध सबसे कुशल डेटा प्रकार में डाला जा सकता है। एक int के लिए 4 बाइट, 8 बाइट्स एक लंबे आदि तक –
असल में, अतिरिक्त और घटाव के लिए, आप मूल बिट लंबाई का उपयोग कर सकते हैं। यदि सकारात्मक पूर्णांक के लिए एक वाह है, 'ए + बी <मिनट (ए, बी) 'और' ए-बी> ए' है। लेकिन गुणा में अतिप्रवाह को संभालना काफी मुश्किल है। करने योग्य, लेकिन सीपीयू के लिए सबसे अच्छा छोड़ दिया। :) – vhallac