<!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>