2011-08-12 112 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();