Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / multiprecision / doc / html / boost_multiprecision / tut / floats / float128.html
index 47ef7d1..601d1bb 100644 (file)
@@ -2,7 +2,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <title>float128</title>
-<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
+<link rel="stylesheet" href="../../../multiprecision.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../floats.html" title="floating-point Numbers">
               move aware.
             </li>
 <li class="listitem">
+              This type is fully <code class="computeroutput"><span class="keyword">constexpr</span></code>
+              aware - basic constexpr arithmetic is supported from C++14 and onwards,
+              comparisons, plus the functions <code class="computeroutput"><span class="identifier">fabs</span></code>,
+              <code class="computeroutput"><span class="identifier">abs</span></code>, <code class="computeroutput"><span class="identifier">fpclassify</span></code>, <code class="computeroutput"><span class="identifier">isnormal</span></code>,
+              <code class="computeroutput"><span class="identifier">isfinite</span></code>, <code class="computeroutput"><span class="identifier">isinf</span></code> and <code class="computeroutput"><span class="identifier">isnan</span></code>
+              are also supported if either the compiler implements C++20's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_constant_evaluated</span><span class="special">()</span></code>,
+              or if the compiler is GCC.
+            </li>
+<li class="listitem">
               It is not possible to round-trip objects of this type to and from a
               string and get back exactly the same value when compiled with Intel's
               C++ compiler and using <code class="computeroutput"><span class="identifier">_Quad</span></code>
               used as a literal type (constexpr support).
             </li>
 <li class="listitem">
+              Type <code class="computeroutput"><span class="identifier">float128</span></code> can be
+              used for full <code class="computeroutput"><span class="keyword">constexpr</span></code>
+              arithmetic from C++14 and later with GCC. The functions <code class="computeroutput"><span class="identifier">abs</span></code>, <code class="computeroutput"><span class="identifier">fabs</span></code>,
+              <code class="computeroutput"><span class="identifier">fpclassify</span></code>, <code class="computeroutput"><span class="identifier">isnan</span></code>, <code class="computeroutput"><span class="identifier">isinf</span></code>,
+              <code class="computeroutput"><span class="identifier">isfinite</span></code> and <code class="computeroutput"><span class="identifier">isnormal</span></code> are also <code class="computeroutput"><span class="keyword">constexpr</span></code>,
+              but the transcendental functions are not.
+            </li>
+<li class="listitem">
               When using the Intel compiler, the underlying type defaults to <code class="computeroutput"><a class="link" href="float128.html" title="float128">float128</a></code>
               if it's available and <code class="computeroutput"><span class="identifier">_Quad</span></code>
               if not. You can override the default by defining either <code class="computeroutput"><span class="identifier">BOOST_MP_USE_FLOAT128</span></code> or <code class="computeroutput"><span class="identifier">BOOST_MP_USE_QUAD</span></code>.
 <li class="listitem">
               When compiling with <code class="computeroutput"><span class="identifier">gcc</span></code>,
               you need to use the flag <code class="computeroutput"><span class="special">--</span><span class="identifier">std</span><span class="special">=</span><span class="identifier">gnu</span><span class="special">++</span><span class="number">11</span><span class="special">/</span><span class="number">14</span><span class="special">/</span><span class="number">17</span></code>,
-              as the numeric literal operator 'operator""Q' is a GNU extension.
-              Compilation fails with the flag <code class="computeroutput"><span class="special">--</span><span class="identifier">std</span><span class="special">=</span><span class="identifier">c</span><span class="special">++</span><span class="number">11</span><span class="special">/</span><span class="number">14</span><span class="special">/</span><span class="number">17</span></code>.
+              as the suffix 'Q' is a GNU extension. Compilation fails with the flag
+              <code class="computeroutput"><span class="special">--</span><span class="identifier">std</span><span class="special">=</span><span class="identifier">c</span><span class="special">++</span><span class="number">11</span><span class="special">/</span><span class="number">14</span><span class="special">/</span><span class="number">17</span></code> unless you also use <code class="computeroutput"><span class="special">-</span><span class="identifier">fext</span><span class="special">-</span><span class="identifier">numeric</span><span class="special">-</span><span class="identifier">literals</span></code>.
             </li>
 </ul></div>
 <h6>