std:: polar (std::complex)
|
헤더에 정의됨
<complex>
|
||
|
template
<
class
T
>
std:: complex < T > polar ( const T & r, const T & theta = T ( ) ) ; |
||
크기 r 와 위상각 theta 를 갖는 복소수를 반환합니다.
r 이 음수이거나 NaN이거나, theta 가 무한대인 경우 동작은 정의되지 않습니다.
목차 |
매개변수
| r | - | 크기 |
| theta | - | 위상각 |
반환값
r 과 theta 로 결정되는 복소수.
참고 사항
std :: polar ( r, theta ) 는 다음 표현식들 중 어느 하나와 동등합니다:
- r * std:: exp ( theta * 1i )
- r * ( cos ( theta ) + sin ( theta ) * 1i )
- std:: complex ( r * cos ( theta ) , r * sin ( theta ) ) .
태그 내부)로 구성되어 있으며, 이러한 요소들은 번역에서 제외하도록 지정되었습니다.
벡터화된 루프에서 exp 대신 polar를 사용하는 것이 4.5배 더 빠를 수 있습니다.
예제
#include <cmath> #include <complex> #include <iomanip> #include <iostream> #include <numbers> using namespace std::complex_literals; int main() { constexpr auto π_2{std::numbers::pi / 2.0}; constexpr auto mag{1.0}; std::cout << std::fixed << std::showpos << std::setprecision(1) << " θ: │ polar: │ exp: │ complex: │ trig:\n"; for (int n{}; n != 4; ++n) { const auto θ{n * π_2}; std::cout << std::setw(4) << 90 * n << "° │ " << std::polar(mag, θ) << " │ " << mag * std::exp(θ * 1.0i) << " │ " << std::complex(mag * cos(θ), mag * sin(θ)) << " │ " << mag * (cos(θ) + 1.0i * sin(θ)) << '\n'; } }
출력:
θ: │ polar: │ exp: │ complex: │ trig: +0° │ (+1.0,+0.0) │ (+1.0,+0.0) │ (+1.0,+0.0) │ (+1.0,+0.0) +90° │ (+0.0,+1.0) │ (+0.0,+1.0) │ (+0.0,+1.0) │ (+0.0,+1.0) +180° │ (-1.0,+0.0) │ (-1.0,+0.0) │ (-1.0,+0.0) │ (-1.0,+0.0) +270° │ (-0.0,-1.0) │ (-0.0,-1.0) │ (-0.0,-1.0) │ (-0.0,-1.0)
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2459 | C++98 | 일부 입력에 대해 동작이 불명확함 | 미정의 동작으로 지정됨 |
| LWG 2870 | C++98 | 매개변수 theta 의 기본값이 비의존적 | 의존적으로 변경됨 |
참고 항목
|
복소수의 크기를 반환합니다
(함수 템플릿) |
|
|
위상각을 반환합니다
(함수 템플릿) |
|
|
복소수 밑
e
지수 함수
(함수 템플릿) |