Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r84016 - in trunk: boost/multiprecision libs/multiprecision/doc libs/multiprecision/doc/html libs/multiprecision/doc/html/boost_multiprecision libs/multiprecision/doc/html/boost_multiprecision/indexes libs/multiprecision/doc/html/boost_multiprecision/tut libs/multiprecision/doc/html/boost_multiprecision/tut/floats libs/multiprecision/example libs/multiprecision/test
From: john_at_[hidden]
Date: 2013-04-22 13:50:58


Author: johnmaddock
Date: 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
New Revision: 84016
URL: http://svn.boost.org/trac/boost/changeset/84016

Log:
Fix float128 compile error.
Add constexpr support to float128.
Add float128 docs and rebuild HTML.
Added:
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html (contents, props changed)
   trunk/libs/multiprecision/example/float128_snips.cpp (contents, props changed)
Text files modified:
   trunk/boost/multiprecision/float128.hpp | 8 ++++--
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html | 5 ++-
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html | 13 ++++++++--
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html | 10 +++++--
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html | 17 ++++++++++++-
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut.html | 1
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html | 35 +++++++++++++++++++++++++++++
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html | 6 ++--
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html | 6 ++--
   trunk/libs/multiprecision/doc/html/index.html | 3 +
   trunk/libs/multiprecision/doc/multiprecision.qbk | 47 ++++++++++++++++++++++++++++++++++++++++
   trunk/libs/multiprecision/test/Jamfile.v2 | 15 +++++++++++
   trunk/libs/multiprecision/test/test_constexpr.cpp | 7 +++++
   13 files changed, 152 insertions(+), 21 deletions(-)

Modified: trunk/boost/multiprecision/float128.hpp
==============================================================================
--- trunk/boost/multiprecision/float128.hpp (original)
+++ trunk/boost/multiprecision/float128.hpp 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -7,6 +7,7 @@
 #define BOOST_MP_FLOAT128_HPP
 
 #include <boost/config.hpp>
+#include <boost/scoped_array.hpp>
 #include <boost/multiprecision/number.hpp>
 
 
@@ -111,15 +112,15 @@
 private:
    __float128 m_value;
 public:
- float128_backend() : m_value(0) {}
- float128_backend(const float128_backend& o) : m_value(o.m_value) {}
+ BOOST_CONSTEXPR float128_backend() : m_value(0) {}
+ BOOST_CONSTEXPR float128_backend(const float128_backend& o) : m_value(o.m_value) {}
    float128_backend& operator = (const float128_backend& o)
    {
       m_value = o.m_value;
       return *this;
    }
    template <class T>
- float128_backend(const T& i, const typename enable_if_c<is_convertible<T, __float128>::value>::type* = 0)
+ BOOST_CONSTEXPR float128_backend(const T& i, const typename enable_if_c<is_convertible<T, __float128>::value>::type* = 0)
       : m_value(i) {}
    template <class T>
    typename enable_if_c<is_arithmetic<T>::value || is_convertible<T, __float128>::value, float128_backend&>::type operator = (const T& i)
