2010-06-16 19 views
15

ग्रीष्मकाल आ रहा है, और दोस्तों का एक समूह और मैं इसके लिए तैयार हो रहा हूं :)बूस्ट को पुस्तकालय जमा करने के लिए युक्तियाँ?

हमने संकलन-समय मनमाने ढंग से सटीक अनसुलझा इंटीजर बनाने का निर्णय लिया। हम लाइब्रेरी के साथ पूर्णांक एल्गोरिदम (फ़ंक्शंस) का एक सेट प्रदान करना चाहते हैं। हमने ऐसी लाइब्रेरी (SoC2010, C++0x Standard Library wishlist) के लिए कई अनुरोध देखे हैं। साथ ही, नियमित रूप से रन-टाइम bigint आमतौर पर इसके साथ अनुरोध किया जाता है, लेकिन हम स्मृति प्रबंधन की परेशानी में नहीं जाना चाहते हैं। यह विचार TTMath नामक लाइब्रेरी से आया था, दुर्भाग्यवश यह लाइब्रेरी केवल विशिष्ट प्लेटफॉर्म पर काम करती है क्योंकि लाइब्रेरी में असेंबली का व्यापक रूप से उपयोग किया जाता था। हम सी ++ मानक पुस्तकालय और बूस्ट के आधार पर मानक पुस्तकालय लिखना चाहते हैं। साथ ही, हम वर्तमान कंपेलरों में उपलब्ध सी ++ 0x सुविधाओं का उपयोग करना चाहते हैं जैसे कि उपयोगकर्ता द्वारा परिभाषित साहित्य और अन्य। यह तकनीकी रूप से लाइब्रेरी को गैर-मानक बना देगा, लेकिन हमें लगता है कि यह समय की बात है कि नए मानक आधिकारिक होंगे।

पुस्तकालय के रखरखाव, डिजाइन, कार्यान्वयन, दस्तावेज़ीकरण सहित पूरी प्रक्रिया पर आपके संकेत स्वागत से अधिक हैं। हम छात्रों और ताजा स्नातकों का एक समूह हैं जो गर्मियों में कुछ दिलचस्प खोज रहे हैं, लेकिन हम देखते हैं कि बूस्ट गुरुओं से भरा है और हम कुछ भी स्पष्ट नहीं करना चाहते हैं। हम ऑन लाइन संचार कर रहे हैं, तो कोई साझा सफेद बोर्डों :(

यहां इस तरह के एक पुस्तकालय का उपयोग करने का एक उदाहरण है:

typedef our_namespace::uint<512> uint512_t; 
// declaring an unsigned int with 512 bits width. 
// After that the user is supposed to deal with it just like the native types. 

धन्यवाद,

+0

बहुत बढ़िया सवाल है, मैं एक संकलन समय चल बिन्दु पुस्तकालय लिखने की कोशिश कर के बारे में सोच रहा था। – GManNickG

+0

वास्तव में? मुझे एक प्रश्न भी नहीं मिला। दिलचस्प है हालांकि, मुझे लगता है। – Dolph

+0

@ डॉल्फ मैथ्यूज क्षमा करें, मैं "प्रश्न" लिख रहा था और सीडब्ल्यू की जांच करना भूल गया था। धन्यवाद। – AraK

उत्तर

5

दो अतिरिक्त संकेत:

क) एक शुद्ध C++ 0x पुस्तकालय के लिए योजना बूस्ट के संदर्भ में एक अच्छा विचार हो के लिए नहीं लगता है। बूस्ट के लक्ष्यों में से एक क्रॉस-प्लेटफॉर्म/क्रॉस-कंपाइलर लाइब्रेरी प्रदान करना है। आम तौर पर C++ 0x सुविधाओं का उपयोग करने में रुचि रखने वाले बूस्ट लेखकों को एक C++ 0x कंपाइलर का उपयोग करते समय वैकल्पिक विकल्प के रूप में किया जाता है। उस उद्देश्य के लिए बूस्ट प्रीप्रोसेसर मैक्रोज़ का एक पूरा सेट पूर्वनिर्धारित करता है, प्रत्येक सी ++ 0x सुविधाओं में से प्रत्येक के लिए।

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

+0

धन्यवाद। हम आपकी सलाह लेंगे, और शुद्ध सी ++ 03 के साथ जाएंगे। – AraK

+0

@Arak यदि आप उपयोगकर्ता द्वारा परिभाषित शाब्दिक घोषणाओं को शामिल करते हैं तो यह अच्छा होगा। बस उन्हें उपयुक्त '# ifndef' (BOOST_NO_RAW_LITERALS मुझे लगता है) में लपेटें – KitsuneYMG

2

मेरे संकेत: करने के लिए जाना इस तरह के एक पतली के लिए प्रेरणा के साथ वेबसाइट को बढ़ावा देने और निर्देश है कि अपने सटीक सवाल का जवाब का पालन करें।

+0

रॉबर्ट्स धन्यवाद! आवश्यकताएं यहां हैं: https: //svn.boost.org/trac/boost/wiki/Guidelines/Requirements और हम उनका अनुसरण कर रहे हैं।क्या आपके मन में कुछ और है? – AraK

+0

तर्क के साथ अपने उत्पाद को वापस करने के लिए तैयार रहें। आपके पास संदेह और प्रशंसकों दोनों होंगे। –

