<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 1. 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>