ヘッダー  には、複素数演算をサポートするマクロと関数が定義されています。
各シノプシスは、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  : キーワード_Complexのエイリアス。
_Complex_I : "const float _Complex "という型を持ち、虚数単位Iの値、I * I = -1 を持つ定数。
C99 Annex Gと互換性のあるコンパイラモードでのみ定義されています。
imaginary : キーワード_Imaginaryのエイリアス
_Imaginary_I : 虚数単位の値を持つ const float _Imaginary 型の定数式に展開します。
I : _Imaginary_I が定義されているれば _Imaginary_I の、定義されていなければ _Complex_I のエイリアス。
complex、imaginary、I のマクロが内部の値と干渉する場合、アプリケーションはその定義を解除することができます。
例えば、電気工学分野では I は電流を示し多用されるため虚数単位には j が用いられる（s = j \omegaなど）。
コード例
ISO/IEC 9899:2017 § 7.3.5 ''Trigonometric functions''
ISO/IEC 9899:2017 § 7.3.5.1 ''The cacos functions''。
形式 :
double complex cacos(double complex z);
float complex cacosf(float complex z);
long double complex cacosl(long double complex z);
説明
cacos関数は、複素 acos を実軸の区間[-1, +1]の外側で分岐して計算します。実軸に沿った区間[-1, +1]の外側で分岐します。
返値
cacos関数は、複素 acos 値を複素数で返します。数学的に拘束されないストリップの範囲で、実軸に沿った区間 [0, π ]の複素 acos 値を返します。
ISO/IEC 9899:2017 § 7.3.5.2 ''The casin functions''。
形式 :
double complex casin(double complex z);
float complex casinf(float complex z);
long double complex casinl(long double complex z);
説明
casin関数は、zの複素逆正弦を、実軸に沿った区間[-1, +1]の外側で分岐して計算します。
返値
casin関数は、複素逆正弦の値を複素数で返します。この値は、虚軸方向には数学的に束縛されない範囲で、実軸方向には区間[-π /2, +π /2]の範囲です。
ISO/IEC 9899:2017 § 7.3.5.3 ''The catan functions''。
形式 :
double complex catan(double complex z);
float complex catanf(float complex z);
long double complex catanl(long double complex z);
説明
catan関数は、zの複素逆正接を計算し、虚軸に沿って区間[-i, +i]の外側で分岐します。
返値
catan関数は、複素逆正接を複素数で返します。その範囲は、虚軸に沿った数学的に束縛されていないストリップの範囲で、実軸に沿った区間[-π /2, +π /2]です。
ISO/IEC 9899:2017 § 7.3.5.4 ''The ccos functions''。
形式 :
double complex ccos(double complex z);
float complex ccosf(float complex z);
long double complex ccosl(long double complex z);
説明
ccos関数は、zの複素余弦を計算します。
返値
ccos関数は、複素余弦の値を複素数で返します。
ISO/IEC 9899:2017 § 7.3.5.5 ''The csin functions''。;形式 :
double complex csin(double complex z);
float complex csinf(float complex z);
long double complex csinl(long double complex z);
説明
csin関数は、zの複素正弦を計算します。
返値
csin関数は、複素正弦の値を複素数で返します。
ISO/IEC 9899:2017 § 7.3.5.6 ''The ctan functions''。
形式 :
double complex ctan(double complex z);
float complex ctanf(float complex z);
long double complex ctanl(long double complex z);
説明
ctan関数は、zの複素正接を計算します。
返値
ctan関数は、複素正弦の値を複素数で返します。
ISO/IEC 9899:2017 § 7.3.6 ''Hyperbolic functions''
ISO/IEC 9899:2017 § 7.3.6.1 ''The cacosh functions''。
形式 :
double complex cacosh(double complex z);
float complex cacoshf(float complex z);
long double complex cacoshl(long double complex z);
説明
cacosh関数は、zの複素数逆双曲線余弦を、実軸に沿って1未満の値で分岐して計算します。
返値
ISO/IEC 9899:2017 § 7.3.6.2 ''The casinh functions''。
形式 :
double complex casinh(double complex z);
float complex casinhf(float complex z);
long double complex casinhl(long double complex z);
説明
casinh関数は，zの複素数逆双曲線正弦を，虚軸に沿って区間[-i, +i]の外側で分岐して計算します。
返値
casinh 関数は，複素数逆双曲線正弦の値を，実軸では数学的に束縛されない帯の範囲，虚軸では区間 [-iπ /2, +iπ /2] の範囲で返します。
ISO/IEC 9899:2017 § 7.3.6.3 ''The catanh functions''。
形式 :
double complex catanh(double complex z);
float complex catanhf(float complex z);
long double complex catanhl(long double complex z);
説明
catanh関数は、zの複素数逆双曲線正接を、実軸に沿った区間[-1, +1]の外側で分岐して計算します。
返値
catanh関数は、複素数逆双曲線正接の値を、実軸は数学的に束縛されていない帯の範囲で、虚軸は区間[-iπ /2, +iπ /2]で返します。
ISO/IEC 9899:2017 § 7.3.6.4 ''The ccosh functions''。
形式 :
double complex ccosh(double complex z);
float complex ccoshf(float complex z);
long double complex ccoshl(long double complex z);
説明
ccosh関数は、zの複素数逆双曲線余弦を計算します。
返値
ccosh関数は、複素数逆双曲線余弦の値を返します。
ISO/IEC 9899:2017 § 7.3.6.5 ''The csinh functions''。
形式 :
double complex csinh(double complex z);
float complex csinhf(float complex z);
long double complex csinhl(long double complex z);
説明
csinh関数は、zの複素数双曲線正弦を計算します。
返値
csinh関数は、複素数双曲線正弦の値を返します。
ISO/IEC 9899:2017 § 7.3.6.6 ''The ctanh functions''。
形式 :
double complex ctanh(double complex z);
float complex ctanhf(float complex z);
long double complex ctanhl(long double complex z);
説明
ctanh関数は、zの複素数双曲線正接を計算します。
返値
ctanh関数は、複素数双曲線正接の値を返します。
ISO/IEC 9899:2017 § 7.3.7 ''Exponential and logarithmic functions''
ISO/IEC 9899:2017 § 7.3.7.1 ''The cexp functions''。
形式 : 
double complex cexp(double complex z);
float complex cexpf(float complex z);
long double complex cexpl(long double complex z);
機能
cexp関数群は、z の e を底とする複素指数関数を計算します。
返却値
cexp関数群は、z の e を底とする複素指数関数を返します。
ISO/IEC 9899:2017 § 7.3.7.2 ''The clog functions''。
形式 : 
double complex clog(double complex z);
float complex clogf(float complex z);
long double complex clogl(long double complex z);
機能
clog関数群は、負の実軸に沿って分岐線法を使用して、z の複素自然対数 (e を底とする) を計算します。
返却値
：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命名規則に従えば complex 版の fabs なので cfabs ですが、cabs は例外です。 functions''。
形式 : 
double cabs(double complex z);
float cabsf(float complex z);
long double cabsl(long double complex z);
機能
of z.
返却値
cabs関数群は、複素数の絶対値を返します。
ISO/IEC 9899:2017 § 7.3.8.2 ''The cpow functions''。
形式 : 
double complex cpow(double complex x, double complex y);
float complex cpowf(float complex x, float complex y);
long double complex cpowl(long double complex x,long double complex y);
機能
cpow関数群は、複素数のべき乗関数xyを計算し、負の実軸に沿って第1パラメータの分岐を行います。
返却値
cpow関数群は、複素数のべき乗関数の値を返します。
ISO/IEC 9899:2017 § 7.3.8.3 ''The csqrt functions''。
形式 : 
double complex csqrt(double complex z);
float complex csqrtf(float complex z);
long double complex csqrtl(long double complex z);
機能
real axis.
返却値
(including the imaginary axis).
複素数の偏角を計算する
ISO/IEC 9899:2017 § 7.3.9.1 ''The carg functions''。
形式: 
double carg(double complex z);
float cargf(float complex z);
long double cargl(long double complex z);
複素数の虚数部を返します。
ISO/IEC 9899:2017 § 7.3.9.2 ''The cimag functions''。
形式: 
double cimag(double complex z);
float cimagf(float complex z);
long double cimagl(long double complex z);
CMPLXマクロ群は、指定された複素数型の式に展開され、実数部はxの（変換後の）値、虚数部はyの（変換後の）値となります同名のFortran組み込み関数と機能的に同等です。。
結果として得られる式は、両方の引数が同様に適切である場合に、静的またはスレッドストレージ期間を持つオブジェクトのイニシャライザーとして使用するのに適しているものとします。
ISO/IEC 9899:2017 § 7.3.9.3 ''The CMPLX macros''。; 形式: 
double complex CMPLX(double x, double y);
float complex CMPLXF(float x, float y);
long double complex CMPLXL(long double x, long double y);
戻値 : x + ''i''y
歴史:CMPLXマクロ群は、C11で追加されました。
これらのマクロは、あたかも実装が虚数型をサポートしているかのように動作し定義は、
_Imaginary_I * (double)(y)))
_Imaginary_I * (float)(y)))
_Imaginary_I * (long double)(y)))
のようなものになります。
複素共役を計算します。
ISO/IEC 9899:2017 § 7.3.9.4 ''The conj functions''。
形式: 
double complex conj(double complex z);
float complex conjf(float complex z);
long double complex conjl(long double complex z);
リーマン球面への複素数の投影を計算します。
ISO/IEC 9899:2017 § 7.3.9.5 ''The cproj functions''。; 形式: 
double complex cproj(double complex z);
float complex cprojf(float complex z);
long double complex cprojl(long double complex z);
複素数の実数部を返します。
ISO/IEC 9899:2017 § 7.3.9.6 ''The creal functions''。
形式: 
double creal(double complex z);
float crealf(float complex z);
long double creall(long double complex z);