namespace std {
template <class T>
complex<T>
polar(const T& rho,
const T& theta = 0); // (1) C++03
template <class T>
constexpr complex<T>
polar(const T& rho,
const T& theta = 0); // (1) C++26
}
概要
複素数を極形式で指定して作る。polar は polar form(極形式)の略。
戻り値
絶対値が rho
で偏角が theta
の複素数
備考
- 規格には、偏角
theta
の単位については何も記載がない。しかし、この引数の単位がラジアンであることは異論をはさむ余地はないだろう。
実際、本関数の逆関数(の片割れ)とも言えるarg
の戻り値はラジアンである。 - コンストラクタのデフォルト引数を踏まえると、偏角
theta
のデフォルト引数がT()
ではなく0
であるのは、規格の誤りであるように思われる。 rho
とtheta
に現れる型T
は(残念ながら)同じ型でなければならない。(int
とdouble
を渡すなどといったことはできない)
同じ<complex>
ヘッダのpow
や、cmath
ヘッダのatan2
などの関数群は、引数の型が異なっていても簡単に呼び出せるように C++11 でオーバーロードが追加されているため、単なる規格の考慮漏れかもしれない。
例
出力
polar(1.0, pi / 4.0) = (0.707107,0.707107)
バージョン
言語
- C++98
処理系
- Clang: 3.0 ✅, 3.1 ✅, 3.2 ✅, 3.3 ✅, 3.4 ✅
- GCC: 4.3.6 ✅, 4.4.7 ✅, 4.5.4 ✅, 4.6.4 ✅, 4.7.3 ✅, 4.8.1 ✅, 4.8.2 ✅, 4.9.0 ✅
- ICC: ??
- Visual C++: ??
関連項目
名前 | 説明 |
---|---|
real |
複素数の実部を得る。 |
imag |
複素数の虚部を得る。 |
abs |
複素数の絶対値を得る。 |
arg |
複素数の偏角を得る。 |
norm |
複素数体のノルムを得る。 |
conj |
共役複素数を得る。 |
proj |
リーマン球面への射影を得る。 |
参照
- P1383R2 More constexpr for
<cmath>
and<complex>
- C++26で
constexpr
対応した
- C++26で