std::complex
| ヘッダ <complex> で定義
|
||
template< class T > class complex; |
(1) | |
template<> class complex<float>; |
(2) | |
template<> class complex<double>; |
(3) | |
template<> class complex<long double>; |
(4) | |
特殊化 std::complex<float>、 std::complex<double> および std::complex<long double> は複素数を表現、操作する LiteralType です。
それ以外の型に対して complex テンプレートを実体化する効果は規定されていません。
メンバ型
| メンバ型 | 定義 |
value_type
|
T
|
メンバ関数
| 複素数を構築します (パブリックメンバ関数) | |
| 内容を代入します (パブリックメンバ関数) | |
| 複素数の実部にアクセスします (パブリックメンバ関数) | |
| 複素数の虚部にアクセスします (パブリックメンバ関数) | |
| 2つの複素数または複素数とスカラーの複合代入 (パブリックメンバ関数) |
非メンバ関数
| 複素数に単項演算子を適用します (関数テンプレート) | |
| 2つの複素数または複素数とスカラーに対して複素数算術を行います (関数テンプレート) | |
(C++20で削除) |
2つの複素数または複素数とスカラーを比較します (関数テンプレート) |
| 複素数をシリアライズおよびデシリアライズします (関数テンプレート) | |
| 実部を返します (関数テンプレート) | |
| 虚部を返します (関数テンプレート) | |
| 複素数の絶対値を返します (関数テンプレート) | |
| 複素数の偏角を返します (関数テンプレート) | |
| 絶対値の平方を返します (関数テンプレート) | |
| 複素共役を返します (関数テンプレート) | |
(C++11) |
リーマン球面への射影を返します (関数テンプレート) |
| 絶対値と偏角から複素数を構築します (関数テンプレート) | |
指数関数 | |
| e を底とする複素指数関数 (関数テンプレート) | |
| 負の実軸に沿って分岐切断する複素自然対数 (関数テンプレート) | |
| 負の実軸に沿って分岐切断する複素常用対数 (関数テンプレート) | |
冪関数 | |
| 片方または両方の引数が複素数かもしれない複素冪関数 (関数テンプレート) | |
| 右半平面の範囲の複素数の平方根 (関数テンプレート) | |
三角関数 | |
| 複素数の正弦 (sin(z)) を計算します (関数テンプレート) | |
| 複素数の余弦 (cos(z)) を計算します (関数テンプレート) | |
| 複素数の正接 (tan(z)) を計算します (関数テンプレート) | |
(C++11) |
複素数の逆正弦 (arcsin(z)) を計算します (関数テンプレート) |
(C++11) |
複素数の逆余弦 (arccos(z)) を計算します (関数テンプレート) |
(C++11) |
複素数の逆正接 (arctan(z)) を計算します (関数テンプレート) |
双曲線関数 | |
| 複素数の双曲線正弦 (sinh(z)) を計算します (関数テンプレート) | |
| 複素数の双曲線余弦 (cosh(z)) を計算します (関数テンプレート) | |
| 複素数の双曲線正接 (tanh(z)) を計算します (関数テンプレート) | |
(C++11) |
複素数の逆双曲線正弦 (arsinh(z)) を計算します (関数テンプレート) |
(C++11) |
複素数の逆双曲線余弦 (arcosh(z)) を計算します (関数テンプレート) |
(C++11) |
複素数の逆双曲線正接 (artanh(z)) を計算します (関数テンプレート) |
配列指向アクセス
|
この要件の意図は、 C++ ライブラリの複素数型と C 言語の複素数型 (およびそれらの配列) のバイナリ互換性を維持するためで、それにより同一のオブジェクト表現が要求されるためです。 |
(C++11以上) |
実装ノート
|
配列指向アクセスの要件を満たすため、実装は std::complex の特殊化の実部と虚部を別々かつ隣接したメモリ位置に格納する制約を受けます。 非静的メンバのための可能な宣言方法には以下のようなものがあります。
実装は実部および虚部以外の記憶域を占める追加の非静的データメンバを宣言することはできず、これらのクラステンプレートの特殊化にいかなるパディングも含まれないことを保証しなければなりません。 実装はまた、 |
(C++11以上) |
リテラル
名前空間
std::literals::complex_literals で定義 | |
| 純虚数を表す std::complex リテラル (関数) | |
例
#include <iostream>
#include <iomanip>
#include <complex>
#include <cmath>
int main()
{
using namespace std::complex_literals;
std::cout << std::fixed << std::setprecision(1);
std::complex<double> z1 = 1i * 1i; // 虚数単位の2乗
std::cout << "i * i = " << z1 << '\n';
std::complex<double> z2 = std::pow(1i, 2); // 虚数単位の2乗
std::cout << "pow(i, 2) = " << z2 << '\n';
double PI = std::acos(-1);
std::complex<double> z3 = std::exp(1i * PI); // オイラーの公式
std::cout << "exp(i * pi) = " << z3 << '\n';
std::complex<double> z4 = 1. + 2i, z5 = 1. - 2i; // 複素共益
std::cout << "(1+2i)*(1-2i) = " << z4*z5 << '\n';
}
出力:
i * i = (-1.0,0.0)
pow(i, 2) = (-1.0,0.0)
exp(i * pi) = (-1.0,0.0)
(1+2i)*(1-2i) = (5.0,0.0)
関連項目
複素数算術 の C言語リファレンス
|