std:: sqrt (std::complex)
From cppreference.net
|
헤더에 정의됨
<complex>
|
||
|
template
<
class
T
>
std:: complex < T > sqrt ( const std:: complex < T > & z ) ; |
||
복소수 z 의 제곱근을 계산하며, 음의 실수축을 따라 가지 절단(branch cut)이 적용됩니다.
목차 |
매개변수
| z | - | 제곱근을 구할 복소수 |
반환값
오류가 발생하지 않으면, 우반평면(실수축 상에서는 [0; +∞) , 허수축 상에서는 (−∞; +∞) 범위)에 있는 z 의 제곱근을 반환합니다.
오류 처리 및 특수 값
오류는 math_errhandling 과 일관되게 보고됩니다.
구현이 IEEE 부동 소수점 연산을 지원하는 경우,
- 함수는 허수부의 부호를 고려하여 브랜치 컷(branch cut) 위에서 연속입니다.
- std:: sqrt ( std:: conj ( z ) ) == std:: conj ( std:: sqrt ( z ) )
-
만약
z
가
(±0,+0)이면, 결과는(+0,+0)입니다. -
만약
z
가
(x,+∞)이면, x가 NaN인 경우에도 결과는(+∞,+∞)입니다. -
만약
z
가
(x,NaN)이면, 결과는(NaN,NaN)입니다 (x가 ±∞가 아닌 경우). 그리고 FE_INVALID 가 발생할 수 있습니다. -
만약
z
가
(-∞,y)이면, 유한한 양의 y에 대해 결과는(+0,+∞)입니다. -
만약
z
가
(+∞,y)이면, 유한한 양의 y에 대해 결과는(+∞,+0)입니다. -
만약
z
가
(-∞,NaN)이면, 결과는(NaN,∞)입니다 (허수부의 부호는 명시되지 않음). -
만약
z
가
(+∞,NaN)이면, 결과는(+∞,NaN)입니다. -
만약
z
가
(NaN,y)이면, 결과는(NaN,NaN)이고 FE_INVALID 가 발생할 수 있습니다. -
만약
z
가
(NaN,NaN)이면, 결과는(NaN,NaN)입니다.
참고 사항
이 함수의 의미 체계는 C 함수 csqrt 와 일관성을 유지하도록 설계되었습니다.
예제
이 코드 실행
#include <complex> #include <iostream> int main() { std::cout << "Square root of -4 is " << std::sqrt(std::complex<double>(-4.0, 0.0)) << '\n' << "Square root of (-4,-0) is " << std::sqrt(std::complex<double>(-4.0, -0.0)) << " (the other side of the cut)\n"; }
출력:
Square root of -4 is (0,2) Square root of (-4,-0) is (0,-2) (the other side of the cut)
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2597 | C++98 | 명세가 부호 있는 0 허수부를 잘못 처리함 | 잘못된 요구사항 제거됨 |
참고 항목
|
복소수 거듭제곱, 하나 또는 두 인자가 복소수일 수 있음
(함수 템플릿) |
|
|
(C++11)
(C++11)
|
제곱근 계산 (
√
x
)
(함수) |
|
함수
std::sqrt
를 valarray의 각 요소에 적용
(함수 템플릿) |
|
|
C 문서
for
csqrt
|
|