名前空間
変種
操作

複素数算術

提供: cppreference.com
< c‎ | numeric

マクロ定数 __STDC_NO_COMPLEX__ が処理系により定義されている場合は、複素数型、ヘッダ <complex.h> およびこのページに掲載されているすべての名前は提供されません。

(C11以上)

Cプログラミング言語では、C99から、複素数数学と3つの組み込み型 double _Complex, float _Complex, long double _Complex (_Complex を参照) をサポートしています。 ヘッダ <complex.h> をインクルードすると、3つの複素数型は double complex, float complex, long double complex としても使用できます。

これらの複素数型に加えて、虚数型 double _Imaginary, float _Imaginary, long double _Imaginary (_Imaginary を参照) がサポートされている場合もあります。 ヘッダ <complex.h> をインクルードすると、3つの虚数型は double imaginary, float imaginary, long double imaginary としても使用できます。

標準の算術演算子 +, -, *, / は実数型、複素数型、虚数型の任意の組み合わせで使用できます。

__STDC_IEC_559_COMPLEX__ を定義するコンパイラは虚数をサポートすることが必須ではありませんが推奨されています。 POSIX は虚数サポートを識別するためにマクロ _Imaginary_I が定義されているかをチェックすることを推奨しています。

(C99以上)
(C11未満)

__STDC_IEC_559_COMPLEX__ が定義されていれば虚数はサポートされています。

(C11以上)
ヘッダ <complex.h> で定義

目次

虚数型マクロ
(キーワードマクロ) [edit]
複素数型マクロ
(キーワードマクロ) [edit]
虚数定数
虚数単位 i を表す虚数型の定数
(マクロ定数) [edit]
虚数単位 i を表す複素数型の定数
(マクロ定数) [edit]
(C99)
虚数単位 i を表す複素数型または虚数型の定数
(マクロ定数) [edit]
操作
(C11)(C11)(C11)
実部と虚部から複素数を構築します
(関数マクロ) [edit]
(C99)(C99)(C99)
複素数の実部を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数の虚部を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数の絶対値を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数の偏角を計算します
(関数) [edit]
(C99)(C99)(C99)
複素共役を計算します
(関数) [edit]
(C99)(C99)(C99)
リーマン球面上の射影を計算します
(関数) [edit]
指数関数
(C99)(C99)(C99)
eを底とする複素指数関数を計算します
(関数) [edit]
(C99)(C99)(C99)
複素対数関数を計算します
(関数) [edit]
冪関数
(C99)(C99)(C99)
複素冪関数を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数の平方根を計算します
(関数) [edit]
三角関数
(C99)(C99)(C99)
複素正弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素余弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素正接を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数の逆正弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数の逆余弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数の逆正接を計算します
(関数) [edit]
双曲線関数
(C99)(C99)(C99)
複素数双曲線正弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数双曲線余弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数双曲線正接を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数逆双曲線正弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数逆双曲線余弦を計算します
(関数) [edit]
(C99)(C99)(C99)
複素数逆双曲線正接を計算します
(関数) [edit]

[編集] ノート

cerf, cerfc, cexp2, cexpm1, clog10, clog1p, clog2, clgamma, ctgamma およびこれらに接尾辞 ~f ~l が付いた関数名は、将来 <complex.h> に追加するために予約されており、このヘッダをインクルードするプログラムでは使うことができません。

C標準は逆双曲線関数に「complex arc hyperbolic sine」というような名前を付けていますが、双曲線関数の逆関数は面積関数です。 引数は双曲的扇形の面積であり、円弧 (arc) ではありません。 正しくは「complex inverse hyperbolic sine」と呼ぶべきでしょう。 「complex area hyperbolic sine」といった名前を使う人もいます。

実部または虚部のいずれかが無限大であれば、たとえ他方が NaN であっても、その複素数は無限大です。

実部と虚部のいずれも無限大でなく NaN でもなければ、その複素数は有限です。

実部と虚部の両方が正または負のゼロであれば、その複素数はゼロです。

[編集]

#include <stdio.h>
#include <complex.h>
#include <tgmath.h>
 
int main(void)
{
    double complex z1 = I * I;     // imaginary unit squared
    printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1));
 
    double complex z2 = pow(I, 2); // imaginary unit squared
    printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2));
 
    double PI = acos(-1);
    double complex z3 = exp(I * PI); // Euler's formula
    printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3));
 
    double complex z4 = 1+2*I, z5 = 1-2*I; // conjugates
    printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4*z5), cimag(z4*z5));
}

出力:

I * I = -1.0+0.0i
pow(I, 2) = -1.0+0.0i
exp(I*PI) = -1.0+0.0i
(1+2i)*(1-2i) = 5.0+0.0i

[編集] 参考文献

  • C11 standard (ISO/IEC 9899:2011):
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (p: 177)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (p: 177)
  • 7.3 Complex arithmetic <complex.h> (p: 188-199)
  • 7.3.1/2 __STDC_NO_COMPLEX__ (p: 188)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • 7.31.1 Complex arithmetic <complex.h> (p: 455)
  • B.2 Complex <complex.h> (p: 475-477)
  • Annex G (normative) IEC 60559-compatible complex arithmetic (p: 532-545)
  • G.1/1 __STDC_IEC_559_COMPLEX__ (p: 532)
  • C99 standard (ISO/IEC 9899:1999):
  • 6.10.8/2 __STDC_IEC_559_COMPLEX__ (p: 161)
  • 7.3 Complex arithmetic <complex.h> (p: 170-180)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • 7.26.1 Complex arithmetic <complex.h> (p: 401)
  • B.2 Complex <complex.h> (p: 419-420)
  • Annex G (informative) IEC 60559-compatible complex arithmetic (p: 467-480)
  • G.1/1 __STDC_IEC_559_COMPLEX__ (p: 467)

[編集] 関連項目

複素数算術C++リファレンス