Issue 1038: Issues with float_t and related types

Authors: Jay Ghiron
Date: 2026-03-31
Submitted against: C23
Status: Open

Question 1

What does it mean when float_t or double_t are complex types? Specifically:

The types

float_t
double_t

are floating types ... If they are not real floating types, the behavior is implementation-defined.

(C23 7.12.1 "Mathematics" paragraph 3.)

The behavior of what is implementation-defined? Any program that uses the types float_t or double_t? Any program that performs floating-point arithmetic? Any program at all, simply because the types are defined this way?

Question 2

Can float_t and double_t be defined as decimal floating types? They are real floating types, but such definitions would prevent adding float and float_t or double and double_t. To satisfy the requirements on the ranges of values, at least one of the decimal floating types would need to represent a set of values which are a superset of the values representable by float for such definitions to be possible.

Question 3

Can long_double_t and _FloatN_t be defined as complex types?