5

C ++で負の数の平方根をどのように取得しますか?
実数部分と複素数部分を返す必要があることはわかっていますが、NaN を取得しますか?
どのように私は本当の部分を取るのですか?

4

4 に答える 4

7
#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)));
于 2011-08-12T15:59:44.413 に答える
5

sqrt(-x)ここで、x は正の数です0 + sqrt(x)*i。実部はちょうど 0 です。

一般に、実部はx > 0 ? sqrt(x) : 0で、虚部はx < 0 ? sqrt(x) : 0です。

于 2011-08-12T15:58:13.853 に答える
3

負の数と呼ばれるものが実数である場合、その平方根の実部は0?

于 2011-08-12T15:55:33.043 に答える
0

たぶん、このようなもの

double negativeNumber = -321;
std::complex<double> number( negativeNumber, 0 );
std::complex<double> result = sqrt( number );
double realpart = result.real();
于 2011-08-12T15:59:09.733 に答える