负平方根

Dea*_*die 4 c++ math sqrt

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

Ale*_* C. 6

#include <complex>

int main()
{
    std::complex<double> two_i = std::sqrt(std::complex<double>(-4));
}
Run Code Online (Sandbox Code Playgroud)

要不就

std::complex<double> sqrt_minus_x(0, std::sqrt(std::abs(x)));
Run Code Online (Sandbox Code Playgroud)


tsk*_*zzy 5

sqrt(-x)其中x是正数是简单的0 + sqrt(x)*i.实际部分只有0.

一般来说,实部是x > 0 ? sqrt(x) : 0和虚部是x < 0 ? sqrt(x) : 0.