3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>Hints on using float128 (and __float128)
</title>
5 <link rel=
"stylesheet" href=
"../math.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.77.1">
7 <link rel=
"home" href=
"../index.html" title=
"Math Toolkit 2.5.1">
8 <link rel=
"up" href=
"../cstdfloat.html" title=
"Chapter 3. Specified-width floating-point typedefs">
9 <link rel=
"prev" href=
"examples.html" title=
"Examples">
10 <link rel=
"next" href=
"float128.html" title=
"Implementation of Float128 type">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../../libs/libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"examples.html"><img src=
"../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../cstdfloat.html"><img src=
"../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../index.html"><img src=
"../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"float128.html"><img src=
"../../../../../doc/src/images/next.png" alt=
"Next"></a>
26 <div class=
"titlepage"><div><div><h2 class=
"title" style=
"clear: both">
27 <a name=
"math_toolkit.float128_hints"></a><a class=
"link" href=
"float128_hints.html" title=
"Hints on using float128 (and __float128)">Hints on using float128 (and
29 </h2></div></div></div>
31 <a name=
"math_toolkit.float128_hints.h0"></a>
32 <span class=
"phrase"><a name=
"math_toolkit.float128_hints.different_float128"></a></span><a class=
"link" href=
"float128_hints.html#math_toolkit.float128_hints.different_float128">__float128
35 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
37 __float128 is the (optionally) compiler supplied hardware type, it's an
38 C-ish extension to C++ and there is only minimal support for it in normal
39 C++ (no IO streams or
<code class=
"computeroutput"><span class=
"identifier">numeric_limits
</span></code>
40 support, function names in libquadmath all have different names to the
41 <code class=
"computeroutput"><span class=
"identifier">std
</span><span class=
"special">::
</span></code>
42 ones etc.) So you can program type
<code class=
"computeroutput"><span class=
"identifier">__float128
</span></code>
43 directly, but it's harder work.
46 Type
<code class=
"computeroutput"><span class=
"identifier">float128
</span></code> uses __float128
47 and makes it C++ and generic code friendly, with all the usual standard
48 <code class=
"computeroutput"><span class=
"identifier">iostream
</span></code>,
<code class=
"computeroutput"><span class=
"identifier">numeric_limits
</span></code>,
<code class=
"computeroutput"><span class=
"identifier">complex
</span></code>
49 in namspace
<code class=
"computeroutput"><span class=
"identifier">std
</span><span class=
"special">::
</span></code>
50 available, so strongly recommended for C++ use.
54 <a name=
"math_toolkit.float128_hints.h1"></a>
55 <span class=
"phrase"><a name=
"math_toolkit.float128_hints.hints_and_tips"></a></span><a class=
"link" href=
"float128_hints.html#math_toolkit.float128_hints.hints_and_tips">Hints
58 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
60 Make sure you declare variables with the correct type, here
<code class=
"computeroutput"><span class=
"identifier">float128
</span></code>.
63 Make sure that if you pass a variable to a function then it is casted to
64 <code class=
"computeroutput"><span class=
"identifier">float128
</span></code>.
67 Make sure you declare literals with the correct suffix - otherwise they'll
68 be treated as type
<code class=
"computeroutput"><span class=
"keyword">double
</span></code>
69 with catastrophic loss of precision. So make sure they have a Q suffix
70 for
128-bit floating-point literals.
73 All the std library functions, cmath functions, plus all the constants,
74 and special functions from Boost.Math should then just work.
77 Make sure std lib functions are called
<span class=
"bold"><strong>unqualified
</strong></span>
78 so that the correct overload is found via
<a href=
"http://en.cppreference.com/w/cpp/language/adl" target=
"_top">Argument
79 Dependent Lookup (ADL)
</a>. So write sqrt(variable) and not std::sqrt(variable).
82 In general, try not to reinvent stuff - using constants from Boost.Math
83 is probably less error prone than declaring your own, likewise the special
88 Some examples of what can go horribly and silently wrong are at
<a href=
"../../../example/float128_example.cpp" target=
"_top">float128_example.cpp
</a>.
91 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
92 <td align=
"left"></td>
93 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2006-
2010,
2012-
2014 Nikhar Agrawal,
94 Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert
95 Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R
åde, Gautam Sewani,
96 Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang
<p>
97 Distributed under the Boost Software License, Version
1.0. (See accompanying
98 file LICENSE_1_0.txt or copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt" target=
"_top">http://www.boost.org/LICENSE_1_0.txt
</a>)
103 <div class=
"spirit-nav">
104 <a accesskey=
"p" href=
"examples.html"><img src=
"../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../cstdfloat.html"><img src=
"../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../index.html"><img src=
"../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"float128.html"><img src=
"../../../../../doc/src/images/next.png" alt=
"Next"></a>