4

सबसे पहले आप Boost Library Requirements and Guidelines पढ़ना चाहिए।

+0

ये स्पष्ट आवश्यकताएं हैं जिनके पास * किसी भी तरह का पालन करना है। उदाहरण के लिए आप इस डिज़ाइन निर्णय को कैसे देखेंगे: हम देशी प्रकारों की तरह अतिप्रवाह की जांच नहीं कर रहे हैं? क्या यह स्वीकार्य है? मैं इस विशिष्ट पुस्तकालय पर कुछ संकेतों को सुनना चाहूंगा जो किसी ने कुछ बंद किया है या कम से कम रुचि रखते हैं। धन्यवाद। – AraK

+0

अब मैं देख रहा हूं कि आप किस बारे में पूछ रहे हैं। मुझे उम्मीद है कि एसओ उपयोगकर्ताओं में से कुछ ऐसे क्षेत्र में ऐसा अनुभव करेंगे। –

+0

@AraK: इस तरह की प्रतिक्रिया के लिए, आपको शायद बूस्ट मेलिंग सूची पर समीक्षा के लिए पूछना चाहिए। –

1

प्रारंभ जी। मैं उत्सुक हूं कि वहां कौन से अनुप्रयोग हैं। "संकलन-समय" से मुझे लगता है कि आप एक टेम्पलेट मेटा प्रोग्रामिंग समाधान का मतलब है, सही?

यह एक मजेदार परियोजना की तरह लगता है, लेकिन शायद उपयोगी नहीं बढ़ावा के हिस्से के रूप (या शायद उपयोगी .. प्रदान करने के लिए है कि महत्वपूर्ण विस्तार होगा।)

+0

धन्यवाद। यह विशेष रूप से SoC2010 में अनुरोध किया गया है, मेरे प्रश्न में लिंक देखें। विचार सरल है, मैं इस सवाल में उपयोग का एक उदाहरण डालूंगा। – AraK

2

विचार एक पुस्तकालय से मेरे पास आया टीटीएमथ कहा जाता है, दुर्भाग्य से यह लाइब्रेरी केवल विशिष्ट प्लेटफ़ॉर्म पर काम करता है क्योंकि असेंबली का उपयोग पुस्तकालय में बड़े पैमाने पर किया जाता था।

क्या आप पूर्ण बीजगणितीय संचालन समर्थन को लागू करने की योजना बना रहे हैं? (इसके अलावा, गुणा, वर्ग रूट और इतने पर)।

यदि आप करते हैं, तो CryptoPP::Integer class पर भी देखें। यह पूरी तरह से विशेष रुप से प्रदर्शित, मनमानी-परिशुद्धता पूर्णांक वर्ग है जो पूर्ण अंकगणितीय परिचालनों का समर्थन करता है। यह क्रॉस-प्लेटफ़ॉर्म भी है।

इसके साथ समस्या यह है कि इसे जटिल बीजगणित के साथ इस्तीफा दिया जाता है (क्रिप्टोग्राफिक ऑपरेशंस के लिए) तो यह एक सामान्य पूर्णांक वर्ग से कहीं अधिक है।

यह कक्षा के हिस्से के रूप में बीईआर/डीईआर और ओपनपीजीपी एन्कोडिंग और डिकोडिंग का भी समर्थन करता है, साथ ही कई अन्य परिचालनों के साथ जो शायद सामान्य पूर्णांक कार्यान्वयन का हिस्सा नहीं होना चाहिए।

डिजाइन, कार्यान्वयन, प्रलेखन सहित पूरी प्रक्रिया पर आपका संकेत, पुस्तकालय की पोषणीय स्वागत से अधिक हैं।

तुम भी एक दशमलव वर्ग (c# decimal के समान), फ्लोट करने के लिए/डबल समान विकास, लेकिन बह निकला पर सटीक खो नहीं इस पर गौर कर सकता है। कम से कम गणित हिस्सा बहुत आसान होगा।

2

कृपया एक कुशल modpow फ़ंक्शन लागू करें। जावा के समान [BigInteger.modPow] [1]

आरएसए एन्क्रिप्शन काफी सरल है जब आप इसे नीचे ले जाते हैं। दो प्राइम्स और कुछ नियमित गणित ऑपरेटर। मानक सी ++ के साथ < 32 बिट एन्क्रिप्शन को कार्यान्वित करना मुश्किल है।

उन परिचालनों की एक जोड़ी काफी सीपीयू गहन हो सकती है, एक शक्ति तब मॉड्यूलो के बाद हो सकती है। बहुत सारे अनुसंधान हुए हैं क्योंकि आरएसए का व्यापक रूप से उपयोग किया जाता है, और उन दो संचालन को कुशलतापूर्वक संयुक्त किया जा सकता है। नए ऑपरेशन को modpow कहा जाता है।

तो कुशल कुशलता के साथ एक कुशल अपरिवर्तनीय सटीक इटर्जर लाइब्रेरी दी गई, पूर्ण शक्ति आरएसए को कार्यान्वित किया जा सकता है। एक पूर्ण क्रिप्टो समाधान को कुछ यादृच्छिक प्राइम उत्पन्न करने की भी आवश्यकता होगी लेकिन यह एक बड़ा दायरा है।

[1]: http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html#modPow(java.math.BigInteger, java.math.BigInteger)

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