मैं How can I write a power function myself? के माध्यम से पढ़ रहा था और जवाब dan04 द्वारा दिए गए मेरा ध्यान पकड़ा जिसका मुख्य कारण मैं fortran द्वारा दिए गए जवाब के बारे में निश्चित नहीं हूँ, लेकिन मुझे लगता है कि ले लिया और यह लागू किया:स्वयं बनाया पॉव() C++
#include <iostream>
using namespace std;
float pow(float base, float ex){
// power of 0
if (ex == 0){
return 1;
// negative exponenet
}else if(ex < 0){
return 1/pow(base, -ex);
// even exponenet
}else if ((int)ex % 2 == 0){
float half_pow = pow(base, ex/2);
return half_pow * half_pow;
//integer exponenet
}else{
return base * pow(base, ex - 1);
}
}
int main(){
for (int ii = 0; ii< 10; ii++){\
cout << "pow(" << ii << ".5) = " << pow(ii, .5) << endl;
cout << "pow(" << ii << ",2) = " << pow(ii, 2) << endl;
cout << "pow(" << ii << ",3) = " << pow(ii, 3) << endl;
}
}
हालांकि मुझे यकीन नहीं है कि मैंने इस अधिकार का अनुवाद किया है क्योंकि सभी कॉल 5 को एक्सपोनेंट रिटर्न के रूप में दे रहे हैं। उत्तर में यह बताता है कि इसे a^b = 2^(b * log2(a))
पर आधारित लॉग 2 (x) की आवश्यकता हो सकती है, लेकिन मुझे यह सुनिश्चित करने के बारे में अनिश्चितता है जैसा कि मुझे यकीन है कि इसे कहां रखा जाए, या यदि मैं इस अधिकार के बारे में भी सोच रहा हूं।
नोट: मुझे पता है कि यह गणित पुस्तकालय में परिभाषित किया जा सकता है, लेकिन मुझे कुछ कार्यों के लिए एक संपूर्ण गणित पुस्तकालय के सभी अतिरिक्त खर्च की आवश्यकता नहीं है।
संपादित करें: क्या किसी को आंशिक एक्सपोनेंट के लिए फ़्लोटिंग-पॉइंट कार्यान्वयन पता है? (मैंने एक डबल कार्यान्वयन देखा है, लेकिन वह रजिस्टरों के साथ एक चाल का उपयोग कर रहा था, और मुझे फ्लोटिंग पॉइंट की आवश्यकता है, और सिर्फ एक चाल करने के लिए लाइब्रेरी जोड़ना मैं गणित पुस्तकालय समेत बेहतर होगा)
या एक एफपीयू का जोड़ा खर्च? –
आप आंशिक एक्सपोनेंट (कोड भी एक एक्सपोनेंट के लिए है) खो रहे हैं - मूल लिंक को देखते हुए, मुझे लगता है कि आप किसी ऐसे चीज की प्रतिलिपि बना रहे हैं जो केवल पूर्णांक एक्सपोनेंट का समर्थन करता है (इसलिए fractional के लिए परीक्षण विफल हो जाएंगे)। –
@andrewcooke इसे डांग। क्या आप आवश्यक बदलावों को दिखाकर मेरी मदद कर सकते हैं – gardian06