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で