How do you take the square root of a negative number in C++?
I know it should return a real and a complex part, I get a NaN?
How do I take the real part?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
#include <complex> int main() { std::complex<double> two_i = std::sqrt(std::complex<double>(-4)); }
or just
std::complex<double> sqrt_minus_x(0, std::sqrt(std::abs(x)));
回答2:
sqrt(-x)
where x is a positive number is simply 0 + sqrt(x)*i
. The real part is just 0.
In general, the real part is x > 0 ? sqrt(x) : 0
and the imaginary part is x < 0 ? sqrt(x) : 0
.
回答3:
If what you call a negative number is a real, then the real part of its square root should just be 0
?
回答4:
Maybe something like this
double negativeNumber = -321; std::complex<double> number( negativeNumber, 0 ); std::complex<double> result = sqrt( number ); double realpart = result.real();
文章来源: Negative square root