7

क्या सी ++ में मनमाना-परिशुद्धता अंकगणितीय के लिए कोई संकलन-समय लाइब्रेरी (टेम्पलेट मेटाप्रोग्रामिंग) है?सी ++ संकलन-समय बिग्नम लाइब्रेरी

मुझे एवीआर माइक्रोकंट्रोलर के लिए मेरे कार्यक्रम में निश्चित-बिंदु अंकगणितीय और बाइनरी स्केलिंग के साथ मदद करने की आवश्यकता है। उदाहरण के लिए, जब दो संख्याएं प्रत्येक अपनी सीमाओं के साथ गुणा हो जाती हैं, तो परिणाम के सीमाओं की गणना करने के लिए बिग्नम का उपयोग किया जाएगा, और इनपुट बिंदु और/या आउटपुट में अंश बिंदु को उचित के रूप में स्थानांतरित किया जाएगा। लेकिन परिणाम की सीमा मानक पूर्णांक प्रकारों में प्रतिनिधित्व योग्य नहीं हो सकती है।

+0

"टेम्पलेट मेटाप्रोग्रामिंग" से आपका क्या मतलब है? "BigInteger" प्रकार पुस्तकालय व्यावहारिक रूप से हमेशा गतिशील स्मृति आवंटन का उपयोग करते हैं। अन्यथा, आप केवल एक बड़े प्रकार का उपयोग कर सकते हैं (यानी दो हस्ताक्षरित int32 के गुणा करने के लिए हस्ताक्षरित int64) – DarkWanderer

+2

@DarkWanderer मेरा मतलब है, ठीक है, टेम्पलेट मेटाप्रोग्रामिंग। इस लिंक को आपको कुछ विचार देना चाहिए कि संकलन समय पर बिग्नम कैसे कार्यान्वित किए जा सकते हैं: http://alpmestan.wordpress.com/2009/12/03/functional-compile-time-templates-based-type-lists-in-c/ । संक्षेप में, एक संकलन-समय बिग्नम एक (रिकर्सिव) प्रकार होगा, और संकलक स्मृति आवंटन से निपटेंगे। –

+0

@DarkWanderer एक बड़ा पूर्णांक प्रकार पर्याप्त नहीं है - मेरी समस्या संकलन समय पर प्रकार की सीमाओं से निपटने के बारे में है, और मुझे "ए + बी के साथ कुछ संकलन-समय जांचने की आवश्यकता है। INT64_MIN "। संकलन-समय बिग्नम इंटीजर ओवरफ्लो के बारे में चिंता किए बिना इन्हें "सीधे" लिखा जा सकता है। –

उत्तर

1

संभवतः Boost.Multiprecision वह है जो आप खोज रहे हैं।

+0

प्रलेखन निर्दिष्ट करता है "हालांकि, आप इस प्रकार के संकलन-समय अंकगणित करने में सक्षम नहीं होंगे।" –

संबंधित मुद्दे