आप इस तरह, अपने लक्ष्य को प्राप्त करने std::complex उपयोग कर सकते हैं:
#include <complex>
#include <iostream>
int main() {
const std::complex<double> result =
std::pow(std::sqrt(std::complex<double>(-36,0)), 2);
std::cout << result << std::endl;
std::cout << "Real part = " << result.real() << std::endl;
}
आउटपुट:
(-36,0)
Real part = -36
ध्यान दें कि std::sqrt(std::complex) यहाँ प्रयोग किया जाता है।
व्यवहार आप का सामना करना पड़ा के पीछे कारण sqrt के हस्ताक्षर, अर्थात् है:
डबल sqrt (डबल एक्स);
फ्लोट वर्ग (फ्लोट एक्स);
लंबे डबल वर्ग (लंबे डबल एक्स);
डबल वर्ग (टी एक्स); // अभिन्न प्रकार
के लिए अतिरिक्त भार के
जिसका अर्थ है कि कोई फर्क नहीं पड़ता जो प्रोटोटाइप, इस्तेमाल किया जाएगा, यदि आप एक nan
की तुलना में बेहतर कुछ भी नहीं हो रही है (या एक + -inf) वापसी प्रकार के बाद से काल्पनिक हिस्सा समर्थन नहीं कर सकता । यही कारण है कि std::complex
मौजूद है।
तो, sqrt(-1)
को nan
द्वारा प्रतिस्थापित किया जाएगा, जिसका pow()
द्वारा इलाज नहीं किया जा सकता है, ताकि एक्सपोनेंट की वजह से -1 बरकरार रहे। नतीजतन sqrt()
पर कॉल के बाद जानकारी पहले ही खो चुकी है और pow()
इसके बारे में कुछ भी नहीं कर सकता है।
परिभाषा के अनुसार वास्तविक संख्या की एक शक्ति भी सकारात्मक है। – bereal
आपको एक जटिल संख्या पुस्तकालय की आवश्यकता है। – Mysticial
यदि कुछ भी है, तो इसे 0 को छोड़कर या वापस करना चाहिए, (क्योंकि वास्तविक भाग 0 है और 0^2 0 है)। –