负平方根

时间:2011-08-12 15:49:22

标签: c++ math sqrt

你如何在C ++中取负数的平方根?
我知道它应该返回一个真实的和复杂的部分,我得到一个NaN?
我如何看待真实的部分?

4 个答案:

答案 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();