# CMPLXF, CMPLX, CMPLXL

< c‎ | numeric‎ | complex

C
 Language Headers Type support Program utilities Variadic function support Error handling Dynamic memory management Date and time utilities Strings library Algorithms Numerics Input/output support Localization support Atomic operations (C11) Thread support (C11) Technical Specifications

Complex number arithmetic
Types and the imaginary constant
 complex _Complex_I CMPLX
Manipulation
Power and exponential functions
Trigonometric functions
Hyperbolic functions

 Defined in header  float complex       CMPLXF( float real, float imag ); (since C11) double complex      CMPLX( double real, double imag ); (since C11) long double complex CMPLXL( long double real, long double imag ); (since C11)

Each of these macros expands to an expression that evaluates to the value of the specified complex type, with the real part having the value of real (converted to the specified argument type) and the imaginary part having the value of imag (converted to the specified argument type)

The expressions are suitable for use as initializers for objects with static or thread storage duration, as long as the expressions real and imag are also suitable.

## Contents

### Parameters

 real - the real part of the complex number to return imag - the imaginary part of the complex number to return

### Return value

A complex number composed of real and imag as the real and imaginary parts.

### Notes

These macros are implemented as if the imaginary types are supported (even if they are otherwise not supported and _Imaginary_I is actually undefined) and as if defined as follows:

#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)))

### Example

#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));
}

Output:

z = 0.0-0.0i

### References

• C11 standard (ISO/IEC 9899:2011):
• 7.3.9.3 The CMPLX macros (p: 197)