<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
  <meta name="generator" content=
  "HTML Tidy for OS/2 (vers 1 September 2005), see www.w3.org">
<style type="text/css">
      del { font-weight:bold;background-color:#ffa0a0 }
      ins { font-weight:bold;background-color:#a0ffa0 }
      blockquote {
      display: block;
      font-family: "Times New Roman";
      background-color:lightgray;
      margin-top: 1em;
      margin-bottom: 1em;
      margin-left: 40px;
      margin-right: 40px
      }
</style>

  <title>26zz: Quantum exponent of NaN</title>
</head>

<body>
  <p><br>
  <!-- Who are the authors... -->
   <b>Submitter:</b>CFP group<br>
  <!-- What is the date of submission. yyyy-mm-dd -->
   <b>Submission Date:</b> 2021-??-??<br>
  <b>Document:</b> WG14 26zz<br>
  <b>Title:</b> 26zz: Quantum exponent of NaN<br>
  <b>Reference Documents:</b> N2596, IEEE 754-2019</p>

  <p>Summary: Q(x) is used to denote the quantum exponent of
  decimal floating-point x. Some math functions make reference to
  Q(NAN). However, Q(NAN) is not defined in either C23 or IEEE
  754-2019.</p>

  <p>5.2.4.2.3 paragraph 9 says the preferred quantum exponent is
  specified by IEEE 754-2019.</p>

  <p>The table of Preferred quantum exponents in paragraph 10 of
  5.2.4.2.3 makes reference to Q(x) and preferred quantum exponent
  of the result.</p>

  <p>There are five cases where a NaN operand does not produce a
  NaN result for math functions. While the result's value is
  defined, the quantum exponent of that result is not well defined
  -- mainly because Q(NAN) is not defined.</p>

  <ul>
    <li>compoundn(NAN,0) -- F.10.4.2 says value is 1. The table in
    5.2.4.2.3 says its quantum exponent is
    floor(0*min(0,Q(NAN))).</li>

    <li>hypot(+/-INFINITY,NAN) -- F.10.4.4 says value is +INFINITY.
    The table in 5.2.4.2.3 says its quantum exponent is
    min(Q(INFINITY),Q(NAN)).</li>

    <li>pow(1,NAN) -- F.10.4.5 says value is 1. The table in
    5.2.4.2.3 says its quantum exponent is floor(NAN*Q(1)).</li>

    <li>pow(NAN,0) -- F.10.4.5 says value is 1. The table in
    5.2.4.2.3 says its quantum exponent is floor(0*Q(NAN)).</li>

    <li>pown(NAN,+/-0) -- F.10.4.6 says value is 1. The table in
    5.2.4.2.3 says its quantum exponent is floor(+/-0*Q(NAN)).</li>
  </ul>

  <p>This appears to be a defect in IEEE 754-2019.</p>

  <p>Suggested changes to C23: Change 5.2.4.2.3, paragraph 10
  from:</p>

  <blockquote>
    The following table shows, for each operation delivering a
    result in decimal floating-point format, how the preferred
    quantum exponents of the operands, Q(x), Q(y), etc., determine
    the preferred quantum exponent of the operation result.
  </blockquote>to

  <blockquote>
    The following table shows, for each operation delivering a
    result in decimal floating-point format, how the preferred
    quantum exponents of the <ins>non-NaN</ins>operands, Q(x),
    Q(y), etc., determine the preferred quantum exponent of the
    operation result. <ins>A finite result from a NaN operand has a
    preferred quantum exponent of zero. An infinite result from a
    NaN operand has a preferred quantum exponent of infinity.</ins>
  </blockquote>
</body>
</html>