最終更新日時(UTC):
が更新

履歴 編集

function template
<complex>

std::polar

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 であるのは、規格の誤りであるように思われる。
  • rhotheta に現れる型 T は(残念ながら)同じ型でなければならない。(intdouble を渡すなどといったことはできない)
    同じ <complex> ヘッダの pow や、cmath ヘッダの atan2 などの関数群は、引数の型が異なっていても簡単に呼び出せるように C++11 でオーバーロードが追加されているため、単なる規格の考慮漏れかもしれない。

#include <iostream>
#include <complex>
#include <cmath>

static const double pi = std::acos(-1.0); // お手軽に π を得る。

int main()
{
  std::complex<double> result = std::polar(1.0, pi / 4.0);
  std::cout << "polar(1.0, pi / 4.0) = " << result << std::endl;
}

出力

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 リーマン球面への射影を得る。

参照