If the implementation supports an extended floating-point type ([basic.fundamental])
whose properties are specified by
the ISO/IEC/IEEE 60559 floating-point interchange format binary16,
then the *typedef-name* std::float16_t
is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_FLOAT16_T__ is defined ([cpp.predefined]), and
the floating-point literal suffixes f16 and F16
are supported ([lex.fcon]).

If the implementation supports an extended floating-point type
whose properties are specified by
the ISO/IEC/IEEE 60559 floating-point interchange format binary32,
then the *typedef-name* std::float32_t
is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_FLOAT32_T__ is defined, and
the floating-point literal suffixes f32 and F32 are supported.

If the implementation supports an extended floating-point type
whose properties are specified by
the ISO/IEC/IEEE 60559 floating-point interchange format binary64,
then the *typedef-name* std::float64_t
is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_FLOAT64_T__ is defined, and
the floating-point literal suffixes f64 and F64 are supported.

If the implementation supports an extended floating-point type
whose properties are specified by
the ISO/IEC/IEEE 60559 floating-point interchange format binary128,
then the *typedef-name* std::float128_t
is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_FLOAT128_T__ is defined, and
the floating-point literal suffixes f128 and F128 are supported.

If the implementation supports an extended floating-point type
with the properties, as specified by ISO/IEC/IEEE 60559, of
radix (b) of 2,
storage width in bits (k) of 16,
precision in bits (p) of 8,
maximum exponent (emax) of 127, and
exponent field width in bits (w) of 8, then
the *typedef-name* std::bfloat16_t
is defined in the header <stdfloat> and names such a type,
the macro __STDCPP_BFLOAT16_T__ is defined, and
the floating-point literal suffixes bf16 and BF16 are supported.

Table 15: Properties of named extended floating-point types [tab:basic.extended.fp]

Parameter | float16_t | float32_t | float64_t | float128_t | bfloat16_t | |

ISO/IEC/IEEE 60559 name | binary16 | binary32 | binary64 | binary128 | ||

k, storage width in bits | 16 | 32 | 64 | 128 | 16 | |

p, precision in bits | 11 | 24 | 53 | 113 | 8 | |

emax, maximum exponent | 15 | 127 | 1023 | 16383 | 127 | |

w, exponent field width in bits | 5 | 8 | 11 | 15 | 8 |