Initialization of complex types (C11)
When the C11 complex initialization feature is enabled, you can initialize C99 complex types with a value of the form x + yi, where x and y can be any floating point value, including Inf or NaN.
The C11 complex initialization feature can be enabled by the -qlanglvl=extc1x group option.
The C11 complex initialization feature can be enabled by the -qlanglvl=extended or -qlanglvl=extended0x group option. You can also use the -qlanglvl=complexinit suboption to enable this feature. When you specify the -qlanglvl=nocomplexinit option, only the C11 form of complex initialization is disabled.
float complex CMPLXF( float x, float y );
double complex CMPLX( double x, double y );
long double complex CMPLXL( long double x, long double y );
These macros are available only if the C language header file complex.h is included, and they result in values that are suitable for static initialization if arguments are suitable for static initialization. To use the C language header file complex.h in C++ programs, you must specify the -qlanglvl=c99complexheader or -qlanglvl=c99complex option.
// a.c
#include <stdio.h>
#include <math.h>
#include <complex.h>
int main(void) {
float _Complex c = CMPLXF(5.0, NAN);
printf("Value: %e + %e * I\n", __real__(c), __imag__(c));
return;
}
You can specify the following command to compile this
program:xlc -qlanglvl=extc1x -qfloat=ieee a.c
The
result of running the program is: Value: 5 + NaNQ * I