2011-08-12 5 views
4

C++에서 음수의 제곱근을 어떻게 구합니까?
실제적이고 복잡한 부분을 반환해야한다는 것을 알고 있습니다. NaN을 얻습니다.
어떻게 실제 파트를 만들 수 있습니까?음의 제곱근

+1

'의 SQRT (ABS (numvar))'처럼 뭔가? –

+0

개발자를위한 많은 문제, 물리학 자 때문에 곱셈에서 잘못된 공리가 ... – Sergei

답변

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))); 
3

음수를 실수라고하면 제곱근의 실수 부분은 0일까요?

+0

+1; 이 답변을 게시하게되어 너무 흥분했지만 이미 여기있었습니다! –

5

sqrt(-x) 여기서 x는 양수입니다. 간단히 0 + sqrt(x)*i입니다. 실수 부분은 단지 0입니다.

일반적으로 실수 부분은 x > 0 ? sqrt(x) : 0이고 허수 부분은 x < 0 ? sqrt(x) : 0입니다.

0

어쩌면이

double negativeNumber = -321; 
std::complex<double> number(negativeNumber, 0); 
std::complex<double> result = sqrt(number); 
double realpart = result.real(); 
관련 문제