7.3.1 Introduction
The header <complex.h> defines macros and declares functions that support complex arithmetic.[1] Each synopsis specifies a family of functions consisting of a principal function with one or more double complex parameters and a double complex or double return value; and other functions with the same name but with f and l suffixes which are corresponding functions with float and long double parameters and return values.
The macro
complex
expands to _Complex; the macro
_Complex_I
expands to a constant expression of type const float _Complex, with the value of the imaginary unit.[2]
The macros
imaginary
and
_Imaginary_I
are defined if and only if the implementation supports imaginary types;[3] if defined, they expand to _Imaginary and a constant expression of type const float _Imaginary with the value of the imaginary unit.
The macro
I
expands to either _Imaginary_I or _Complex_I. If _Imaginary_I is not defined, I shall expand to _Complex_I.
Notwithstanding the provisions of 7.1.3, a program may undefine and perhaps then redefine the macros complex, imaginary, and I.
Forward References
Footnotes