Namespaces
Variants

CMPLXF, CMPLX, CMPLXL

From cppreference.net
ヘッダーで定義 <complex.h>
float complex CMPLXF ( float real, float imag ) ;
(C11以降)
double complex CMPLX ( double real, double imag ) ;
(C11以降)
long double complex CMPLXL ( long double real, long double imag ) ;
(C11以降)

これらの各マクロは、指定された複素数型の値に評価される式に展開されます。実数部は real (指定された引数型に変換された値)を持ち、虚数部は imag (指定された引数型に変換された値)を持ちます。

これらの式は、 real および imag の式も同様に適切である限り、静的記憶域期間またはスレッド記憶域期間を持つオブジェクトの初期化子として使用するのに適しています。

目次

パラメータ

real - 返される複素数の実部
imag - 返される複素数の虚部

戻り値

実数部と虚数部から構成される複素数。 real imag をそれぞれ実部と虚部として持つ。

注記

これらのマクロは、仮に虚数型がサポートされているかのように実装されています(たとえそれらがサポートされておらず、 _Imaginary_I が実際には未定義であっても)。また、以下のように定義されているかのように動作します:

#define CMPLX(x, y) ((double complex)((double)(x) + _Imaginary_I * (double)(y)))
#define CMPLXF(x, y) ((float complex)((float)(x) + _Imaginary_I * (float)(y)))
#define CMPLXL(x, y) ((long double complex)((long double)(x) + \
                      _Imaginary_I * (long double)(y)))

#include <stdio.h>
#include <complex.h>
int main(void)
{
    double complex z = CMPLX(0.0, -0.0);
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

出力:

z = 0.0-0.0i

参考文献

  • C11規格 (ISO/IEC 9899:2011):
  • 7.3.9.3 CMPLXマクロ (p: 197)

関連項目

虚数単位定数 i
(マクロ定数)