तर्कसंगत डेटा प्रकार

From Vigyanwiki

कुछ प्रोग्रामिंग भाषाएं 1/3 और -11/17 जैसी तर्कसंगत संख्याओं को बिना पूर्णांकन के दर्शाने और उन पर अंकगणित करने के लिए अंतर्निहित (आदिम) तर्कसंगत डेटा प्रकार प्रदान करती हैं। उदाहरण ratio सामान्य लिस्प का प्रकार हैं , और बीजगणितीय गणना के लिए अधिकांश भाषाओं द्वारा प्रदान किए गए अनुरूप प्रकार, जैसे कि मेथेमेटिका और मेपल सॉफ्टवेयर कई भाषाएँ जिनमें अंतर्निहित तर्कसंगत प्रकार नहीं है, फिर भी इसे लाइब्रेरी (कंप्यूटर विज्ञान) परिभाषित प्रकार के रूप में प्रदान करती हैं।

प्रतिनिधित्व

उस प्रकार के चर या मान को सामान्यतः अंश (गणित) m/n के रूप में दर्शाया जाता है जहां m और n दो पूर्णांक (कंप्यूटर विज्ञान) संख्याएं हैं, या तो निश्चित या इच्छानुसार स्पष्ट अंकगणित के साथ भाषा के आधार पर, हर को शून्य से विभाजित करने पर गैर-शून्य होने के लिए बाध्य किया जा सकता है, और दो संख्याओं को कम रूप में रखा जा सकता है (1 को छोड़कर किसी भी सामान्य भाजक के बिना)।

तर्कसंगत डेटा प्रकार का समर्थन करने वाली भाषाएं सामान्यतः ऐसे मूल्यों के निर्माण के लिए विशेष वाक्यविन्यास प्रदान करती हैं, और मूलभूत अंकगणितीय संचालन ('+', '-', '×', '/', पूर्णांक शक्ति (गणित)) और तुलना (') का भी विस्तार करती हैं। =', '<', '>', '≤') उन पर कार्रवाई करने के लिए या तो मूल रूप से या भाषा द्वारा प्रदान की गई ऑपरेटर ओवरलोडिंग सुविधाओं के माध्यम से इन परिचालनों को संकलक द्वारा पूर्णांक मशीन निर्देशों के अनुक्रम में या लाइब्रेरी (कंप्यूटर विज्ञान) कॉल में अनुवादित किया जा सकता है। समर्थन अन्य परिचालनों तक भी बढ़ाया जा सकता है, जैसे कि फ़ॉर्मेटिंग, किसी पूर्णांक या फ़्लोटिंग पॉइंट मान को पूर्णांकित करना, आदि। गणित की तरह, वे भाषाएं अधिकांशतः पूर्णांक मान की व्याख्या इकाई हर के साथ तर्कसंगत मान के बराबर करती हैं।

भाषा समर्थन

अंतर्निर्मित या कोर लाइब्रेरी:

  • C++ ने C++ मानक लाइब्रेरी की कंटेंट के रूप में संकलन-समय तर्कसंगत <ratio> हेडर C++11 अंकगणित के लिए समर्थन सम्मिलित किया है।
  • क्लोजर तर्कसंगत संख्याओं पर अंकगणित कर सकता है और उन्हें दर्शाने के लिए शाब्दिक रूप प्रदान करता है।
  • गो math/big पैकेट (प्रोग्रामिंग भाषा) मानक लाइब्रेरी में तर्कसंगत संख्याएं प्रदान करता है, ।
  • J (प्रोग्रामिंग भाषा) आधार भाषा में तर्कसंगत संख्याएँ प्रदान करता है। उदाहरण के लिए, 1r3 तिहाई है. J में परिमेय अंश और हर दोनों के लिए इच्छानुसार से स्पष्ट अंकगणितीय पूर्णांक का उपयोग करते हैं, जिससे इच्छानुसार से स्पष्ट गैर-पूर्णांक की अनुमति मिलती है। उदाहरण के लिए, 12683021339465478347804472r7322545784478161858100577 तीन से 50 दशमलव अंकों के वर्गमूल को दर्शाता है।[1]
  • जूलिया (प्रोग्रामिंग भाषा) परिमेय ऑपरेटर के साथ परिमेय संख्याएँ प्रदान करती है, //. उदाहरण के लिए, 6//9 == 2//3 && typeof(-4//9) == Rational{Int64} है.[2]
  • हास्केल (प्रोग्रामिंग भाषा) प्रदान करता है Rational प्रकार, जो वास्तव में उपनाम है Ratio Integer (Ratio किसी के लिए तर्कसंगत संख्याओं को प्रयुक्त करने वाला बहुरूपी प्रकार है Integral अंश और हर के प्रकार)। अंश का निर्माण % ऑपरेटर का उपयोग करके किया जाता है।[3]
  • ओकैमल की संख्या लाइब्रेरी इच्छानुसार-स्पष्ट तर्कसंगत संख्याओं को प्रयुक्त करती है।
  • पर्ल: Math::BigRat कोर मॉड्यूल इच्छानुसार-स्पष्ट तर्कसंगत संख्याओं को प्रयुक्त करता है। वह bigrat पारदर्शी बिगरैट समर्थन को प्रारंभ करने के लिए प्राग्मा का उपयोग किया जा सकता है।
  • राकू (प्रोग्रामिंग भाषा): डिफ़ॉल्ट रूप से उपयोग करें Rat [4] प्रकार (सीमित परिशुद्धता के साथ तर्कसंगत संख्याएँ)। FatRat [5] डेटा प्रकार इच्छानुसार-स्पष्ट तर्कसंगत संख्याओं को प्रयुक्त करता है।
  • पायथन (प्रोग्रामिंग भाषा): Fractionमॉड्यूल में कक्षा fractions मानक लाइब्रेरी में सम्मिलित है.[6]
  • रूबी (प्रोग्रामिंग भाषा): विशेष सिंटैक्स का उपयोग करके मूल समर्थन है।
  • स्मॉलटॉक a का उपयोग करके तर्कसंगत संख्याओं का प्रतिनिधित्व करता है Fraction प्रपत्र में वर्ग p/q जहाँ p और q इच्छानुसार आकार के पूर्णांक हैं। अंकगणितीय संक्रियाओं को प्रयुक्त करना *, +, -, /, भिन्नों में इरेड्यूसिबल भिन्न लौटाता है।

