Как вы берете квадратный корень из отрицательного числа в C ++? Я знаю, что это должно вернуть действительную и сложную часть, я получу NaN? Как мне взять действительную часть? *
#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)));
sqrt(-x), где x - положительное число, просто 0 + sqrt(x)*i.Действительная часть равна просто 0.
sqrt(-x)
0 + sqrt(x)*i
В общем случае действительная часть равна x > 0 ? sqrt(x) : 0, а мнимая часть равна x < 0 ? sqrt(x) : 0.
x > 0 ? sqrt(x) : 0
x < 0 ? sqrt(x) : 0
Если то, что вы называете отрицательным числом, является действительным, то действительная часть его квадратного корня должна быть просто 0?
0
Может быть, что-то вроде этого
double negativeNumber = -321; std::complex<double> number( negativeNumber, 0 ); std::complex<double> result = sqrt( number ); double realpart = result.real();