C言語/標準ライブラリ/complex.h

ヘッダー <complex.h> には、複素数演算をサポートするマクロと関数が定義されています。
各シノプシスは、1つ以上の complex 型の引数と complex または double の返値を持つ主関数からなる関数ファミリーを指定します。
同じ名前で接尾辞がfとlの他の関数は、float と long doubleの引数と返値を持つ対応する関数です。
値は、度ではなくラジアンとして解釈されます。 実装では errno を設定することができますが必須ではありません。
以下の関数の中には、関数が不連続になる分岐点(branch cuts)がある。
符号付きゼロを持つ実装(すべてのIEC 60559の実装を含む)で、Annex Gの仕様に従っている場合、ゼロの符号は切り口の片側ともう片側を区別するので、切り口がどちらかの側から近づくと関数は(フォーマットの制限を除いて)連続的になります。例えば、負の実軸に沿って枝分かれしたカットを持つ平方根関数の場合、虚数部+0のカットの上部は正の虚数軸に対応し、虚数部-0のカットの下部は負の虚数軸に対応する。
符号付きゼロをサポートしていない実装(附属書F参照)では、分岐カットの側面を区別できません。 枝分かれしたカットの側面を区別できない。これらの実装では、関数が連続的になるようにカットをマッピングする。 関数が連続的になるように切り口を写す。 時計回りの方向に接近するようにカットをマッピングする。(ここで指定されている関数のブランチカットは、1つの有限の 終点は1つだけです)。 例えば、平方根関数の場合、負の実軸に沿ったカットの有限終点を反時計回りに回ってくると、負の実軸に沿った切り口の有限の終点が上から切り口に近づく。となり、切り口は正の虚数軸に写ります。
複素数の乗算、除算、絶対値を表す通常の数式は、無限大を扱う点で問題があります。 無限大の扱いや、過度のオーバーフローやアンダーフローが問題となります。
CX_LIMITED_RANGEプラグマは、(状態がonの場合)通常の数式が許容されることを実装に知らせるために使用できます。
このプラグマは、外部宣言の外側でも、複合文の中のすべての明示的な宣言や文の前でも使用できます。外部宣言の外側にある場合、プラグマはその発生から他のCX_LIMITED_RANGEプラグマに遭遇するまで、または翻訳単位が終了するまで効力を発揮します。
複合文の内部では、プラグマはその発生時から別のCX_LIMITED_RANGEプラグマに遭遇するまで、または翻訳単位が終了するまで有効です。 別のCX_LIMITED_RANGEプラグマが発生するまで(入れ子になった複合文の中も含む)、または複合文が終了するまで。複合文の終了時には、プラグマの状態は複合文の直前の状態に戻ります。複合文の終了時には、プラグマの状態は複合文の直前の状態に戻ります。このプラグマが他の文脈で使用された場合、その動作は 未定義となります。このプラグマのデフォルトの状態はoffです。
<complex.h> では、以下のマクロが定義されます。
complex、imaginary、I のマクロが内部の値と干渉する場合、アプリケーションはその定義を解除することができます。
例えば、電気工学分野では I は電流を示し多用されるため虚数単位には j が用いられる( s = j ω {\displaystyle s=j\omega } など)。
ISO/IEC 9899:2017 § 7.3.5 Trigonometric functions

ISO/IEC 9899:2017 § 7.3.5.1 The cacos functions。

ISO/IEC 9899:2017 § 7.3.5.2 The casin functions。

ISO/IEC 9899:2017 § 7.3.5.3 The catan functions。

ISO/IEC 9899:2017 § 7.3.5.4 The ccos functions。

ISO/IEC 9899:2017 § 7.3.5.5 The csin functions。;形式 :

ISO/IEC 9899:2017 § 7.3.5.6 The ctan functions。
ISO/IEC 9899:2017 § 7.3.6 Hyperbolic functions

ISO/IEC 9899:2017 § 7.3.6.1 The cacosh functions。

ISO/IEC 9899:2017 § 7.3.6.2 The casinh functions。

ISO/IEC 9899:2017 § 7.3.6.3 The catanh functions。

ISO/IEC 9899:2017 § 7.3.6.4 The ccosh functions。

ISO/IEC 9899:2017 § 7.3.6.5 The csinh functions。

ISO/IEC 9899:2017 § 7.3.6.6 The ctanh functions。
ISO/IEC 9899:2017 § 7.3.7 Exponential and logarithmic functions

ISO/IEC 9899:2017 § 7.3.7.1 The cexp functions。

ISO/IEC 9899:2017 § 7.3.7.2 The clog functions。
:clog関数群は、複素自然対数の値を返します。この値は、実軸では数学的に束縛されていないストリップの範囲であり、虚軸では区間[-iπ, +iπ]の範囲です。
ISO/IEC 9899:2017 § 7.3.8 Power and absolute-value functions

ISO/IEC 9899:2017 § 7.3.8.1 The cabs functions。
of z.

ISO/IEC 9899:2017 § 7.3.8.2 The cpow functions。

ISO/IEC 9899:2017 § 7.3.8.3 The csqrt functions。
real axis.
(including the imaginary axis).


複素数の偏角を計算する ISO/IEC 9899:2017 § 7.3.9.1 The carg functions。

複素数の虚数部を返します。 ISO/IEC 9899:2017 § 7.3.9.2 The cimag functions。

CMPLXマクロ群は、指定された複素数型の式に展開され、実数部はxの(変換後の)値、虚数部はyの(変換後の)値となります。 結果として得られる式は、両方の引数が同様に適切である場合に、静的またはスレッドストレージ期間を持つオブジェクトのイニシャライザーとして使用するのに適しているものとします。
ISO/IEC 9899:2017 § 7.3.9.3 The CMPLX macros。; 形式:
これらのマクロは、あたかも実装が虚数型をサポートしているかのように動作し定義は、
のようなものになります。

複素共役を計算します。 ISO/IEC 9899:2017 § 7.3.9.4 The conj functions。

リーマン球面への複素数の投影を計算します。
ISO/IEC 9899:2017 § 7.3.9.5 The cproj functions。; 形式:

複素数の実数部を返します。 ISO/IEC 9899:2017 § 7.3.9.6 The creal functions。