बाहरी लाइब्रेरी के साथ:

सामान्य लिस्प

कॉमन लिस्प इच्छानुसार आकार की परिमेय संख्याओं RATIO के लिए संख्यात्मक डेटा प्रकार प्रदान करता है: .[7]

 1/3
  1/3

परिमेय संख्या का प्रकार RATIO है :

 (type-of 1/3)
  RATIO

दो पूर्णांकों को विभाजित करने पर परिमेय संख्या प्राप्त हो सकती है और परिमेय संख्या को गुणा करने पर पूर्णांक संख्या प्राप्त हो सकती है:

 (/ 6 8)
  3/4
 (* 3/4 16)
  12

अंश और हर को समानार्थी कार्यों का उपयोग करके प्राप्त किया जा सकता है, जो तर्कसंगत रूप को विहित रूप में कम करता है और क्रमशः उस रूप के अंश या हर की गणना करता है:[8]

 (numerator 12/16)
  3
 (denominator 12/16)
  4

बड़े पूर्णांकों के साथ गणना करके बड़ी परिमेय संख्या लौटाना:

 (/ (1- (expt 2 200)) (1- (expt 2 43)))
  1606938044258990275541962092341162602522202993782792835301375/8796093022207

क्लोजर

(print (+ 1/10 2/10))
  3/10

जूलिया

julia> 1//10 + 2//10
3//10

हास्केल

मॉड्यूल में डेटा.अनुपात

(1 % 10) + (2 % 10)
 ⇒ 3 % 10

रैकेट (पीएलटी योजना)

> (+ 1/10 2/10)
3/10

राकु

राकू (प्रोग्रामिंग भाषा) प्रदान करता है Rat डिफ़ॉल्ट रूप से टाइप करें।

my $v = 0.2;
say "{$v} is {$v.^name} and has numerator {$v.numerator} and denominator {$v.denominator}";
# ⇒ 0.2 is Rat and has numerator 1 and denominator 5
say 0.1 + 0.2
# ⇒ 0.3
say (0.1 + 0.2 - 0.3).fmt("%.17f")
# ⇒ 0.00000000000000000
say 1 / (0.1 + 0.2 - 0.3)
# ⇒ Attempt to divide by zero when coercing Rational to Str

रूबी

2.1 या नए में विशेष सिंटैक्स का उपयोग करना:

irb(main):001:0> puts 1/10r + 2/10r
3/10
=> nil

संदर्भ

  1. "Vocabulary/NumericPrecisions - J Wiki".
  2. "Complex and Rational Numbers — Julia Language development documentation". docs.julialang.org. Archived from the original on 2012-07-15.
  3. "The Haskell 98 Library Report: Rational Numbers".
  4. "Class Rat".
  5. "Class FatRat".
  6. "Fractions — Rational numbers — Python 3.10.0 documentation".
  7. Common Lisp HyperSpec: RATIO
  8. Function NUMERATOR, DENOMINATOR at the Common Lisp HyperSpec