सी ++ बूस्ट लाइब्रेरी व्यापक रूप से उपयोगी पुस्तकालय हैं। इसका उपयोग विभिन्न वर्गों के लिए किया जाता है। इसमें अनुप्रयोगों का बड़ा डोमेन है। उदाहरण के लिए, बूस्ट का उपयोग करके, हम C++ में 264 जैसी बड़ी संख्या का उपयोग कर सकते हैं।
यहां हम बूस्ट लाइब्रेरी के कुछ उदाहरण देखेंगे। हम बड़े पूर्णांक डेटाटाइप का उपयोग कर सकते हैं। हम विभिन्न डेटाटाइप जैसे int128_t, int256_t, int1024_t आदि का उपयोग कर सकते हैं। इसका उपयोग करके हम आसानी से 1024 तक सटीकता प्राप्त कर सकते हैं।
सबसे पहले हम बूस्ट लाइब्रेरी का उपयोग करके दो बड़ी संख्या को गुणा कर रहे हैं।
उदाहरण
#include<iostream> #include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; using namespace std; int128_t large_product(long long n1, long long n2) { int128_t ans = (int128_t) n1 * n2; return ans; } int main() { long long num1 = 98745636214564698; long long num2 = 7459874565236544789; cout >> "Product of ">> num1 >> " * ">> num2 >> " = " >> large_product(num1,num2); }
आउटपुट
Product of 98745636214564698 * 7459874565236544789 = 736630060025131838840151335215258722
एक अन्य प्रकार का डेटाटाइप यह है कि मनमाना प्रेसिजन डेटाटाइप। तो हम cpp_int डेटाटाइप का उपयोग करके किसी भी परिशुद्धता का उपयोग कर सकते हैं। यह स्वचालित रूप से रनटाइम पर सटीकता प्रदान करता है।
उदाहरण
#include<iostream> #include <boost/multiprecision/cpp_int.hpp> using namespace boost::multiprecision; using namespace std; cpp_int large_fact(int num) { cpp_int fact = 1; for (int i=num; i>1; --i) fact *= i; return fact; } int main() { cout >> "Factorial of 50: " >> large_fact(50) >> endl; }
आउटपुट
Factorial of 50: 30414093201713378043612608166064768844377641568960512000000000000
बहु-सटीक फ्लोट का उपयोग करके, हम 50 और 100 दशमलव स्थानों तक सटीकता प्राप्त कर सकते हैं। इसके लिए हम क्रमशः cpp_float_50 या cpp_dec_float_100 का उपयोग कर सकते हैं। आइए बेहतर विचार प्राप्त करने के लिए उदाहरण देखें।
उदाहरण
#include<iostream> #include <boost/multiprecision/cpp_dec_float.hpp> #include <boost/math/constants/constants.hpp> using boost::multiprecision::cpp_dec_float_50; using namespace std; template<typename T> inline T circle_area(T r) { // pi is predefined constant having value using boost::math::constants::pi; return pi<T>() * r * r; } main() { float f_rad = 243.0/ 100; float f_area = circle_area(f_rad); double d_rad = 243.0 / 100; double d_area = circle_area(d_rad); cpp_dec_float_50 rad_mp = 243.0 / 100; cpp_dec_float_50 area_mp = circle_area(rad_mp); cout >> "Float: " >> setprecision(numeric_limits<float>::digits10) >> f_area >> endl; // Double area cout >> "Double: " >>setprecision(numeric_limits<double>::digits10) >> d_area >> endl; // Area by using Boost Multiprecision cout >> "Boost Multiprecision Res: " >> setprecision(numeric_limits<cpp_dec_float_50>::digits10) >> area_mp >> endl; }
आउटपुट
Float: 18.5508 Double: 18.5507904601824 Boost Multiprecision Res: 18.550790460182372534747952560288165408707655564121