@@ -149,6 +150,7 @@
    {
 #ifndef BOOST_INTEL
       char buf[100];
+ boost::scoped_array<char> buf2;
       std::string format = "%";
       if(f & std::ios_base::showpos)
          format += "+";

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -22,9 +22,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../indexes.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.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="s02.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id990841">
+<div class="section id1007786">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id990841"></a>Function Index</h3></div></div></div>
+<a name="id1007786"></a>Function Index</h3></div></div></div>
 <p><a class="link" href="s01.html#idx_id_0">A</a> <a class="link" href="s01.html#idx_id_1">B</a> <a class="link" href="s01.html#idx_id_2">C</a> <a class="link" href="s01.html#idx_id_3">D</a> <a class="link" href="s01.html#idx_id_4">E</a> <a class="link" href="s01.html#idx_id_5">F</a> <a class="link" href="s01.html#idx_id_7">I</a> <a class="link" href="s01.html#idx_id_8">L</a> <a class="link" href="s01.html#idx_id_9">M</a> <a class="link" href="s01.html#idx_id_11">O</a> <a class="link" href="s01.html#idx_id_12">P</a> <a class="link" href="s01.html#idx_id_13">R</a> <a class="link" href="s01.html#idx_id_14">S</a> <a class="link" href="s01.html#idx_id_15">T</a> <a class="link" href="s01.html#idx_id_17">V</a> <a class="link" href="s01.html#idx_id_18">Z</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
@@ -87,6 +87,7 @@
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">data</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/gmp_float.html" title="gmp_float"><span class="index-entry-level-1">gmp_float</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/ints/gmp_int.html" title="gmp_int"><span class="index-entry-level-1">gmp_int</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/rational/gmp_rational.html" title="gmp_rational"><span class="index-entry-level-1">gmp_rational</span></a></p></li>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -22,10 +22,10 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s01.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.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="s03.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id995230">
+<div class="section id1011990">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id995230"></a>Class Index</h3></div></div></div>
-<p><a class="link" href="s02.html#idx_id_21">C</a> <a class="link" href="s02.html#idx_id_22">D</a> <a class="link" href="s02.html#idx_id_23">E</a> <a class="link" href="s02.html#idx_id_25">G</a> <a class="link" href="s02.html#idx_id_26">I</a> <a class="link" href="s02.html#idx_id_27">L</a> <a class="link" href="s02.html#idx_id_28">M</a> <a class="link" href="s02.html#idx_id_29">N</a> <a class="link" href="s02.html#idx_id_34">T</a></p>
+<a name="id1011990"></a>Class Index</h3></div></div></div>
+<p><a class="link" href="s02.html#idx_id_21">C</a> <a class="link" href="s02.html#idx_id_22">D</a> <a class="link" href="s02.html#idx_id_23">E</a> <a class="link" href="s02.html#idx_id_24">F</a> <a class="link" href="s02.html#idx_id_25">G</a> <a class="link" href="s02.html#idx_id_26">I</a> <a class="link" href="s02.html#idx_id_27">L</a> <a class="link" href="s02.html#idx_id_28">M</a> <a class="link" href="s02.html#idx_id_29">N</a> <a class="link" href="s02.html#idx_id_34">T</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
 <a name="idx_id_21"></a><span class="term">C</span>
@@ -53,6 +53,13 @@
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">number</span></a></p></li></ul></div>
 </li></ul></div></dd>
 <dt>
+<a name="idx_id_24"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float128_backend</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
 <a name="idx_id_25"></a><span class="term">G</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -22,10 +22,10 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s02.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.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="s04.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
-<div class="section id995715">
+<div class="section id1012511">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id995715"></a>Typedef Index</h3></div></div></div>
-<p><a class="link" href="s03.html#idx_id_40">C</a> <a class="link" href="s03.html#idx_id_45">I</a> <a class="link" href="s03.html#idx_id_46">L</a> <a class="link" href="s03.html#idx_id_47">M</a> <a class="link" href="s03.html#idx_id_52">S</a> <a class="link" href="s03.html#idx_id_53">T</a> <a class="link" href="s03.html#idx_id_54">U</a></p>
+<a name="id1012511"></a>Typedef Index</h3></div></div></div>
+<p><a class="link" href="s03.html#idx_id_40">C</a> <a class="link" href="s03.html#idx_id_43">F</a> <a class="link" href="s03.html#idx_id_45">I</a> <a class="link" href="s03.html#idx_id_46">L</a> <a class="link" href="s03.html#idx_id_47">M</a> <a class="link" href="s03.html#idx_id_52">S</a> <a class="link" href="s03.html#idx_id_53">T</a> <a class="link" href="s03.html#idx_id_54">U</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
 <a name="idx_id_40"></a><span class="term">C</span>
@@ -100,6 +100,10 @@
 </li>
 </ul></div></dd>
 <dt>
+<a name="idx_id_43"></a><span class="term">F</span>
+</dt>
+<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-0">float128</span></a></p></li></ul></div></dd>
+<dt>
 <a name="idx_id_45"></a><span class="term">I</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -21,9 +21,9 @@
 <div class="spirit-nav">
 <a accesskey="p" href="s03.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indexes.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>
 </div>
-<div class="section id997854">
+<div class="section id1013581">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id997854"></a>Index</h3></div></div></div>
+<a name="id1013581"></a>Index</h3></div></div></div>
 <p><a class="link" href="s04.html#idx_id_57">A</a> <a class="link" href="s04.html#idx_id_58">B</a> <a class="link" href="s04.html#idx_id_59">C</a> <a class="link" href="s04.html#idx_id_60">D</a> <a class="link" href="s04.html#idx_id_61">E</a> <a class="link" href="s04.html#idx_id_62">F</a> <a class="link" href="s04.html#idx_id_63">G</a> <a class="link" href="s04.html#idx_id_64">I</a> <a class="link" href="s04.html#idx_id_65">L</a> <a class="link" href="s04.html#idx_id_66">M</a> <a class="link" href="s04.html#idx_id_67">N</a> <a class="link" href="s04.html#idx_id_68">O</a> <a class="link" href="s04.html#idx_id_69">P</a> <a class="link" href="s04.html#idx_id_70">R</a> <a class="link" href="s04.html#idx_id_71">S</a> <a class="link" href="s04.html#idx_id_72">T</a> <a class="link" href="s04.html#idx_id_73">U</a> <a class="link" href="s04.html#idx_id_74">V</a> <a class="link" href="s04.html#idx_id_75">Z</a></p>
 <div class="variablelist"><dl class="variablelist">
 <dt>
@@ -229,6 +229,7 @@
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">data</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/gmp_float.html" title="gmp_float"><span class="index-entry-level-1">gmp_float</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/ints/gmp_int.html" title="gmp_int"><span class="index-entry-level-1">gmp_int</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/rational/gmp_rational.html" title="gmp_rational"><span class="index-entry-level-1">gmp_rational</span></a></p></li>
@@ -503,6 +504,18 @@
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../map/faq.html" title="FAQ"><span class="index-entry-level-1">precision</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float128</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128_backend</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">float128_backend</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/float128.html" title="float128"><span class="index-entry-level-1">float128</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">fpclassify</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">number</span></a></p></li></ul></div>
 </li>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -43,6 +43,7 @@
 <dt><span class="section">cpp_dec_float</span></dt>
 <dt><span class="section">gmp_float</span></dt>
 <dt><span class="section">mpfr_float</span></dt>
+<dt><span class="section">float128</span></dt>
 <dt><span class="section">Examples</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="tut/floats/fp_eg/aos.html">Area of

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -30,6 +30,7 @@
 <dt><span class="section">cpp_dec_float</span></dt>
 <dt><span class="section">gmp_float</span></dt>
 <dt><span class="section">mpfr_float</span></dt>
+<dt><span class="section">float128</span></dt>
 <dt><span class="section">Examples</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="floats/fp_eg/aos.html">Area of
@@ -189,6 +190,40 @@
                 </p>
               </td>
 </tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">float128</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ boost/multiprecision/float128.hpp
+ </p>
+ </td>
+<td>
+ <p>
+ 2
+ </p>
+ </td>
+<td>
+ <p>
+ Either libquadmath
+ or the Intel C++ Math library.
+ </p>
+ </td>
+<td>
+ <p>
+ Very fast and efficient back-end for 128-bit floating point values
+ (113-bit mantissa, equivalent to FORTRAN's QUAD real)
+ </p>
+ </td>
+<td>
+ <p>
+ Depends on the compiler being either recent GCC or Intel C++ versions.
+ </p>
+ </td>
+</tr>
 </tbody>
 </table></div>
 </div>

Added: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/float128.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -0,0 +1,152 @@
+<html>
+<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">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
+<link rel="up" href="../floats.html" title="Floating Point Numbers">
+<link rel="prev" href="mpfr_float.html" title="mpfr_float">
+<link rel="next" href="fp_eg.html" title="Examples">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section boost_multiprecision_tut_floats_float128">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_multiprecision.tut.floats.float128"></a><a class="link" href="float128.html" title="float128">float128</a>
+</h4></div></div></div>
+<p>
+ <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">float128</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">multiprecision</span><span class="special">{</span>
+
+<span class="keyword">class</span> <span class="identifier">float128_backend</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">float128_backend</span><span class="special">,</span> <span class="identifier">et_off</span><span class="special">&gt;</span> <span class="identifier">float128</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">float128</span></code> number type
+ is a very thin wrapper around GCC's <code class="computeroutput"><span class="identifier">__float128</span></code>
+ or Intel's <code class="computeroutput"><span class="identifier">_Quad</span></code> data types
+ and provides an real-number type that is a drop-in replacement for the
+ native C++ floating-point types, but with a 113 bit mantissa, and compatible
+ with FORTRAN's 128-bit QUAD real.
+ </p>
+<p>
+ All the usual standard library and <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+ support are available, performance should be equivalent to the underlying
+ native types: for example the LINPACK benchmarks for GCC's <code class="computeroutput"><span class="identifier">__float128</span></code> and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">::</span><span class="identifier">float128</span></code>
+ both achieved 5.6 MFLOPS[3]</sup></a>.
+ </p>
+<p>
+ As well as the usual conversions from arithmetic and string types, instances
+ of <code class="computeroutput"><span class="identifier">float128</span></code> are copy constructible
+ and assignable from GCC's <code class="computeroutput"><span class="identifier">__float128</span></code>
+ and Intel's <code class="computeroutput"><span class="identifier">_Quad</span></code> data
+ types.
+ </p>
+<p>
+ It's also possible to access the underlying <code class="computeroutput"><span class="identifier">__float128</span></code>
+ or <code class="computeroutput"><span class="identifier">_Quad</span></code> type via the
+ <code class="computeroutput"><span class="identifier">data</span><span class="special">()</span></code>
+ member function of <code class="computeroutput"><span class="identifier">float128_backend</span></code>.
+ </p>
+<p>
+ Things you should know when using this type:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Default constructed <code class="computeroutput"><span class="identifier">float128</span></code>s
+ have the value zero.
+ </li>
+<li class="listitem">
+ This backend supports rvalue-references and is move-aware, making instantiations
+ of <code class="computeroutput"><span class="identifier">number</span></code> on this backend
+ move aware.
+ </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: this is a current limitation of our code. Round tripping
+ when using GCC is possible.
+ </li>
+<li class="listitem">
+ Conversion from a string results in a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span></code>
+ being thrown if the string can not be interpreted as a valid floating
+ point number.
+ </li>
+<li class="listitem">
+ Division by zero results in an infinity being produced.
+ </li>
+<li class="listitem">
+ Type <code class="computeroutput"><span class="identifier">float128</span></code> can be
+ used as a literal type (constexpr support).
+ </li>
+</ul></div>
+<h6>
+<a name="boost_multiprecision.tut.floats.float128.h0"></a>
+ <span class="phrase"><a name="boost_multiprecision.tut.floats.float128.float128_example_"></a></span><a class="link" href="float128.html#boost_multiprecision.tut.floats.float128.float128_example_">float128
+ example:</a>
+ </h6>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">multiprecision</span><span class="special">/</span><span class="identifier">float128</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+
+<span class="keyword">using</span> <span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">multiprecision</span><span class="special">;</span>
+
+<span class="comment">// Operations at 128-bit precision and full numeric_limits support:</span>
+<span class="identifier">float128</span> <span class="identifier">b</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="comment">// There are 113-bits of precision:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">float128</span><span class="special">&gt;::</span><span class="identifier">digits</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// Or 34 decimal places:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">float128</span><span class="special">&gt;::</span><span class="identifier">digits10</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// We can use any C++ std lib function, lets print all the digits as well:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="identifier">float128</span><span class="special">&gt;::</span><span class="identifier">max_digits10</span><span class="special">)</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">log</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// print log(2) = 0.693147180559945309417232121458176575</span>
+<span class="comment">// We can also use any function from Boost.Math:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">// And since we have an extended exponent range we can generate some really large </span>
+<span class="comment">// numbers here (4.02387260077093773543702433923004111e+2564):</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tgamma</span><span class="special">(</span><span class="identifier">float128</span><span class="special">(</span><span class="number">1000</span><span class="special">))</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="comment">//</span>
+<span class="comment">// We can declare constants using GCC or Intel's native types, and the Q suffix,</span>
+<span class="comment">// these can be declared constexpr if required:</span>
+
+<span class="identifier">constexpr</span> <span class="identifier">float128</span> <span class="identifier">pi</span> <span class="special">=</span> <span class="number">3.1415926535897932384626433832795028841971693993751058</span><span class="identifier">Q</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<div class="footnotes">
+<br><hr style="width:100; align:left;">
+<div id="ftn.boost_multiprecision.tut.floats.float128.f0" class="footnote"><p>[3]
+ On 64-bit Ubuntu 11.10, GCC-4.8.0, Intel Core 2 Duo T5800.
+ </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2012 John Maddock and Christopher Kormanyos<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../floats.html" title="Floating Point Numbers">
-<link rel="prev" href="mpfr_float.html" title="mpfr_float">
+<link rel="prev" href="float128.html" title="float128">
 <link rel="next" href="fp_eg/aos.html" title="Area of Circle">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="float128.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section boost_multiprecision_tut_floats_fp_eg">
 <div class="titlepage"><div><div><h4 class="title">
@@ -49,7 +49,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="float128.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../floats.html" title="Floating Point Numbers">
 <link rel="prev" href="gmp_float.html" title="gmp_float">
-<link rel="next" href="fp_eg.html" title="Examples">
+<link rel="next" href="float128.html" title="float128">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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>
 </div>
 <div class="section boost_multiprecision_tut_floats_mpfr_float">
 <div class="titlepage"><div><div><h4 class="title">
@@ -275,7 +275,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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="fp_eg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.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>
 </div>
 </body>
 </html>

Modified: trunk/libs/multiprecision/doc/html/index.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/index.html (original)
+++ trunk/libs/multiprecision/doc/html/index.html 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -58,6 +58,7 @@
 <dt><span class="section">cpp_dec_float</span></dt>
 <dt><span class="section">gmp_float</span></dt>
 <dt><span class="section">mpfr_float</span></dt>
+<dt><span class="section">float128</span></dt>
 <dt><span class="section">Examples</span></dt>
 <dd><dl>
 <dt><span class="section"><a href="boost_multiprecision/tut/floats/fp_eg/aos.html">Area of
@@ -145,7 +146,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 31, 2013 at 16:21:20 GMT</small></p></td>
+<td align="left"><p><small>Last revised: April 22, 2013 at 17:47:54 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/multiprecision/doc/multiprecision.qbk
==============================================================================
--- trunk/libs/multiprecision/doc/multiprecision.qbk (original)
+++ trunk/libs/multiprecision/doc/multiprecision.qbk 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -22,6 +22,7 @@
 [import ../example/gmp_snips.cpp]
 [import ../example/mpfr_snips.cpp]
 [import ../example/mpfi_snips.cpp]
+[import ../example/float128_snips.cpp]
 [import ../example/cpp_dec_float_snips.cpp]
 [import ../example/tommath_snips.cpp]
 [import ../example/cpp_int_snips.cpp]
@@ -38,6 +39,7 @@
 [template mpreal[] [@http://www.holoborodko.com/pavel/mpfr/ mpreal]]
 [template mpir[] [@http://mpir.org/ MPIR]]
 [template tommath[] [@http://libtom.org/?page=features&newsitems=5&whatfile=ltm libtommath]]
+[template quadmath[] [@http://gcc.gnu.org/onlinedocs/libquadmath/ libquadmath]]
 
 [template super[x]'''<superscript>'''[x]'''</superscript>''']
 [template sub[x]'''<subscript>'''[x]'''</subscript>''']
@@ -634,6 +636,7 @@
 [[`cpp_dec_float<N>`][boost/multiprecision/cpp_dec_float.hpp][10][None][Header only, all C++ implementation. Boost licence.][Approximately 2x slower than the [mpfr] or [gmp] libraries.]]
 [[`mpf_float<N>`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]]
 [[`mpfr_float<N>`][boost/multiprecision/mpfr.hpp][2][[gmp] and [mpfr]][Very fast and efficient back-end, with its own standard library implementation.][Dependency on GNU licensed [gmp] and [mpfr] libraries.]]
+[[`float128`][boost/multiprecision/float128.hpp][2][Either [quadmath] or the Intel C++ Math library.][Very fast and efficient back-end for 128-bit floating point values (113-bit mantissa, equivalent to FORTRAN's QUAD real)][Depends on the compiler being either recent GCC or Intel C++ versions.]]
 ]
 
 [section:cpp_dec_float cpp_dec_float]
@@ -842,6 +845,50 @@
 
 [endsect]
 
+[section:float128 float128]
+
+`#include <boost/multiprecision/float128.hpp>`
+
+ namespace boost{ namespace multiprecision{
+
+ class float128_backend;
+
+ typedef number<float128_backend, et_off> float128;
+
+ }} // namespaces
+
+The `float128` number type is a very thin wrapper around GCC's `__float128` or Intel's `_Quad` data types
+and provides an real-number type that is a drop-in replacement for the native C++ floating-point types, but with
+a 113 bit mantissa, and compatible with FORTRAN's 128-bit QUAD real.
+
+All the usual standard library and `numeric_limits` support are available, performance should be equivalent
+to the underlying native types: for example the LINPACK benchmarks for GCC's `__float128` and
+`boost::multiprecision::float128` both achieved 5.6 MFLOPS[footnote On 64-bit Ubuntu 11.10, GCC-4.8.0, Intel Core 2 Duo T5800.].
+
+As well as the usual conversions from arithmetic and string types, instances of `float128` are
+copy constructible and assignable from GCC's `__float128` and Intel's `_Quad` data types.
+
+It's also possible to access the underlying `__float128` or `_Quad` type via the `data()` member
+function of `float128_backend`.
+
+Things you should know when using this type:
+
+* Default constructed `float128`s have the value zero.
+* This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware.
+* 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: this is a current limitation of our code. Round tripping
+when using GCC is possible.
+* Conversion from a string results in a `std::runtime_error` being thrown if the string can not be interpreted
+as a valid floating point number.
+* Division by zero results in an infinity being produced.
+* Type `float128` can be used as a literal type (constexpr support).
+
+[h5 float128 example:]
+
+[float128_eg]
+
+[endsect]
+
 [section:fp_eg Examples]
 
 [import ../example/floating_point_examples.cpp]

Added: trunk/libs/multiprecision/example/float128_snips.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/example/float128_snips.cpp 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -0,0 +1,49 @@
+///////////////////////////////////////////////////////////////
+// Copyright 2013 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+
+#include <boost/multiprecision/float128.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <iostream>
+
+void t1()
+{
+ //[float128_eg
+ //=#include <boost/multiprecision/float128.hpp>
+
+ using namespace boost::multiprecision;
+
+ // Operations at 128-bit precision and full numeric_limits support:
+ float128 b = 2;
+ // There are 113-bits of precision:
+ std::cout << std::numeric_limits<float128>::digits << std::endl;
+ // Or 34 decimal places:
+ std::cout << std::numeric_limits<float128>::digits10 << std::endl;
+ // We can use any C++ std lib function, lets print all the digits as well:
+ std::cout << std::setprecision(std::numeric_limits<float128>::max_digits10)
+ << log(b) << std::endl; // print log(2) = 0.693147180559945309417232121458176575
+ // We can also use any function from Boost.Math:
+ std::cout << boost::math::tgamma(b) << std::endl;
+ // And since we have an extended exponent range we can generate some really large
+ // numbers here (4.02387260077093773543702433923004111e+2564):
+ std::cout << boost::math::tgamma(float128(1000)) << std::endl;
+ //
+ // We can declare constants using GCC or Intel's native types, and the Q suffix,
+ // these can be declared constexpr if required:
+ /*<-*/
+#ifndef BOOST_NO_CONSTEXPR
+ /*->*/
+ constexpr float128 pi = 3.1415926535897932384626433832795028841971693993751058Q;
+ /*<-*/
+#endif
+ /*->*/
+ //]
+}
+
+int main()
+{
+ t1();
+ return 0;
+}
+

Modified: trunk/libs/multiprecision/test/Jamfile.v2
==============================================================================
--- trunk/libs/multiprecision/test/Jamfile.v2 (original)
+++ trunk/libs/multiprecision/test/Jamfile.v2 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -324,7 +324,7 @@
         : test_move_cpp_int ;
 
 run test_test.cpp ;
-compile test_constexpr.cpp ;
+compile test_constexpr.cpp : [ check-target-builds ../config//has_float128 : <define>HAVE_FLOAT128 : ] [ check-target-builds ../config//has_intel_quad : <define>HAVE_FLOAT128 : ] ;
 
 run test_float_io.cpp
         : # command line
@@ -499,6 +499,19 @@
         : # requirements
          [ check-target-builds ../config//has_mpfi : : <build>no ] ;
 
+run ../example/float128_snips.cpp quadmath
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_float128 : : <build>no ] ;
+
+run ../example/float128_snips.cpp
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ]
+ : float128_snips_intel_quad ;
+
 run ../example/logged_adaptor.cpp mpfi mpfr gmp
         : # command line
         : # input files

Modified: trunk/libs/multiprecision/test/test_constexpr.cpp
==============================================================================
--- trunk/libs/multiprecision/test/test_constexpr.cpp (original)
+++ trunk/libs/multiprecision/test/test_constexpr.cpp 2013-04-22 13:50:55 EDT (Mon, 22 Apr 2013)
@@ -4,6 +4,9 @@
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
 #include <boost/multiprecision/cpp_int.hpp>
+#if defined(HAVE_FLOAT128)
+#include <boost/multiprecision/float128.hpp>
+#endif
 
 #ifndef BOOST_NO_CXX11_CONSTEXPR
 
@@ -51,4 +54,8 @@
 template void test3<number<cpp_int_backend<2048, 2048, unsigned_magnitude, unchecked, void>, et_off> >();
 template void test2<number<cpp_int_backend<2048, 2048, signed_magnitude, unchecked, void>, et_off> >();
 
+#if defined(HAVE_FLOAT128)
+template void test1<float128>();
+#endif
+
 #endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk