你如何在C ++中取负数的平方根?
我知道它应该返回一个真实的和复杂的部分,我得到一个NaN?
我如何看待真实的部分?
答案 0 :(得分:6)
#include <complex>
int main()
{
std::complex<double> two_i = std::sqrt(std::complex<double>(-4));
}
或只是
std::complex<double> sqrt_minus_x(0, std::sqrt(std::abs(x)));
答案 1 :(得分:5)
sqrt(-x)
其中x是正数,只是0 + sqrt(x)*i
。实际部分只是0。
一般来说,实部是x > 0 ? sqrt(x) : 0
,虚部是x < 0 ? sqrt(x) : 0
。
答案 2 :(得分:3)
如果你所说的负数是真的,那么它的平方根的实部应该只是0
?
答案 3 :(得分:0)
也许是这样的
double negativeNumber = -321;
std::complex<double> number( negativeNumber, 0 );
std::complex<double> result = sqrt( number );
double realpart = result.real();