यह एक साधारण समारोह को लागू करने के लिए लॉग (एन) को करने के लिए पलता दोहराया अगर प्रतिपादक एक पूर्णांक माना जाता है सामान्य रूप में और अधिक स्थिर (या तेज, या बिल्कुल अलग) हो जाएगा?
पूर्णांक घातांक के लिए exponentiation by squaring का परिणाम सामान्य pow
से कम सही में है, लेकिन दोनों इस अर्थ में कि करीब आदानों करीब परिणाम में स्थिर रहे हैं। आप गुणा करके सापेक्ष त्रुटि के 0.5 यूएलपी को शुरू करने के लिए एक्सपोनेंटिएशन की उम्मीद कर सकते हैं (उदाहरण के लिए, एक्स कंप्यूटिंग के लिए त्रुटि के 1 यूएलपी x * x * x
)।
जब दूसरा तर्क n स्थिर रूप से 2 होना जाता है, तो सभी माध्यमों से x nx * x
के रूप में लागू करें। उस स्थिति में यह किसी भी संभावित विकल्प से तेज़ और अधिक सटीक है।
कैसे std करता :: sqrt (x), की तुलना स्थिरता के लिहाज से, प्रपत्र std :: पॉव के बारे में कुछ करने के लिए (एक्स, k/2)
पहले, sqrt
की सटीकता नहीं कर सकते आईईईई 754 कार्यान्वयन के लिए हराया जाए, क्योंकि sqrt
बुनियादी परिचालनों में से एक है कि यह मानक यथासंभव सटीक होना आवश्यक है।
लेकिन आप sqrt
के बारे में पूछ नहीं कर रहे हैं, तो आप पूछ रहे हैं (मुझे लगता है कि) एक्स के < के बारे में गणना n> * sqrt (एक्स) के रूप में pow(x, n + 0.5)
करने का विरोध किया। फिर, सामान्य रूप से, pow
के गुणवत्ता कार्यान्वयन के लिए, आप विकल्पों की तुलना में अधिक सटीक होने के लिए pow(x, n + 0.5)
की अपेक्षा कर सकते हैं। यद्यपि sqrt(x)
की गणना 0.5 यूएलपी तक की जाएगी, गुणात्मकता 0.5 यूएलपी तक की अपनी अनुमानितता का परिचय देती है, और सब कुछ, एक अच्छी तरह से कार्यान्वित फ़ंक्शन के लिए एक कॉल में रुचि रखने वाले परिणाम को प्राप्त करना बेहतर होता है। pow
का गुणवत्ता कार्यान्वयन आपको इसके परिणाम के लिए सटीकता का 1 यूएलपी देगा, और सर्वोत्तम कार्यान्वयन 0.5 यूएलपी "गारंटी" देगा।
और बोनस के रूप में, गति अंतर क्या होने की संभावना है?
आप पहले से जानते हैं कि प्रतिपादक एक छोटे पूर्णांक या 0.5 की एक से अधिक हो सकता है, तो आप जानकारी है कि pow
के implementer नहीं था, ताकि आप उनमें से कम से कम लागत से हरा कर सकते हैं जा रहा है यह निर्धारित करने के लिए परीक्षण कि दूसरा तर्क एक छोटा पूर्णांक है। इसके अलावा, एक गुणवत्ता कार्यान्वयन के कार्यान्वयन का उद्देश्य स्क्वायरिंग द्वारा सरल एक्सपोनिएशन की तुलना में अधिक सटीक परिणाम का लक्ष्य है। दूसरी तरफ, pow
के कार्यान्वयनकर्ता बेहतर सटीकता के बावजूद औसत निष्पादन समय को कम करने के लिए बेहद परिष्कृत तकनीकों का उपयोग कर सकते हैं: उदाहरण के लिए CRlibm's implementation देखें। pow
के सर्वोत्तम कार्यान्वयन के बारे में बात करते समय मैंने अंदरूनी उद्धरणों के ऊपर क्रिया "गारंटी" डाली क्योंकि pow
एक ऐसा कार्य है जिसके लिए सीआरएलआईबीएम की 0.5 यूएलपी सटीकता गारंटी only “with astronomical probability” है।
आप एक प्रश्न पूछ रहे हैं कि कौन से हिस्से प्रयोग और विश्लेषण के लिए उपयुक्त हैं। आपके प्रयोगों और विश्लेषण के परिणाम क्या हैं? –
पास्कल क्यूओक का जवाब उत्कृष्ट है, लेकिन मैं जोड़ूंगा कि 'पाउ' के बहुत सारे पारंपरिक और लोकप्रिय कार्यान्वयन अपमानजनक रूप से क्रोधित हैं। – tmyklebu
@tmyklebu, कौन सा? – trbabb