7.3.1 Introduction

1

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.

2

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]

3

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.

4

The macro

I

expands to either _Imaginary_I or _Complex_I. If _Imaginary_I is not defined, I shall expand to _Complex_I.

5

Notwithstanding the provisions of 7.1.3, a program may undefine and perhaps then redefine the macros complex, imaginary, and I.

Forward References

Footnotes