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.
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.
// a.c
#include <stdio.h>
#include <complex.h>
double _Complex a = CMPLX(5.0, 1.0/0);
int main(void) {
double _Complex c = CMPLX(5.0, 1.0/0);
printf("Value: %e + %e * I\n", __real__(a), __imag__(a));
printf("Value: %e + %e * I\n", __real__(c), __imag__(c));
}
You can specify the following command to compile this program:
xlc -qlanglvl=extc1x a.c
Value: 5 + Inf * I
Value: 5 + Inf * I