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 (стр: 197)

Смотрите также

константа мнимой единицы i
(макрос-константа)
C++ documentation для complex