G.2 Types

1

There is a new keyword _Imaginary, which is used to specify imaginary types. It is used as a type specifier within declaration specifiers in the same way as _Complex is (thus, _Imaginary float is a valid type name).

2

There are three imaginary types, designated as float _Imaginary, double _Imaginary, and long double _Imaginary. The imaginary types (along with the real floating and complex types) are floating types.

3

For imaginary types, the corresponding real type is given by deleting the keyword _Imaginary from the type name.

4

Each imaginary type has the same representation and alignment requirements as the corresponding real type. The value of an object of imaginary type is the value of the real representation times the imaginary unit.

5

The imaginary type domain comprises the imaginary types.