3 / 20 · अवधारणा
स्थिर बिंदु आउटपुट नीति
इनपुट स्केल, ऋणात्मक राउंडिंग, संतृप्ति और चक्रीय व्यवहार अलग रखें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
बिट पूर्णांक रखते हैं; स्केल उसका अर्थ देता है
x को पूर्णांक X और F भिन्नात्मक बिट से दर्शाएँ, अर्थात x=X/2^F। A और B में समान F लें। गुणनफल और संचायक में 2F भिन्नात्मक बिट हैं। अंतिम कच्चे योग S को इनपुट स्केल में लौटाने के लिए 2^F से भाग चाहिए। पूरे रिडक्शन के बाद एक बार रूपांतरण करें; पहले हर पद राउंड करने से वे योगदान खो सकते हैं जो साथ में महत्वपूर्ण होते।
F=4 पर [1.5,−0.5] को [24,−8] और [0.25,2.0] को [4,32] रखते हैं। कच्चा डॉट प्रोडक्ट 24×4−8×32=−160 है। वास्तविक मान −160/256=−0.625 है और F=4 पर आउटपुट पूर्णांक −10 है।
ऋणात्मक राउंडिंग स्पष्ट जाँचें
S=−17 और F=4 पर सटीक आउटपुट पूर्णांक −1.0625 है। अंकगणितीय दाएँ शिफ़्ट से −2; शून्य की ओर काटने से −1 मिलता है। निकटतम तक राउंडिंग और बराबरी पर सम अंक चुनना भी −1 देता है। इसलिए अंकगणितीय शिफ़्ट को “भिन्न हटाएँ” की हर व्याख्या के बदले नहीं रख सकते। मध्य मान −24/16=−1.5 और −40/16=−2.5 में बराबरी पर सम नियम दोनों बार −2 चुनता है।
हमारा सामान्य रूपांतरण पूरे योग को निकटतम तक राउंड करता है, बराबरी पर सम चुनता है, फिर आउटपुट चौड़ाई तक संतृप्त करता है। निरपेक्ष परिमाण पर भागफल q और शेष r निकालें। r भाजक के आधे से अधिक हो, या बराबर हो और q विषम हो, तो q बढ़ाएँ। बाद में मूल चिह्न वापस दें। RTL में सबसे ऋणात्मक संख्या का निरपेक्ष मान लेने के लिए चौड़ा अस्थायी मान चाहिए; Node संदर्भ BigInt प्रयोग करता है।
आउटपुट पर ओवरफ़्लो तय करें
चिह्नयुक्त आठ-बिट आउटपुट −128..127 तक है। राउंड किया 130 संतृप्त होकर 127 या चक्रीय होकर −126 बनता है। −130 संतृप्त होकर −128 या चक्रीय होकर 126 बनता है। दोनों नीतियाँ इच्छित हो सकती हैं, लेकिन उनका नाम और परीक्षण चाहिए।
कच्चा संचायक और रूपांतरित आउटपुट अलग तुलना करें। गलत कच्चा योग अंकगणित या समयक्रम की समस्या दर्शाता है; सही योग और गलत आउटपुट स्केल, राउंडिंग या संतृप्ति की। हाथ से निकाले सीमा मामले रखें ताकि संदर्भ और RTL दोनों एक ही रूपांतरण गलती न छिपा सकें।
खुद आज़माएँ
F=4, S=−56 के लिए बराबरी पर सम राउंडिंग निकालें और F=4, S=−2080 के लिए संतृप्त आठ-बिट आउटपुट निकालें।
व्याख्या पढ़ें
−56/16=−3.5 सम पूर्णांक −4 तक राउंड होता है। −2080/16=−130 राउंडिंग के बाद −128 तक संतृप्त होता है।