<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div class="moz-cite-prefix">On 9/23/2026 15:40, Jerome Coonen
wrote:<br>
</div>
<blockquote type="cite" cite="mid:CALn6Fv71k2sNcwVTrgPvwBX6m6esD5W6FFgsDGHECcURenyHCg@mail.gmail.com">
<div dir="ltr">
<div dir="ltr">
<div class="gmail_quote">Here is the proposal to simplify and
clarify this language. First<span style="background-color:transparent"> 5.3.5.3.3p19 from:</span></div>
<div class="gmail_quote">
<div dir="ltr">
<div><br>
</div>
<div>The <font color="#ff0000"><strike>minimum</strike></font>
range of representable values for a floating type is <font color="#ff0000"><strike>the most negative finite </strike></font><strike><font color="#ff0000">floating-point<br>
number</font></strike><font color="#ff0000"><strike>
representable in that type through the most positive
finite floating-point number representable in that
type. In addition, if negative infinity is
representable in a type, the range of that type is
extended to all negative real numbers; likewise, if
positive infinity is representable in a type, the
range of that type is extended to all positive real
numbers.</strike></font></div>
<div><br>
</div>
<div>To:</div>
<div><br>
</div>
<div>The range of representable values for a floating type
is <font color="#0000ff">the collection of
representable finite, infinite, and NaN values.</font></div>
<div><br>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<p>I strenuously disagree with this wording.</p>
<p>Looking in the latest draft, the phrase "range of representable
values" occurs 11 times, and the relevant uses for FP outside of
its definition are:</p>
<p>6.4.5:</p>
<p>
<blockquote type="cite">Each constant shall have a type and the
value of a constant shall be in the range of representable<br>
values for its type.</blockquote>
6.5.1:<br>
<blockquote type="cite">If an exceptional condition occurs during
the evaluation of an expression (that is, if the result is not<br>
mathematically defined or not in the range of representable
values for its type), the behavior is<br>
undefined.</blockquote>
6.6.1:</p>
<p>
<blockquote type="cite">Each constant expression shall evaluate to
a value that is in the range of representable values for its<br>
type.</blockquote>
<br>
</p>
<p>The first and last uses are creating semantic constraints; if the
result is not in the range of representable values, then it
creates a compiler error.</p>
<p>The wording you propose, however, includes only those values that
are representable in the type. Since 0.1 is not representable as a
binary floating-point number, your wording would seem to indicate
that double x = 0.1; becomes a compiler error. Any wording needs
to clearly anticipate that values which lie within the minimum and
maximum values are in the range of representable values, even if
the exact value itself cannot be represented.</p>
<p>I'll point out again that C++ has emphatically decided that C
intentionally excluded infinities from the range of representable
values. I don't have a strong opinion on that matter, though
having spent the past few hours trying to reconcile the C and C++
definitions of constexpr as it relates to floating point, I have
come to conclusion that there's an elaborate game of telephone
being played here.</p>
</body>
</html>