Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r82499 - in trunk: boost/multiprecision boost/multiprecision/concepts boost/multiprecision/detail 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/map libs/multiprecision/doc/html/boost_multiprecision/perf libs/multiprecision/doc/html/boost_multiprecision/ref libs/multiprecision/doc/html/boost_multiprecision/tut libs/multiprecision/doc/html/boost_multiprecision/tut/floats libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg libs/multiprecision/doc/html/boost_multiprecision/tut/interval libs/multiprecision/doc/html/boost_multiprecision/tut/ints libs/multiprecision/doc/html/boost_multiprecision/tut/misc libs/multiprecision/doc/html/boost_multiprecision/tut/rational libs/multiprecision/example libs/multiprecision/test libs/multiprecision/test/concepts
From: john_at_[hidden]
Date: 2013-01-15 04:25:16


Author: johnmaddock
Date: 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
New Revision: 82499
URL: http://svn.boost.org/trac/boost/changeset/82499

Log:
Add logged adapter.
Add docs for logged_adapter and mpfi_float.
Added:
   trunk/boost/multiprecision/logged_adapter.hpp (contents, props changed)
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html (contents, props changed)
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html (contents, props changed)
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html (contents, props changed)
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adapter.html (contents, props changed)
   trunk/libs/multiprecision/example/logged_adapter.cpp (contents, props changed)
   trunk/libs/multiprecision/example/mpfi_snips.cpp (contents, props changed)
   trunk/libs/multiprecision/test/test_arithmetic_logged_1.cpp (contents, props changed)
   trunk/libs/multiprecision/test/test_arithmetic_logged_2.cpp (contents, props changed)
Text files modified:
   trunk/boost/multiprecision/concepts/mp_number_archetypes.hpp | 2
   trunk/boost/multiprecision/cpp_int.hpp | 2
   trunk/boost/multiprecision/detail/integer_ops.hpp | 24 ++--
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html | 69 +++++++++--
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html | 34 +++--
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html | 29 +++-
   trunk/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html | 139 ++++++++++++++++++----
   trunk/libs/multiprecision/doc/html/boost_multiprecision/map.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html | 30 ++++
   trunk/libs/multiprecision/doc/html/boost_multiprecision/perf.html | 6
   trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html | 8
   trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html | 10
   trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html | 8
   trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut.html | 4
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html | 6
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html | 6
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html | 6
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html | 2
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html | 6
   trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html | 6
   trunk/libs/multiprecision/doc/html/index.html | 12 +
   trunk/libs/multiprecision/doc/multiprecision.qbk | 235 +++++++++++++++++++++++++++++++++++++--
   trunk/libs/multiprecision/test/Jamfile.v2 | 23 +++
   trunk/libs/multiprecision/test/concepts/number_concept_check.cpp | 13 +
   trunk/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp | 13 +
   trunk/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp | 13 +
   trunk/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp | 13 +
   trunk/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp | 13 +
   trunk/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp | 13 +
   37 files changed, 612 insertions(+), 151 deletions(-)

Modified: trunk/boost/multiprecision/concepts/mp_number_archetypes.hpp
==============================================================================
--- trunk/boost/multiprecision/concepts/mp_number_archetypes.hpp (original)
+++ trunk/boost/multiprecision/concepts/mp_number_archetypes.hpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////
-// Copyright 2011 John Maddock. Distributed under the Boost
+// Copyright 2012 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_
 

Modified: trunk/boost/multiprecision/cpp_int.hpp
==============================================================================
--- trunk/boost/multiprecision/cpp_int.hpp (original)
+++ trunk/boost/multiprecision/cpp_int.hpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -1731,7 +1731,7 @@
 
 } // namespace backends
 
-namespace detail{
+namespace default_ops{
 
 template <class Backend>
 struct double_precision_type;

Modified: trunk/boost/multiprecision/detail/integer_ops.hpp
==============================================================================
--- trunk/boost/multiprecision/detail/integer_ops.hpp (original)
+++ trunk/boost/multiprecision/detail/integer_ops.hpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -239,7 +239,7 @@
    return x;
 }
 
-namespace detail{
+namespace default_ops{
 
 //
 // Within powm, we need a type with twice as many digits as the argument type, define
@@ -264,7 +264,7 @@
    using default_ops::eval_right_shift;
 
    typedef typename double_precision_type<Backend>::type double_type;
- typedef typename canonical<unsigned char, double_type>::type ui_type;
+ typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
    
    double_type x, y(a), b(p), t;
    x = ui_type(1u);
@@ -288,9 +288,9 @@
 void eval_powm(Backend& result, const Backend& a, const Backend& p, Integer c)
 {
    typedef typename double_precision_type<Backend>::type double_type;
- typedef typename canonical<unsigned char, double_type>::type ui_type;
- typedef typename canonical<Integer, double_type>::type i1_type;
- typedef typename canonical<Integer, Backend>::type i2_type;
+ typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
+ typedef typename boost::multiprecision::detail::canonical<Integer, double_type>::type i1_type;
+ typedef typename boost::multiprecision::detail::canonical<Integer, Backend>::type i2_type;
 
    using default_ops::eval_bit_test;
    using default_ops::eval_get_sign;
@@ -325,7 +325,7 @@
 typename enable_if<is_unsigned<Integer> >::type eval_powm(Backend& result, const Backend& a, Integer b, const Backend& c)
 {
    typedef typename double_precision_type<Backend>::type double_type;
- typedef typename canonical<unsigned char, double_type>::type ui_type;
+ typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
 
    using default_ops::eval_bit_test;
    using default_ops::eval_get_sign;
@@ -365,9 +365,9 @@
 typename enable_if<is_unsigned<Integer1> >::type eval_powm(Backend& result, const Backend& a, Integer1 b, Integer2 c)
 {
    typedef typename double_precision_type<Backend>::type double_type;
- typedef typename canonical<unsigned char, double_type>::type ui_type;
- typedef typename canonical<Integer1, double_type>::type i1_type;
- typedef typename canonical<Integer2, Backend>::type i2_type;
+ typedef typename boost::multiprecision::detail::canonical<unsigned char, double_type>::type ui_type;
+ typedef typename boost::multiprecision::detail::canonical<Integer1, double_type>::type i1_type;
+ typedef typename boost::multiprecision::detail::canonical<Integer2, Backend>::type i2_type;
 
    using default_ops::eval_bit_test;
    using default_ops::eval_get_sign;
@@ -433,11 +433,11 @@
          is_integral<V>
>
>,
- detail::expression<detail::function, detail::powm_func, T, U, V> >::type
+ detail::expression<detail::function, default_ops::powm_func, T, U, V> >::type
    powm(const T& b, const U& p, const V& mod)
 {
- return detail::expression<detail::function, detail::powm_func, T, U, V>(
- detail::powm_func(), b, p, mod);
+ return detail::expression<detail::function, default_ops::powm_func, T, U, V>(
+ default_ops::powm_func(), b, p, mod);
 }
 
 }} //namespaces

Added: trunk/boost/multiprecision/logged_adapter.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/multiprecision/logged_adapter.hpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,512 @@
+///////////////////////////////////////////////////////////////
+// Copyright 2012 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_
+
+#ifndef BOOST_MATH_LOGGED_ADAPTER_HPP
+#define BOOST_MATH_LOGGED_ADAPTER_HPP
+
+#include <boost/multiprecision/number.hpp>
+
+namespace boost{
+namespace multiprecision{
+
+template <class Backend>
+inline void log_postfix_event(const Backend&, const char* /*event_description*/)
+{
+}
+template <class Backend, class T>
+inline void log_postfix_event(const Backend&, const T&, const char* /*event_description*/)
+{
+}
+template <class Backend>
+inline void log_prefix_event(const Backend&, const char* /*event_description*/)
+{
+}
+template <class Backend, class T>
+inline void log_prefix_event(const Backend&, const T&, const char* /*event_description*/)
+{
+}
+template <class Backend, class T, class U>
+inline void log_prefix_event(const Backend&, const T&, const U&, const char* /*event_description*/)
+{
+}
+template <class Backend, class T, class U, class V>
+inline void log_prefix_event(const Backend&, const T&, const U&, const V&, const char* /*event_description*/)
+{
+}
+
+namespace backends{
+
+template <class Backend, int cat>
+struct extract_exponent_type
+{
+ typedef int type;
+};
+template <class Backend>
+struct extract_exponent_type<Backend, number_kind_floating_point>
+{
+ typedef typename Backend::exponent_type type;
+};
+
+template <class Backend>
+struct logged_adapter
+{
+ typedef typename Backend::signed_types signed_types;
+ typedef typename Backend::unsigned_types unsigned_types;
+ typedef typename Backend::float_types float_types;
+ typedef typename extract_exponent_type<
+ Backend, number_category<Backend>::value>::type exponent_type;
+
+private:
+
+ Backend m_value;
+public:
+ logged_adapter()
+ {
+ log_postfix_event(m_value, "Default construct");
+ }
+ logged_adapter(const logged_adapter& o)
+ {
+ log_prefix_event(m_value, o.value(), "Copy construct");
+ m_value = o.m_value;
+ log_postfix_event(m_value, "Copy construct");
+ }
+ logged_adapter& operator = (const logged_adapter& o)
+ {
+ log_prefix_event(m_value, o.value(), "Assignment");
+ m_value = o.m_value;
+ log_postfix_event(m_value, "Copy construct");
+ return *this;
+ }
+ template <class T>
+ logged_adapter(const T& i, const typename enable_if_c<is_convertible<T, Backend>::value>::type* = 0)
+ : m_value(i)
+ {
+ log_postfix_event(m_value, "construct from arithmetic type");
+ }
+ template <class T>
+ typename enable_if_c<is_arithmetic<T>::value || is_convertible<T, Backend>::value, logged_adapter&>::type operator = (const T& i)
+ {
+ log_prefix_event(m_value, i, "Assignment from arithmetic type");
+ m_value = i;
+ log_postfix_event(m_value, "Assignment from arithmetic type");
+ return *this;
+ }
+ logged_adapter& operator = (const char* s)
+ {
+ log_prefix_event(m_value, s, "Assignment from string type");
+ m_value = s;
+ log_postfix_event(m_value, "Assignment from string type");
+ return *this;
+ }
+ void swap(logged_adapter& o)
+ {
+ log_prefix_event(m_value, o.value(), "swap");
+ std::swap(m_value, o.value());
+ log_postfix_event(m_value, "swap");
+ }
+ std::string str(std::streamsize digits, std::ios_base::fmtflags f)const
+ {
+ log_prefix_event(m_value, "Conversion to string");
+ std::string s = m_value.str(digits, f);
+ log_postfix_event(m_value, s, "Conversion to string");
+ return s;
+ }
+ void negate()
+ {
+ log_prefix_event(m_value, "negate");
+ m_value.negate();
+ log_postfix_event(m_value, "negate");
+ }
+ int compare(const logged_adapter& o)const
+ {
+ log_prefix_event(m_value, o.value(), "compare");
+ int r = m_value.compare(o.value());
+ log_postfix_event(m_value, r, "compare");
+ return r;
+ }
+ template <class T>
+ int compare(const T& i)const
+ {
+ log_prefix_event(m_value, i, "compare");
+ int r = m_value.compare(i);
+ log_postfix_event(m_value, r, "compare");
+ return r;
+ }
+ Backend& value()
+ {
+ return m_value;
+ }
+ const Backend& value()const
+ {
+ return m_value;
+ }
+};
+
+template <class T>
+inline const T& unwrap_logged_type(const T& a) { return a; }
+template <class Backend>
+inline const Backend& unwrap_logged_type(const logged_adapter<Backend>& a) { return a.value(); }
+
+#define NON_MEMBER_OP1(name, str) \
+ template <class Backend>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), str);\
+ BOOST_JOIN(eval_, name)(result.value());\
+ log_postfix_event(result.value(), str);\
+ }
+
+#define NON_MEMBER_OP2(name, str) \
+ template <class Backend, class T>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const T& a)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const logged_adapter<Backend>& a)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a));\
+ log_postfix_event(result.value(), str);\
+ }
+
+#define NON_MEMBER_OP3(name, str) \
+ template <class Backend, class T, class U>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const T& a, const U& b)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend, class T>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const logged_adapter<Backend>& a, const T& b)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend, class T>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const T& a, const logged_adapter<Backend>& b)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const logged_adapter<Backend>& a, const logged_adapter<Backend>& b)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b));\
+ log_postfix_event(result.value(), str);\
+ }
+
+#define NON_MEMBER_OP4(name, str) \
+ template <class Backend, class T, class U, class V>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const T& a, const U& b, const V& c)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend, class T>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const logged_adapter<Backend>& a, const logged_adapter<Backend>& b, const T& c)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend, class T>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const logged_adapter<Backend>& a, const T& b, const logged_adapter<Backend>& c)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend, class T>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const T& a, const logged_adapter<Backend>& b, const logged_adapter<Backend>& c)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const logged_adapter<Backend>& a, const logged_adapter<Backend>& b, const logged_adapter<Backend>& c)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c));\
+ log_postfix_event(result.value(), str);\
+ }\
+ template <class Backend, class T, class U>\
+ inline void BOOST_JOIN(eval_, name)(logged_adapter<Backend>& result, const logged_adapter<Backend>& a, const T& b, const U& c)\
+ {\
+ using default_ops::BOOST_JOIN(eval_, name);\
+ log_prefix_event(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c), str);\
+ BOOST_JOIN(eval_, name)(result.value(), unwrap_logged_type(a), unwrap_logged_type(b), unwrap_logged_type(c));\
+ log_postfix_event(result.value(), str);\
+ }\
+
+NON_MEMBER_OP2(add, "+=");
+NON_MEMBER_OP2(subtract, "-=");
+NON_MEMBER_OP2(multiply, "*=");
+NON_MEMBER_OP2(divide, "/=");
+
+template <class Backend, class R>
+inline void eval_convert_to(R* result, const logged_adapter<Backend>& val)
+{
+ using default_ops::eval_convert_to;
+ log_prefix_event(val.value(), "convert_to");
+ eval_convert_to(result, val.value());
+ log_postfix_event(val.value(), *result, "convert_to");
+}
+
+template <class Backend, class Exp>
+inline void eval_frexp(logged_adapter<Backend>& result, const logged_adapter<Backend>& arg, Exp* exp)
+{
+ log_prefix_event(arg.value(), "frexp");
+ eval_frexp(result.value(), arg.value(), exp);
+ log_postfix_event(result.value(), *exp, "frexp");
+}
+
+template <class Backend, class Exp>
+inline void eval_ldexp(logged_adapter<Backend>& result, const logged_adapter<Backend>& arg, Exp exp)
+{
+ log_prefix_event(arg.value(), "ldexp");
+ eval_ldexp(result.value(), arg.value(), exp);
+ log_postfix_event(result.value(), exp, "ldexp");
+}
+
+NON_MEMBER_OP2(floor, "floor");
+NON_MEMBER_OP2(ceil, "ceil");
+NON_MEMBER_OP2(sqrt, "sqrt");
+
+template <class Backend>
+inline int eval_fpclassify(const logged_adapter<Backend>& arg)
+{
+ log_prefix_event(arg.value(), "fpclassify");
+ int r = eval_fpclassify(arg.value());
+ log_postfix_event(arg.value(), r, "fpclassify");
+ return r;
+}
+
+/*********************************************************************
+*
+* Optional arithmetic operations come next:
+*
+*********************************************************************/
+
+NON_MEMBER_OP3(add, "+");
+NON_MEMBER_OP3(subtract, "-");
+NON_MEMBER_OP3(multiply, "*");
+NON_MEMBER_OP3(divide, "/");
+NON_MEMBER_OP3(multiply_add, "fused-multiply-add");
+NON_MEMBER_OP3(multiply_subtract, "fused-multiply-subtract");
+NON_MEMBER_OP4(multiply_add, "fused-multiply-add");
+NON_MEMBER_OP4(multiply_subtract, "fused-multiply-subtract");
+
+NON_MEMBER_OP1(increment, "increment");
+NON_MEMBER_OP1(decrement, "decrement");
+
+/*********************************************************************
+*
+* Optional integer operations come next:
+*
+*********************************************************************/
+
+NON_MEMBER_OP2(modulus, "%=");
+NON_MEMBER_OP3(modulus, "%");
+NON_MEMBER_OP2(bitwise_or, "|=");
+NON_MEMBER_OP3(bitwise_or, "|");
+NON_MEMBER_OP2(bitwise_and, "&=");
+NON_MEMBER_OP3(bitwise_and, "&");
+NON_MEMBER_OP2(bitwise_xor, "^=");
+NON_MEMBER_OP3(bitwise_xor, "^");
+NON_MEMBER_OP4(qr, "quotient-and-remainder");
+NON_MEMBER_OP2(complement, "~");
+
+template <class Backend>
+inline void eval_left_shift(logged_adapter<Backend>& arg, unsigned a)
+{
+ using default_ops::eval_left_shift;
+ log_prefix_event(arg.value(), a, "<<=");
+ eval_left_shift(arg.value(), a);
+ log_postfix_event(arg.value(), "<<=");
+}
+template <class Backend>
+inline void eval_left_shift(logged_adapter<Backend>& arg, const logged_adapter<Backend>& a, unsigned b)
+{
+ using default_ops::eval_left_shift;
+ log_prefix_event(arg.value(), a, b, "<<");
+ eval_left_shift(arg.value(), a, b);
+ log_postfix_event(arg.value(), "<<");
+}
+template <class Backend>
+inline void eval_right_shift(logged_adapter<Backend>& arg, unsigned a)
+{
+ using default_ops::eval_right_shift;
+ log_prefix_event(arg.value(), a, ">>=");
+ eval_right_shift(arg.value(), a);
+ log_postfix_event(arg.value(), ">>=");
+}
+template <class Backend>
+inline void eval_right_shift(logged_adapter<Backend>& arg, const logged_adapter<Backend>& a, unsigned b)
+{
+ using default_ops::eval_right_shift;
+ log_prefix_event(arg.value(), a, b, ">>");
+ eval_right_shift(arg.value(), a, b);
+ log_postfix_event(arg.value(), ">>");
+}
+
+template <class Backend, class T>
+inline unsigned eval_integer_modulus(const logged_adapter<Backend>& arg, const T& a)
+{
+ using default_ops::eval_integer_modulus;
+ log_prefix_event(arg.value(), a, "integer-modulus");
+ unsigned r = eval_integer_modulus(arg.value(), a);
+ log_postfix_event(arg.value(), r, "integer-modulus");
+ return r;
+}
+
+template <class Backend>
+inline unsigned eval_lsb(const logged_adapter<Backend>& arg)
+{
+ using default_ops::eval_lsb;
+ log_prefix_event(arg.value(), "least-significant-bit");
+ unsigned r = eval_lsb(arg.value());
+ log_postfix_event(arg.value(), r, "least-significant-bit");
+ return r;
+}
+
+template <class Backend>
+inline bool eval_bit_test(const logged_adapter<Backend>& arg, unsigned a)
+{
+ using default_ops::eval_bit_test;
+ log_prefix_event(arg.value(), a, "bit-test");
+ bool r = eval_bit_test(arg.value(), a);
+ log_postfix_event(arg.value(), r, "bit-test");
+ return r;
+}
+
+template <class Backend>
+inline void eval_bit_set(const logged_adapter<Backend>& arg, unsigned a)
+{
+ using default_ops::eval_bit_set;
+ log_prefix_event(arg.value(), a, "bit-set");
+ eval_bit_set(arg.value(), a);
+ log_postfix_event(arg.value(), r, "bit-set");
+}
+template <class Backend>
+inline void eval_bit_unset(const logged_adapter<Backend>& arg, unsigned a)
+{
+ using default_ops::eval_bit_unset;
+ log_prefix_event(arg.value(), a, "bit-unset");
+ eval_bit_unset(arg.value(), a);
+ log_postfix_event(arg.value(), r, "bit-unset");
+}
+template <class Backend>
+inline void eval_bit_flip(const logged_adapter<Backend>& arg, unsigned a)
+{
+ using default_ops::eval_bit_flip;
+ log_prefix_event(arg.value(), a, "bit-flip");
+ eval_bit_flip(arg.value(), a);
+ log_postfix_event(arg.value(), r, "bit-flip");
+}
+
+NON_MEMBER_OP3(gcd, "gcd");
+NON_MEMBER_OP3(lcm, "lcm");
+NON_MEMBER_OP4(powm, "powm");
+
+/*********************************************************************
+*
+* abs/fabs:
+*
+*********************************************************************/
+
+NON_MEMBER_OP2(abs, "abs");
+NON_MEMBER_OP2(fabs, "fabs");
+
+/*********************************************************************
+*
+* Floating point functions:
+*
+*********************************************************************/
+
+NON_MEMBER_OP2(trunc, "trunc");
+NON_MEMBER_OP2(round, "round");
+NON_MEMBER_OP2(exp, "exp");
+NON_MEMBER_OP2(log, "log");
+NON_MEMBER_OP2(log10, "log10");
+NON_MEMBER_OP2(sin, "sin");
+NON_MEMBER_OP2(cos, "cos");
+NON_MEMBER_OP2(tan, "tan");
+NON_MEMBER_OP2(asin, "asin");
+NON_MEMBER_OP2(acos, "acos");
+NON_MEMBER_OP2(atan, "atan");
+NON_MEMBER_OP2(sinh, "sinh");
+NON_MEMBER_OP2(cosh, "cosh");
+NON_MEMBER_OP2(tanh, "tanh");
+NON_MEMBER_OP3(fmod, "fmod");
+NON_MEMBER_OP3(pow, "pow");
+NON_MEMBER_OP3(atan2, "atan2");
+
+} // namespace backends
+
+using backends::logged_adapter;
+
+template<class Backend>
+struct number_category<backends::logged_adapter<Backend> > : public number_category<Backend> {};
+
+}} // namespaces
+
+namespace std{
+
+template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates>
+class numeric_limits<boost::multiprecision::number<boost::multiprecision::backends::logged_adapter<Backend>, ExpressionTemplates> >
+ : public std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> >
+{
+ typedef std::numeric_limits<boost::multiprecision::number<Backend, ExpressionTemplates> > base_type;
+ typedef boost::multiprecision::number<boost::multiprecision::backends::logged_adapter<Backend>, ExpressionTemplates> number_type;
+public:
+ static number_type (min)() BOOST_NOEXCEPT { return (base_type::min)(); }
+ static number_type (max)() BOOST_NOEXCEPT { return (base_type::max)(); }
+ static number_type lowest() BOOST_NOEXCEPT { return -(max)(); }
+ static number_type epsilon() BOOST_NOEXCEPT { return base_type::epsilon(); }
+ static number_type round_error() BOOST_NOEXCEPT { return epsilon() / 2; }
+ static number_type infinity() BOOST_NOEXCEPT { return base_type::infinity(); }
+ static number_type quiet_NaN() BOOST_NOEXCEPT { return base_type::quiet_NaN(); }
+ static number_type signaling_NaN() BOOST_NOEXCEPT { return base_type::signaling_NaN(); }
+ static number_type denorm_min() BOOST_NOEXCEPT { return base_type::denorm_min(); }
+};
+
+} // namespace std
+
+namespace boost{ namespace math{
+
+namespace policies{
+
+template <class Backend, boost::multiprecision::expression_template_option ExpressionTemplates, class Policy>
+struct precision< boost::multiprecision::number<boost::multiprecision::logged_adapter<Backend>, ExpressionTemplates>, Policy>
+ : public precision<boost::multiprecision::number<Backend, ExpressionTemplates>, Policy>
+{};
+
+} // namespace policies
+
+}} // namespaces boost::math
+
+
+#endif

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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -22,10 +22,10 @@
 <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 id1011701">
+<div class="section id977761">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id1011701"></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_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">Z</a></p>
+<a name="id977761"></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>
 <a name="idx_id_0"></a><span class="term">A</span>
@@ -96,6 +96,7 @@
 <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>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/mpfr_float.html" title="mpfr_float"><span class="index-entry-level-1">mpfr_float</span></a></p></li>
 </ul></div>
 </li>
@@ -113,6 +114,10 @@
 </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">empty</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">eval_acos</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/backendconc.html#boost_multiprecision.ref.backendconc.optional_requirements_on_the_backend_type" title="Table&#160;1.5.&#160;Optional Requirements on the Backend Type"><span class="index-entry-level-1">Optional Requirements on the Backend Type</span></a></p></li></ul></div>
 </li>
@@ -351,16 +356,10 @@
 <dt>
 <a name="idx_id_5"></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">fabs</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>
-<li class="listitem" style="list-style-type: none">
+<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">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>
-</ul></div></dd>
+</li></ul></div></dd>
 <dt>
 <a name="idx_id_7"></a><span class="term">I</span>
 </dt>
@@ -370,6 +369,10 @@
 <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/primetest.html" title="Primality Testing"><span class="index-entry-level-1">Primality Testing</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">in</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">integer_modulus</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>
@@ -411,6 +414,14 @@
 <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>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log_postfix_event</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/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-1">logged_adapter</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log_prefix_event</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/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-1">logged_adapter</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">lround</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>
@@ -443,6 +454,13 @@
 </li>
 </ul></div></dd>
 <dt>
+<a name="idx_id_11"></a><span class="term">O</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">overlap</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li></ul></div></dd>
+<dt>
 <a name="idx_id_12"></a><span class="term">P</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
@@ -458,6 +476,10 @@
 <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>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">proper_subset</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
 </ul></div></dd>
 <dt>
 <a name="idx_id_13"></a><span class="term">R</span>
@@ -477,10 +499,18 @@
 </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">singleton</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">str</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>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">subset</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">subtract</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/mixed.html" title="Mixed Precision Arithmetic"><span class="index-entry-level-1">Mixed Precision Arithmetic</span></a></p></li>
@@ -500,9 +530,17 @@
 <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_17"></a><span class="term">Z</span>
+<a name="idx_id_17"></a><span class="term">V</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">value</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></ul></div></dd>
+<dt>
+<a name="idx_id_18"></a><span class="term">Z</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">zero</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/gmp_float.html" title="gmp_float"><span class="index-entry-level-1">gmp_float</span></a></p></li>
@@ -511,7 +549,12 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/rational/tommath_rational.html" title="tommath_rational"><span class="index-entry-level-1">tommath_rational</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/ints/tom_int.html" title="tom_int"><span class="index-entry-level-1">tom_int</span></a></p></li>
 </ul></div>
-</li></ul></div></dd>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">zero_in</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
 </dl></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -22,13 +22,13 @@
 <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 id1017270">
+<div class="section id980139">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id1017270"></a>Class Index</h3></div></div></div>
-<p><a class="link" href="s02.html#idx_id_20">C</a> <a class="link" href="s02.html#idx_id_22">E</a> <a class="link" href="s02.html#idx_id_24">G</a> <a class="link" href="s02.html#idx_id_25">I</a> <a class="link" href="s02.html#idx_id_27">M</a> <a class="link" href="s02.html#idx_id_28">N</a> <a class="link" href="s02.html#idx_id_33">T</a></p>
+<a name="id980139"></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_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>
 <div class="variablelist"><dl class="variablelist">
 <dt>
-<a name="idx_id_20"></a><span class="term">C</span>
+<a name="idx_id_21"></a><span class="term">C</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -42,14 +42,14 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_22"></a><span class="term">E</span>
+<a name="idx_id_23"></a><span class="term">E</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">expression_template_default</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></ul></div></dd>
 <dt>
-<a name="idx_id_24"></a><span class="term">G</span>
+<a name="idx_id_25"></a><span class="term">G</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/gmp_float.html" title="gmp_float"><span class="index-entry-level-0">gmp_float</span></a></p></li>
@@ -57,7 +57,7 @@
 <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-0">gmp_rational</span></a></p></li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_25"></a><span class="term">I</span>
+<a name="idx_id_26"></a><span class="term">I</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -90,17 +90,27 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_27"></a><span class="term">M</span>
+<a name="idx_id_27"></a><span class="term">L</span>
 </dt>
-<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<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/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-0">logged_adapter</span></a></p></li></ul></div></dd>
+<dt>
+<a name="idx_id_28"></a><span class="term">M</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">mpfi_float_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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mpfr_float_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/mpfr_float.html" title="mpfr_float"><span class="index-entry-level-1">mpfr_float</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../ref/mpfr_ref.html" title="mpfr_float_backend"><span class="index-entry-level-1">mpfr_float_backend</span></a></strong></span></p></li>
 </ul></div>
-</li></ul></div></dd>
+</li>
+</ul></div></dd>
 <dt>
-<a name="idx_id_28"></a><span class="term">N</span>
+<a name="idx_id_29"></a><span class="term">N</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="../ref/number.html" title="number"><span class="index-entry-level-0">number</span></a></p></li>
@@ -110,7 +120,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_33"></a><span class="term">T</span>
+<a name="idx_id_34"></a><span class="term">T</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">tommath_int</span></p>

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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -22,13 +22,13 @@
 <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 id1017687">
+<div class="section id980599">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id1017687"></a>Typedef Index</h3></div></div></div>
-<p><a class="link" href="s03.html#idx_id_38">C</a> <a class="link" href="s03.html#idx_id_43">I</a> <a class="link" href="s03.html#idx_id_44">L</a> <a class="link" href="s03.html#idx_id_45">M</a> <a class="link" href="s03.html#idx_id_50">S</a> <a class="link" href="s03.html#idx_id_51">T</a> <a class="link" href="s03.html#idx_id_52">U</a></p>
+<a name="id980599"></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>
 <div class="variablelist"><dl class="variablelist">
 <dt>
-<a name="idx_id_38"></a><span class="term">C</span>
+<a name="idx_id_40"></a><span class="term">C</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -100,7 +100,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_43"></a><span class="term">I</span>
+<a name="idx_id_45"></a><span class="term">I</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -125,16 +125,25 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_44"></a><span class="term">L</span>
+<a name="idx_id_46"></a><span class="term">L</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">limb_type</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/ints/cpp_int.html" title="cpp_int"><span class="index-entry-level-1">cpp_int</span></a></p></li></ul></div>
 </li></ul></div></dd>
 <dt>
-<a name="idx_id_45"></a><span class="term">M</span>
+<a name="idx_id_47"></a><span class="term">M</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-0">mpfi_float</span></a></p></li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mpfi_float_1000</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mpfi_float_50</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mpfr_float</span></p>
 <div class="index"><ul class="index" style="list-style-type: none; ">
@@ -207,7 +216,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_50"></a><span class="term">S</span>
+<a name="idx_id_52"></a><span class="term">S</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -220,7 +229,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_51"></a><span class="term">T</span>
+<a name="idx_id_53"></a><span class="term">T</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/rational/tommath_rational.html" title="tommath_rational"><span class="index-entry-level-0">tommath_rational</span></a></p></li>
@@ -231,7 +240,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_52"></a><span class="term">U</span>
+<a name="idx_id_54"></a><span class="term">U</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" 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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -21,13 +21,13 @@
 <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 id1018687">
+<div class="section id981646">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="id1018687"></a>Index</h3></div></div></div>
-<p><a class="link" href="s04.html#idx_id_54">A</a> <a class="link" href="s04.html#idx_id_55">B</a> <a class="link" href="s04.html#idx_id_56">C</a> <a class="link" href="s04.html#idx_id_57">D</a> <a class="link" href="s04.html#idx_id_58">E</a> <a class="link" href="s04.html#idx_id_59">F</a> <a class="link" href="s04.html#idx_id_60">G</a> <a class="link" href="s04.html#idx_id_61">I</a> <a class="link" href="s04.html#idx_id_62">L</a> <a class="link" href="s04.html#idx_id_63">M</a> <a class="link" href="s04.html#idx_id_64">N</a> <a class="link" href="s04.html#idx_id_65">O</a> <a class="link" href="s04.html#idx_id_66">P</a> <a class="link" href="s04.html#idx_id_67">R</a> <a class="link" href="s04.html#idx_id_68">S</a> <a class="link" href="s04.html#idx_id_69">T</a> <a class="link" href="s04.html#idx_id_70">U</a> <a class="link" href="s04.html#idx_id_71">Z</a></p>
+<a name="id981646"></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>
-<a name="idx_id_54"></a><span class="term">A</span>
+<a name="idx_id_57"></a><span class="term">A</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -52,7 +52,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_55"></a><span class="term">B</span>
+<a name="idx_id_58"></a><span class="term">B</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -77,7 +77,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_56"></a><span class="term">C</span>
+<a name="idx_id_59"></a><span class="term">C</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -224,7 +224,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_57"></a><span class="term">D</span>
+<a name="idx_id_60"></a><span class="term">D</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -233,6 +233,7 @@
 <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>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/mpfr_float.html" title="mpfr_float"><span class="index-entry-level-1">mpfr_float</span></a></p></li>
 </ul></div>
 </li>
@@ -246,10 +247,14 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_58"></a><span class="term">E</span>
+<a name="idx_id_61"></a><span class="term">E</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">empty</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">eval_acos</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/backendconc.html#boost_multiprecision.ref.backendconc.optional_requirements_on_the_backend_type" title="Table&#160;1.5.&#160;Optional Requirements on the Backend Type"><span class="index-entry-level-1">Optional Requirements on the Backend Type</span></a></p></li></ul></div>
 </li>
@@ -490,14 +495,10 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_59"></a><span class="term">F</span>
+<a name="idx_id_62"></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">fabs</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>
-<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">FAQ</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="../map/faq.html" title="FAQ"><span class="index-entry-level-1">precision</span></a></p></li></ul></div>
 </li>
@@ -507,7 +508,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_60"></a><span class="term">G</span>
+<a name="idx_id_63"></a><span class="term">G</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -543,7 +544,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_61"></a><span class="term">I</span>
+<a name="idx_id_64"></a><span class="term">I</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -551,6 +552,10 @@
 <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/primetest.html" title="Primality Testing"><span class="index-entry-level-1">Primality Testing</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">in</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">int1024_t</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/ints/cpp_int.html" title="cpp_int"><span class="index-entry-level-1">cpp_int</span></a></p></li></ul></div>
 </li>
@@ -642,7 +647,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_62"></a><span class="term">L</span>
+<a name="idx_id_65"></a><span class="term">L</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -658,6 +663,22 @@
 <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>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">logged_adapter</span></p>
+<div class="index"><ul class="index" style="list-style-type: none; ">
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../tut/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-1">logged_adapter</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-1">log_postfix_event</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-1">log_prefix_event</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log_postfix_event</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/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-1">logged_adapter</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">log_prefix_event</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/misc/logged_adapter.html" title="logged_adapter"><span class="index-entry-level-1">logged_adapter</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">lround</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>
@@ -671,7 +692,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_63"></a><span class="term">M</span>
+<a name="idx_id_66"></a><span class="term">M</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -690,6 +711,35 @@
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mpfi_float</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">empty</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">in</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float_1000</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float_50</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float_backend</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">overlap</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">proper_subset</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">singleton</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">subset</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">zero_in</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mpfi_float_1000</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mpfi_float_50</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">mpfi_float_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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mpfr_float</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/mpfr_float.html" title="mpfr_float"><span class="index-entry-level-1">data</span></a></p></li>
@@ -786,7 +836,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_64"></a><span class="term">N</span>
+<a name="idx_id_67"></a><span class="term">N</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -804,7 +854,6 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">default_precision</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">divide_qr</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">expression_template_default</span></a></p></li>
-<li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">fabs</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">fpclassify</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">integer_modulus</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">iround</span></a></p></li>
@@ -831,6 +880,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">subtract</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">swap</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">trunc</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/number.html" title="number"><span class="index-entry-level-1">value</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -839,9 +889,10 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_65"></a><span class="term">O</span>
+<a name="idx_id_68"></a><span class="term">O</span>
 </dt>
-<dd><div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none">
+<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">Optional Requirements on the Backend Type</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/backendconc.html#boost_multiprecision.ref.backendconc.optional_requirements_on_the_backend_type" title="Table&#160;1.5.&#160;Optional Requirements on the Backend Type"><span class="index-entry-level-1">assign_components</span></a></p></li>
@@ -891,9 +942,14 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/backendconc.html#boost_multiprecision.ref.backendconc.optional_requirements_on_the_backend_type" title="Table&#160;1.5.&#160;Optional Requirements on the Backend Type"><span class="index-entry-level-1">eval_tanh</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../ref/backendconc.html#boost_multiprecision.ref.backendconc.optional_requirements_on_the_backend_type" title="Table&#160;1.5.&#160;Optional Requirements on the Backend Type"><span class="index-entry-level-1">eval_trunc</span></a></p></li>
 </ul></div>
-</li></ul></div></dd>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">overlap</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
 <dt>
-<a name="idx_id_66"></a><span class="term">P</span>
+<a name="idx_id_69"></a><span class="term">P</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -920,9 +976,13 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/primetest.html" title="Primality Testing"><span class="index-entry-level-1">miller_rabin_test</span></a></p></li>
 </ul></div>
 </li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">proper_subset</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_67"></a><span class="term">R</span>
+<a name="idx_id_70"></a><span class="term">R</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -935,10 +995,14 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_68"></a><span class="term">S</span>
+<a name="idx_id_71"></a><span class="term">S</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">singleton</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">static_mpfr_float_100</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/mpfr_float.html" title="mpfr_float"><span class="index-entry-level-1">mpfr_float</span></a></p></li></ul></div>
 </li>
@@ -951,6 +1015,10 @@
 <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>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">subset</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">subtract</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/mixed.html" title="Mixed Precision Arithmetic"><span class="index-entry-level-1">Mixed Precision Arithmetic</span></a></p></li>
@@ -963,7 +1031,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_69"></a><span class="term">T</span>
+<a name="idx_id_72"></a><span class="term">T</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -1003,7 +1071,7 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_70"></a><span class="term">U</span>
+<a name="idx_id_73"></a><span class="term">U</span>
 </dt>
 <dd><div class="index"><ul class="index" style="list-style-type: none; ">
 <li class="listitem" style="list-style-type: none">
@@ -1024,9 +1092,17 @@
 </li>
 </ul></div></dd>
 <dt>
-<a name="idx_id_71"></a><span class="term">Z</span>
+<a name="idx_id_74"></a><span class="term">V</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">value</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></ul></div></dd>
+<dt>
+<a name="idx_id_75"></a><span class="term">Z</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">zero</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/gmp_float.html" title="gmp_float"><span class="index-entry-level-1">gmp_float</span></a></p></li>
@@ -1035,7 +1111,12 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/rational/tommath_rational.html" title="tommath_rational"><span class="index-entry-level-1">tommath_rational</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/ints/tom_int.html" title="tom_int"><span class="index-entry-level-1">tom_int</span></a></p></li>
 </ul></div>
-</li></ul></div></dd>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">zero_in</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/interval/mpfi.html" title="mpfi_float"><span class="index-entry-level-1">mpfi_float</span></a></p></li></ul></div>
+</li>
+</ul></div></dd>
 </dl></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/map.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/map.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/map.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 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="../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
-<link rel="prev" href="perf/rational_performance.html" title="Rational Type Perfomance">
+<link rel="prev" href="perf/rational_performance.html" title="Rational Type Performance">
 <link rel="next" href="map/hist.html" title="History">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -28,6 +28,34 @@
 </h3></div></div></div>
 <h5>
 <a name="boost_multiprecision.map.hist.h0"></a>
+ <span class="phrase"><a name="boost_multiprecision.map.hist.1_54"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_54">1.54</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Add support for MPFI.
+ </li>
+<li class="listitem">
+ Add logged_adapter.
+ </li>
+</ul></div>
+<h5>
+<a name="boost_multiprecision.map.hist.h1"></a>
+ <span class="phrase"><a name="boost_multiprecision.map.hist.1_53"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.1_53">1.53</a>
+ </h5>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ First Release.
+ </li>
+<li class="listitem">
+ Fix bug in <a href="https://svn.boost.org/trac/boost/ticket/7878" target="_top">cpp_int
+ division</a>.
+ </li>
+<li class="listitem">
+ Fix issue #7806.
+ </li>
+</ul></div>
+<h5>
+<a name="boost_multiprecision.map.hist.h2"></a>
         <span class="phrase"><a name="boost_multiprecision.map.hist.post_review_changes"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.post_review_changes">Post
         review changes</a>
       </h5>
@@ -81,7 +109,7 @@
           </li>
 </ul></div>
 <h5>
-<a name="boost_multiprecision.map.hist.h1"></a>
+<a name="boost_multiprecision.map.hist.h3"></a>
         <span class="phrase"><a name="boost_multiprecision.map.hist.pre_review_history"></a></span><a class="link" href="hist.html#boost_multiprecision.map.hist.pre_review_history">Pre-review
         history</a>
       </h5>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/perf.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/perf.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/perf.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -34,11 +34,11 @@
 <dt><span class="section"><a href="perf/int_real_world.html">Integer Real
       World Tests</a></span></dt>
 <dt><span class="section"><a href="perf/float_performance.html">Float Algorithm
- Perfomance</a></span></dt>
+ Performance</a></span></dt>
 <dt><span class="section"><a href="perf/integer_performance.html">Integer
- Algorithm Perfomance</a></span></dt>
+ Algorithm Performance</a></span></dt>
 <dt><span class="section"><a href="perf/rational_performance.html">Rational
- Type Perfomance</a></span></dt>
+ Type Performance</a></span></dt>
 </dl></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -1,13 +1,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>Float Algorithm Perfomance</title>
+<title>Float Algorithm Performance</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="../perf.html" title="Performance Comparison">
 <link rel="prev" href="int_real_world.html" title="Integer Real World Tests">
-<link rel="next" href="integer_performance.html" title="Integer Algorithm Perfomance">
+<link rel="next" href="integer_performance.html" title="Integer Algorithm Performance">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -24,8 +24,8 @@
 </div>
 <div class="section boost_multiprecision_perf_float_performance">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_multiprecision.perf.float_performance"></a><a class="link" href="float_performance.html" title="Float Algorithm Perfomance">Float Algorithm
- Perfomance</a>
+<a name="boost_multiprecision.perf.float_performance"></a><a class="link" href="float_performance.html" title="Float Algorithm Performance">Float Algorithm
+ Performance</a>
 </h3></div></div></div>
 <p>
         Note that these tests are carefully designed to test performance of the underlying

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../perf.html" title="Performance Comparison">
 <link rel="prev" href="realworld.html" title="Floating Point Real World Tests">
-<link rel="next" href="float_performance.html" title="Float Algorithm Perfomance">
+<link rel="next" href="float_performance.html" title="Float Algorithm Performance">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -1,13 +1,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>Integer Algorithm Perfomance</title>
+<title>Integer Algorithm Performance</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="../perf.html" title="Performance Comparison">
-<link rel="prev" href="float_performance.html" title="Float Algorithm Perfomance">
-<link rel="next" href="rational_performance.html" title="Rational Type Perfomance">
+<link rel="prev" href="float_performance.html" title="Float Algorithm Performance">
+<link rel="next" href="rational_performance.html" title="Rational Type Performance">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -24,8 +24,8 @@
 </div>
 <div class="section boost_multiprecision_perf_integer_performance">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_multiprecision.perf.integer_performance"></a><a class="link" href="integer_performance.html" title="Integer Algorithm Perfomance">Integer
- Algorithm Perfomance</a>
+<a name="boost_multiprecision.perf.integer_performance"></a><a class="link" href="integer_performance.html" title="Integer Algorithm Performance">Integer
+ Algorithm Performance</a>
 </h3></div></div></div>
 <p>
         Note that these tests are carefully designed to test performance of the underlying

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -1,12 +1,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>Rational Type Perfomance</title>
+<title>Rational Type Performance</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="../perf.html" title="Performance Comparison">
-<link rel="prev" href="integer_performance.html" title="Integer Algorithm Perfomance">
+<link rel="prev" href="integer_performance.html" title="Integer Algorithm Performance">
 <link rel="next" href="../map.html" title="Roadmap">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -24,8 +24,8 @@
 </div>
 <div class="section boost_multiprecision_perf_rational_performance">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="boost_multiprecision.perf.rational_performance"></a><a class="link" href="rational_performance.html" title="Rational Type Perfomance">Rational
- Type Perfomance</a>
+<a name="boost_multiprecision.perf.rational_performance"></a><a class="link" href="rational_performance.html" title="Rational Type Performance">Rational
+ Type Performance</a>
 </h3></div></div></div>
 <p>
         Note that these tests are carefully designed to test performance of the underlying

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -38,7 +38,7 @@
 </pre>
 <p>
         Class template <code class="computeroutput"><span class="identifier">cpp_dec_float</span></code>
- fulfills all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
+ fulfils all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
         type. Its members and non-member functions are deliberately not documented:
         these are considered implementation details that are subject to change.
       </p>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -83,7 +83,7 @@
 </pre>
 <p>
         Class template <code class="computeroutput"><span class="identifier">cpp_int_backend</span></code>
- fulfills all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
+ fulfils all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
         type. Its members and non-member functions are deliberately not documented:
         these are considered implementation details that are subject to change.
       </p>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -35,7 +35,7 @@
 <span class="special">}}</span> <span class="comment">// namespaces</span>
 </pre>
 <p>
- Class template <code class="computeroutput"><span class="identifier">gmp_int</span></code> fulfills
+ Class template <code class="computeroutput"><span class="identifier">gmp_int</span></code> fulfils
         all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
         type. Its members and non-member functions are deliberately not documented:
         these are considered implementation details that are subject to change.

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -41,7 +41,7 @@
 </pre>
 <p>
         Class template <code class="computeroutput"><span class="identifier">gmp_float</span></code>
- fulfills all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
+ fulfils all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
         type. Its members and non-member functions are deliberately not documented:
         these are considered implementation details that are subject to change.
       </p>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -41,7 +41,7 @@
 </pre>
 <p>
         Class template <code class="computeroutput"><span class="identifier">mpfr_float_backend</span></code>
- fulfills all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
+ fulfils all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
         type. Its members and non-member functions are deliberately not documented:
         these are considered implementation details that are subject to change.
       </p>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -677,7 +677,7 @@
         For example the precision of these functions when used with <a class="link" href="../tut/floats/mpfr_float.html" title="mpfr_float">mpfr_float</a>
         is determined entirely by MPFR.
         When these functions use our own implementations, the accuracy of the transcendental
- functions is generally a few epsilon. Note however, that the trigonmetrical
+ functions is generally a few epsilon. Note however, that the trigonometrical
         functions incur the usual accuracy loss when reducing arguments by large
         multiples of &#960;. Also note that both <a class="link" href="../tut/floats/gmp_float.html" title="gmp_float">gmp_float</a>
         and <a class="link" href="../tut/floats/cpp_dec_float.html" title="cpp_dec_float">cpp_dec_float</a>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -36,7 +36,7 @@
 </pre>
 <p>
         Class template <code class="computeroutput"><span class="identifier">tommath_int</span></code>
- fulfills all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
+ fulfils all of the requirements for a <a class="link" href="backendconc.html" title="Backend Requirements">Backend</a>
         type. Its members and non-member functions are deliberately not documented:
         these are considered implementation details that are subject to change.
       </p>

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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -57,6 +57,8 @@
           Evaluation</a></span></dt>
 </dl></dd>
 </dl></dd>
+<dt><span class="section">Interval Number Types</span></dt>
+<dd><dl><dt><span class="section">mpfi_float</span></dt></dl></dd>
 <dt><span class="section">Rational Number Types</span></dt>
 <dd><dl>
 <dt><span class="section">cpp_rational</span></dt>
@@ -65,6 +67,8 @@
 <dt><span class="section">Use With Boost.Rational</span></dt>
 <dt><span class="section">rational_adapter</span></dt>
 </dl></dd>
+<dt><span class="section">Miscellaneous Number Types.</span></dt>
+<dd><dl><dt><span class="section">logged_adapter</span></dt></dl></dd>
 <dt><span class="section"><a href="tut/conversions.html">Constructing and
       Interconverting Between Number Types</a></span></dt>
 <dt><span class="section">Generating Random Numbers</span></dt>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 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="../tut.html" title="Tutorial">
-<link rel="prev" href="rational/rational_adapter.html" title="rational_adapter">
+<link rel="prev" href="misc/logged_adapter.html" title="logged_adapter">
 <link rel="next" href="random.html" title="Generating Random Numbers">
 </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="rational/rational_adapter.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="random.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="misc/logged_adapter.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="random.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section boost_multiprecision_tut_conversions">
 <div class="titlepage"><div><div><h3 class="title">
@@ -171,7 +171,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="rational/rational_adapter.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="random.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="misc/logged_adapter.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="random.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/poly_eg.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../fp_eg.html" title="Examples">
 <link rel="prev" href="gi.html" title="Calculating an Integral">
-<link rel="next" href="../../rational.html" title="Rational Number Types">
+<link rel="next" href="../../interval.html" title="Interval Number Types">
 </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="gi.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.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="../../rational.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="gi.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.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="../../interval.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section boost_multiprecision_tut_floats_fp_eg_poly_eg">
 <div class="titlepage"><div><div><h5 class="title">
@@ -150,7 +150,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="gi.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.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="../../rational.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="gi.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../fp_eg.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="../../interval.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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -27,7 +27,7 @@
 <a name="boost_multiprecision.tut.floats.mpfr_float"></a><a class="link" href="mpfr_float.html" title="mpfr_float">mpfr_float</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">mpfr_float</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
+ <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">mpfr</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>
 
@@ -184,8 +184,8 @@
             </li>
 </ul></div>
 <p>
- It's also possible to access the underlying <code class="computeroutput"><span class="identifier">mpf_t</span></code>
- via the data() member function of <code class="computeroutput"><span class="identifier">gmp_float</span></code>.
+ It's also possible to access the underlying <code class="computeroutput"><span class="identifier">mpfr_t</span></code>
+ via the data() member function of <code class="computeroutput"><span class="identifier">mpfr_float_backend</span></code>.
         </p>
 <p>
           Things you should know when using this type:

Added: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Interval Number Types</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="../tut.html" title="Tutorial">
+<link rel="prev" href="floats/fp_eg/poly_eg.html" title="Polynomial Evaluation">
+<link rel="next" href="interval/mpfi.html" title="mpfi_float">
+</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="floats/fp_eg/poly_eg.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="interval/mpfi.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section boost_multiprecision_tut_interval">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.tut.interval"></a><a class="link" href="interval.html" title="Interval Number Types">Interval Number Types</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section">mpfi_float</span></dt></dl></div>
+<p>
+ There is one currently only one interval number type supported - MPFI.
+ </p>
+</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="floats/fp_eg/poly_eg.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="interval/mpfi.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/mpfi.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,284 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>mpfi_float</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="../interval.html" title="Interval Number Types">
+<link rel="prev" href="../interval.html" title="Interval Number Types">
+<link rel="next" href="../rational.html" title="Rational Number Types">
+</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="../interval.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../interval.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="../rational.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section boost_multiprecision_tut_interval_mpfi">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_multiprecision.tut.interval.mpfi"></a><a class="link" href="mpfi.html" title="mpfi_float">mpfi_float</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">mpfi</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">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">mpfi_float_backend</span><span class="special">;</span>
+
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="number">50</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfi_float_50</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="number">100</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfifloat_100</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="number">500</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfifloat_500</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="number">1000</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfi_float_1000</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="number">0</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">mpfi_float</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">mpfi_float_backend</span></code>
+ type is used in conjunction with <code class="computeroutput"><span class="identifier">number</span></code>:
+ It acts as a thin wrapper around the MPFI
+ <code class="computeroutput"><span class="identifier">mpfi_t</span></code> to provide an real-number
+ type that is a drop-in replacement for the native C++ floating-point types,
+ but with much greater precision and implementing interval arithmetic.
+ </p>
+<p>
+ Type <code class="computeroutput"><span class="identifier">mpfi_float_backend</span></code>
+ can be used at fixed precision by specifying a non-zero <code class="computeroutput"><span class="identifier">Digits10</span></code>
+ template parameter, or at variable precision by setting the template argument
+ to zero. The typedefs mpfi_float_50, mpfi_float_100, mpfi_float_500, mpfi_float_1000
+ provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision
+ respectively. The typedef mpfi_float provides a variable precision type
+ whose precision can be controlled via the <code class="computeroutput"><span class="identifier">number</span></code>s
+ member functions.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../../doc/src/images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This type only provides <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+ support when the precision is fixed at compile time.
+ </p></td></tr>
+</table></div>
+<p>
+ As well as the usual conversions from arithmetic and string types, instances
+ of <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;</span> <span class="special">&gt;</span></code> are copy constructible and assignable
+ from:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The MPFI
+ native type <code class="computeroutput"><span class="identifier">mpfi_t</span></code>.
+ </li>
+<li class="listitem">
+ The <code class="computeroutput"><span class="identifier">number</span></code> wrappers
+ around MPFI
+ or MPFR: <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">M</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
+ and <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float</span><span class="special">&lt;</span><span class="identifier">M</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>.
+ </li>
+<li class="listitem">
+ There is a two argument constructor taking two <code class="computeroutput"><span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float</span><span class="special">&lt;</span><span class="identifier">M</span><span class="special">&gt;</span> <span class="special">&gt;</span></code>
+ arguments specifying the interval.
+ </li>
+</ul></div>
+<p>
+ It's also possible to access the underlying <code class="computeroutput"><span class="identifier">mpfi_t</span></code>
+ via the data() member function of <code class="computeroutput"><span class="identifier">mpfi_float_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">
+ A default constructed <code class="computeroutput"><span class="identifier">mpfi_float_backend</span></code>
+ is set to a NaN (this is the default MPFI
+ behavior).
+ </li>
+<li class="listitem">
+ No changes are made to GMP or
+ MPFR global settings, so this
+ type can coexist with existing MPFR
+ or GMP code.
+ </li>
+<li class="listitem">
+ The code can equally use MPIR
+ in place of GMP - indeed that
+ is the preferred option on Win32.
+ </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">
+ 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.
+ </li>
+</ul></div>
+<p>
+ There are some additional non member functions for working on intervals:
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">lower</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the lower end of the interval.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">upper</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the upper end of the interval.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">median</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the mid point of the interval.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">width</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the absolute width of the interval.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">intersect</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the interval which is the intersection of the <span class="emphasis"><em>a</em></span>
+ and <span class="emphasis"><em>b</em></span>. Returns an unspecified empty interval if there
+ is no such intersection.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span> <span class="identifier">hull</span><span class="special">(</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Returns the interval which is the union of <span class="emphasis"><em>a</em></span> and
+ <span class="emphasis"><em>b</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">overlap</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> only if the intervals
+ <span class="emphasis"><em>a</em></span> and <span class="emphasis"><em>b</em></span> overlap.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates1</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates2</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">in</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates1</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates2</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> only if point
+ <span class="emphasis"><em>a</em></span> is contained within the interval <span class="emphasis"><em>b</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">zero_in</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> only if the interval
+ <span class="emphasis"><em>a</em></span> contains the value zero.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">subset</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> only if <span class="emphasis"><em>a</em></span>
+ is a subset of <span class="emphasis"><em>b</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">proper_subset</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">,</span>
+ <span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">b</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> only if <span class="emphasis"><em>a</em></span>
+ is a proper subset of <span class="emphasis"><em>b</em></span>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> only if <span class="emphasis"><em>a</em></span>
+ is an empty interval, equivalent to <code class="computeroutput"><span class="identifier">upper</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span>
+ <span class="special">&lt;</span> <span class="identifier">lower</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>.
+ </p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">Digits10</span><span class="special">,</span> <span class="identifier">expression_template_option</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;</span>
+<span class="keyword">bool</span> <span class="identifier">singleton</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">Digits10</span><span class="special">&gt;,</span> <span class="identifier">ExpressionTemplates</span><span class="special">&gt;&amp;</span> <span class="identifier">a</span><span class="special">);</span>
+</pre>
+<p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> if <code class="computeroutput"><span class="identifier">lower</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span> <span class="special">==</span>
+ <span class="identifier">upper</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>.
+ </p>
+<h6>
+<a name="boost_multiprecision.tut.interval.mpfi.h0"></a>
+ <span class="phrase"><a name="boost_multiprecision.tut.interval.mpfi.__ulink_url__http___perso_ens_lyon_fr_nathalie_revol_software_html__mpfi__ulink__example_"></a></span><a class="link" href="mpfi.html#boost_multiprecision.tut.interval.mpfi.__ulink_url__http___perso_ens_lyon_fr_nathalie_revol_software_html__mpfi__ulink__example_">
+ MPFI
+ 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">mpfi</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 variable precision and no numeric_limits support:</span>
+<span class="identifier">mpfi_float</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="identifier">mpfi_float</span><span class="special">::</span><span class="identifier">default_precision</span><span class="special">(</span><span class="number">1000</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">mpfi_float</span><span class="special">::</span><span class="identifier">default_precision</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">sqrt</span><span class="special">(</span><span class="identifier">a</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 root-2</span>
+
+<span class="comment">// Operations at fixed precision and full numeric_limits support:</span>
+<span class="identifier">mpfi_float_100</span> <span class="identifier">b</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</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">mpfi_float_100</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">// We can use any C++ std lib function:</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</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)</span>
+
+<span class="comment">// Access the underlying data:</span>
+<span class="identifier">mpfi_t</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">mpfi_init</span><span class="special">(</span><span class="identifier">r</span><span class="special">);</span>
+<span class="identifier">mpfi_set</span><span class="special">(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">b</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">());</span>
+
+<span class="comment">// Construct some explicit intervals and perform set operations:</span>
+<span class="identifier">mpfi_float_50</span> <span class="identifier">i1</span><span class="special">(</span><span class="number">1</span><span class="special">,</span> <span class="number">2</span><span class="special">),</span> <span class="identifier">i2</span><span class="special">(</span><span class="number">1.5</span><span class="special">,</span> <span class="number">2.5</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">intersect</span><span class="special">(</span><span class="identifier">i1</span><span class="special">,</span> <span class="identifier">i2</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">hull</span><span class="special">(</span><span class="identifier">i1</span><span class="special">,</span> <span class="identifier">i2</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">overlap</span><span class="special">(</span><span class="identifier">i1</span><span class="special">,</span> <span class="identifier">i2</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="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">subset</span><span class="special">(</span><span class="identifier">i1</span><span class="special">,</span> <span class="identifier">i2</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>
+</pre>
+<p>
+ </p>
+</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="../interval.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../interval.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="../rational.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -317,7 +317,7 @@
               characteristics as a 128-bit integer, rather than being 4 times slower
               for addition and 16 times slower for multiplication (assuming the values
               involved would always fit in 128 bits). Typically this means you can
- use an integer type wide enough for the "worst case senario"
+ use an integer type wide enough for the "worst case scenario"
               with only minor performance degradation even if most of the time the
               arithmetic could in fact be done with a narrower type.
             </li>

Added: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,47 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Miscellaneous Number Types.</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="../tut.html" title="Tutorial">
+<link rel="prev" href="rational/rational_adapter.html" title="rational_adapter">
+<link rel="next" href="misc/logged_adapter.html" title="logged_adapter">
+</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="rational/rational_adapter.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="misc/logged_adapter.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section boost_multiprecision_tut_misc">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_multiprecision.tut.misc"></a><a class="link" href="misc.html" title="Miscellaneous Number Types.">Miscellaneous Number Types.</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section">logged_adapter</span></dt></dl></div>
+<p>
+ Backend types listed in this section are predominantly designed to aid debugging.
+ </p>
+</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="rational/rational_adapter.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="misc/logged_adapter.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adapter.html
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/logged_adapter.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,223 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>logged_adapter</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="../misc.html" title="Miscellaneous Number Types.">
+<link rel="prev" href="../misc.html" title="Miscellaneous Number Types.">
+<link rel="next" href="../conversions.html" title="Constructing and Interconverting Between Number Types">
+</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="../misc.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../misc.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="../conversions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section boost_multiprecision_tut_misc_logged_adapter">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_multiprecision.tut.misc.logged_adapter"></a><a class="link" href="logged_adapter.html" title="logged_adapter">logged_adapter</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">logged_adapter</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">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">log_postfix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">result</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">log_postfix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">result1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">result2</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">log_prefix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">log_prefix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">arg2</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">log_prefix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">arg2</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&amp;</span> <span class="identifier">arg3</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">);</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Backend</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">U</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">V</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">log_prefix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">Backend</span><span class="special">&amp;</span> <span class="identifier">arg1</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">arg2</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span><span class="special">&amp;</span> <span class="identifier">arg3</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">V</span><span class="special">&amp;</span> <span class="identifier">arg4</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">);</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="identifier">Backend</span><span class="special">&gt;</span>
+<span class="keyword">class</span> <span class="identifier">logged_adapter</span><span class="special">;</span>
+
+<span class="special">}}</span> <span class="comment">// namespaces</span>
+</pre>
+<p>
+ The <code class="computeroutput"><span class="identifier">logged_adapter</span></code> type
+ is used in conjunction with <code class="computeroutput"><span class="identifier">number</span></code>
+ and some other backend type: it acts as a thin wrapper around some other
+ backend to class <code class="computeroutput"><span class="identifier">number</span></code>
+ and logs all the events that take place on that object. Before any number
+ operation takes place, it calls <code class="computeroutput"><span class="identifier">log_prefix_event</span></code>
+ with the arguments to the operation (up to 4), plus a string describing
+ the operation. Then after the operation it calls <code class="computeroutput"><span class="identifier">log_postfix_event</span></code>
+ with the result of the operation, plus a string describing the operation.
+ Optionally, <code class="computeroutput"><span class="identifier">log_postfix_event</span></code>
+ takes a second result argument: this occurs when the result of the operation
+ is not a <code class="computeroutput"><span class="identifier">number</span></code>, for example
+ when <code class="computeroutput"><span class="identifier">fpclassify</span></code> is called,
+ <code class="computeroutput"><span class="identifier">log_postfix_event</span></code> will
+ be called with <code class="computeroutput"><span class="identifier">result1</span></code>
+ being the argument to the function, and <code class="computeroutput"><span class="identifier">result2</span></code>
+ being the integer result of <code class="computeroutput"><span class="identifier">fpclassify</span></code>.
+ </p>
+<p>
+ The default versions of <code class="computeroutput"><span class="identifier">log_prefix_event</span></code>
+ and <code class="computeroutput"><span class="identifier">log_postfix_event</span></code> do
+ nothing, it is therefore up to the user to overload these for the particular
+ backend being observed.
+ </p>
+<p>
+ This type provides <code class="computeroutput"><span class="identifier">numeric_limits</span></code>
+ support whenever the template argument Backend does so.
+ </p>
+<p>
+ This type is particularly useful when combined with an interval number
+ type - in this case we can use <code class="computeroutput"><span class="identifier">log_postfix_event</span></code>
+ to monitor the error accumulated after each operation. We could either
+ set some kind of trap whenever the accumulated error exceeds some threshold,
+ or simply print out diagnostic information. Using this technique we can
+ quickly locate the cause of numerical instability in a particular routine.
+ The following example demonstrates this technique in a trivial algorithm
+ that deliberately introduces cancellation error:
+ </p>
+<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">mpfi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<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">logged_adapter</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iomanip</span><span class="special">&gt;</span>
+<span class="comment">//</span>
+<span class="comment">// Begin by overloading log_postfix_event so we can capture each arithmetic event as it happens:</span>
+<span class="comment">//</span>
+<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">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">D</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">log_postfix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">&gt;&amp;</span> <span class="identifier">val</span><span class="special">,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// Print out the (relative) diameter of the interval:</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="identifier">number</span><span class="special">&lt;</span><span class="identifier">mpfr_float_backend</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">diam</span><span class="special">;</span>
+ <span class="identifier">mpfi_diam</span><span class="special">(</span><span class="identifier">diam</span><span class="special">.</span><span class="identifier">backend</span><span class="special">().</span><span class="identifier">data</span><span class="special">(),</span> <span class="identifier">val</span><span class="special">.</span><span class="identifier">data</span><span class="special">());</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Diameter was "</span> <span class="special">&lt;&lt;</span> <span class="identifier">diam</span> <span class="special">&lt;&lt;</span> <span class="string">" after operation: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">event_description</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="special">}</span>
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">unsigned</span> <span class="identifier">D</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">inline</span> <span class="keyword">void</span> <span class="identifier">log_postfix_event</span><span class="special">(</span><span class="keyword">const</span> <span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="identifier">D</span><span class="special">&gt;&amp;,</span> <span class="keyword">const</span> <span class="identifier">T</span><span class="special">&amp;,</span> <span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">event_description</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// This version is never called in this example.</span>
+<span class="special">}</span>
+
+<span class="special">}}</span>
+
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
+<span class="special">{</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="keyword">typedef</span> <span class="identifier">number</span><span class="special">&lt;</span><span class="identifier">logged_adapter</span><span class="special">&lt;</span><span class="identifier">mpfi_float_backend</span><span class="special">&lt;</span><span class="number">17</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">logged_type</span><span class="special">;</span>
+ <span class="comment">//</span>
+ <span class="comment">// Test case deliberately introduces cancellation error, relative size of interval</span>
+ <span class="comment">// gradually gets larger after each operation:</span>
+ <span class="comment">//</span>
+ <span class="identifier">logged_type</span> <span class="identifier">a</span> <span class="special">=</span> <span class="number">1</span><span class="special">;</span>
+ <span class="identifier">a</span> <span class="special">/=</span> <span class="number">10</span><span class="special">;</span>
+
+ <span class="keyword">for</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="number">13</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">logged_type</span> <span class="identifier">b</span> <span class="special">=</span> <span class="identifier">a</span> <span class="special">*</span> <span class="number">9</span><span class="special">;</span>
+ <span class="identifier">b</span> <span class="special">/=</span> <span class="number">10</span><span class="special">;</span>
+ <span class="identifier">a</span> <span class="special">-=</span> <span class="identifier">b</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"Final value was: "</span> <span class="special">&lt;&lt;</span> <span class="identifier">a</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="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ When we examine program output we can clearly see that the diameter of
+ the interval increases after each subtraction:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Assignment</span> <span class="identifier">from</span> <span class="identifier">arithmetic</span> <span class="identifier">type</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.33681e-18</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">7.70988e-18</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">9.63735e-18</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.30104e-16</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.30104e-16</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.38537e-16</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">2.54788e-15</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">2.54788e-15</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">2.54863e-15</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.84164e-14</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.84164e-14</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.84221e-14</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">9.19962e-13</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">9.19962e-13</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">9.19966e-13</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.74793e-11</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.74793e-11</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.74793e-11</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">3.32107e-10</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">3.32107e-10</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">3.32107e-10</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">6.31003e-09</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">6.31003e-09</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">6.31003e-09</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.19891e-07</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.19891e-07</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">1.19891e-07</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">2.27792e-06</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">2.27792e-06</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">2.27792e-06</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.32805e-05</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.32805e-05</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">4.32805e-05</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.00082233</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.00082233</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.00082233</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.0156243</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="identifier">nan</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="identifier">Default</span> <span class="identifier">construct</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.0156243</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">*</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.0156243</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">/=</span>
+<span class="identifier">Diameter</span> <span class="identifier">was</span> <span class="number">0.296861</span> <span class="identifier">after</span> <span class="identifier">operation</span><span class="special">:</span> <span class="special">-=</span>
+<span class="identifier">Final</span> <span class="identifier">value</span> <span class="identifier">was</span><span class="special">:</span> <span class="special">{</span><span class="number">8.51569e-15</span><span class="special">,</span><span class="number">1.14843e-14</span><span class="special">}</span>
+</pre>
+<p>
+ </p>
+</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="../misc.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../misc.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="../conversions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 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="../tut.html" title="Tutorial">
-<link rel="prev" href="floats/fp_eg/poly_eg.html" title="Polynomial Evaluation">
+<link rel="prev" href="interval/mpfi.html" title="mpfi_float">
 <link rel="next" href="rational/cpp_rational.html" title="cpp_rational">
 </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="floats/fp_eg/poly_eg.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="rational/cpp_rational.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="interval/mpfi.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="rational/cpp_rational.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section boost_multiprecision_tut_rational">
 <div class="titlepage"><div><div><h3 class="title">
@@ -255,7 +255,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="floats/fp_eg/poly_eg.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="rational/cpp_rational.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="interval/mpfi.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../tut.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="rational/cpp_rational.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html
==============================================================================
--- trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html (original)
+++ trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Boost.Multiprecision">
 <link rel="up" href="../rational.html" title="Rational Number Types">
 <link rel="prev" href="br.html" title="Use With Boost.Rational">
-<link rel="next" href="../conversions.html" title="Constructing and Interconverting Between Number Types">
+<link rel="next" href="../misc.html" title="Miscellaneous Number Types.">
 </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="br.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.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="../conversions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="br.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.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="../misc.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
 </div>
 <div class="section boost_multiprecision_tut_rational_rational_adapter">
 <div class="titlepage"><div><div><h4 class="title">
@@ -61,7 +61,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="br.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.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="../conversions.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="br.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../rational.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="../misc.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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -72,6 +72,8 @@
           Evaluation</a></span></dt>
 </dl></dd>
 </dl></dd>
+<dt><span class="section">Interval Number Types</span></dt>
+<dd><dl><dt><span class="section">mpfi_float</span></dt></dl></dd>
 <dt><span class="section">Rational Number Types</span></dt>
 <dd><dl>
 <dt><span class="section">cpp_rational</span></dt>
@@ -80,6 +82,8 @@
 <dt><span class="section">Use With Boost.Rational</span></dt>
 <dt><span class="section">rational_adapter</span></dt>
 </dl></dd>
+<dt><span class="section">Miscellaneous Number Types.</span></dt>
+<dd><dl><dt><span class="section">logged_adapter</span></dt></dl></dd>
 <dt><span class="section"><a href="boost_multiprecision/tut/conversions.html">Constructing and
       Interconverting Between Number Types</a></span></dt>
 <dt><span class="section">Generating Random Numbers</span></dt>
@@ -112,11 +116,11 @@
 <dt><span class="section"><a href="boost_multiprecision/perf/int_real_world.html">Integer Real
       World Tests</a></span></dt>
 <dt><span class="section"><a href="boost_multiprecision/perf/float_performance.html">Float Algorithm
- Perfomance</a></span></dt>
+ Performance</a></span></dt>
 <dt><span class="section"><a href="boost_multiprecision/perf/integer_performance.html">Integer
- Algorithm Perfomance</a></span></dt>
+ Algorithm Performance</a></span></dt>
 <dt><span class="section"><a href="boost_multiprecision/perf/rational_performance.html">Rational
- Type Perfomance</a></span></dt>
+ Type Performance</a></span></dt>
 </dl></dd>
 <dt><span class="section">Roadmap</span></dt>
 <dd><dl>
@@ -136,7 +140,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: December 18, 2012 at 11:25:53 GMT</small></p></td>
+<td align="left"><p><small>Last revised: January 14, 2013 at 19:04:42 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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -21,14 +21,17 @@
 [include html4_symbols.qbk]
 [import ../example/gmp_snips.cpp]
 [import ../example/mpfr_snips.cpp]
+[import ../example/mpfi_snips.cpp]
 [import ../example/cpp_dec_float_snips.cpp]
 [import ../example/tommath_snips.cpp]
 [import ../example/cpp_int_snips.cpp]
 [import ../example/random_snips.cpp]
 [import ../example/safe_prime.cpp]
 [import ../example/mixed_integer_arithmetic.cpp]
+[import ../example/logged_adapter.cpp]
 
 [template mpfr[] [@http://www.mpfr.org MPFR]]
+[template mpfi[] [@http://perso.ens-lyon.fr/nathalie.revol/software.html MPFI]]
 [template gmp[] [@http://gmplib.org GMP]]
 [template mpf_class[] [@http://gmplib.org/manual/C_002b_002b-Interface-Floats.html#C_002b_002b-Interface-Floats mpf_class]]
 [template mpfr_class[] [@http://math.berkeley.edu/~wilken/code/gmpfrxx/ mpfr_class]]
@@ -513,7 +516,7 @@
 characteristics as a 128-bit integer, rather than being 4 times slower for addition and 16 times slower for multiplication
  (assuming the values involved would always fit in 128 bits).
 Typically this means you can use
-an integer type wide enough for the "worst case senario" with only minor performance degradation even if most of the time
+an integer type wide enough for the "worst case scenario" with only minor performance degradation even if most of the time
 the arithmetic could in fact be done with a narrower type.
 * When used at fixed precision and MaxBits is smaller than the number of bits in the largest native integer type, then
 internally `cpp_int_backend` switches to a "trivial" implementation where it is just a thin wrapper around a single
@@ -758,7 +761,7 @@
 
 [section:mpfr_float mpfr_float]
 
-`#include <boost/multiprecision/mpfr_float.hpp>`
+`#include <boost/multiprecision/mpfr.hpp>`
 
    namespace boost{ namespace multiprecision{
 
@@ -819,7 +822,7 @@
 * The [mpfr] native type `mpfr_t`.
 * The `number` wrappers around those types: `number<mpfr_float_backend<M> >`, `number<mpf_float<M> >`, `number<gmp_int>`, `number<gmp_rational>`.
 
-It's also possible to access the underlying `mpf_t` via the data() member function of `gmp_float`.
+It's also possible to access the underlying `mpfr_t` via the data() member function of `mpfr_float_backend`.
 
 Things you should know when using this type:
 
@@ -882,6 +885,143 @@
 
 [endsect]
 
+[section:interval Interval Number Types]
+
+There is one currently only one interval number type supported - [mpfi].
+
+[section:mpfi mpfi_float]
+
+`#include <boost/multiprecision/mpfi.hpp>`
+
+ namespace boost{ namespace multiprecision{
+
+ template <unsigned Digits10>
+ class mpfi_float_backend;
+
+ typedef number<mpfi_float_backend<50> > mpfi_float_50;
+ typedef number<mpfi_float_backend<100> > mpfifloat_100;
+ typedef number<mpfi_float_backend<500> > mpfifloat_500;
+ typedef number<mpfi_float_backend<1000> > mpfi_float_1000;
+ typedef number<mpfi_float_backend<0> > mpfi_float;
+
+ }} // namespaces
+
+The `mpfi_float_backend` type is used in conjunction with `number`: It acts as a thin wrapper around the [mpfi] `mpfi_t`
+to provide an real-number type that is a drop-in replacement for the native C++ floating-point types, but with
+much greater precision and implementing interval arithmetic.
+
+Type `mpfi_float_backend` can be used at fixed precision by specifying a non-zero `Digits10` template parameter, or
+at variable precision by setting the template argument to zero. The typedefs mpfi_float_50, mpfi_float_100,
+mpfi_float_500, mpfi_float_1000 provide arithmetic types at 50, 100, 500 and 1000 decimal digits precision
+respectively. The typedef mpfi_float provides a variable precision type whose precision can be controlled via the
+`number`s member functions.
+
+[note This type only provides `numeric_limits` support when the precision is fixed at compile time.]
+
+As well as the usual conversions from arithmetic and string types, instances of `number<mpfi_float_backend<N> >` are
+copy constructible and assignable from:
+
+* The [mpfi] native type `mpfi_t`.
+* The `number` wrappers around [mpfi] or [mpfr]: `number<mpfi_float_backend<M> >` and `number<mpfr_float<M> >`.
+* There is a two argument constructor taking two `number<mpfr_float<M> >` arguments specifying the interval.
+
+It's also possible to access the underlying `mpfi_t` via the data() member function of `mpfi_float_backend`.
+
+Things you should know when using this type:
+
+* A default constructed `mpfi_float_backend` is set to a NaN (this is the default [mpfi] behavior).
+* No changes are made to [gmp] or [mpfr] global settings, so this type can coexist with existing
+[mpfr] or [gmp] code.
+* The code can equally use [mpir] in place of [gmp] - indeed that is the preferred option on Win32.
+* This backend supports rvalue-references and is move-aware, making instantiations of `number` on this backend move aware.
+* 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.
+
+There are some additional non member functions for working on intervals:
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ number<mpfr_float_backend<Digits10>, ExpressionTemplates> lower(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
+
+Returns the lower end of the interval.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ number<mpfr_float_backend<Digits10>, ExpressionTemplates> upper(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
+
+Returns the upper end of the interval.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ number<mpfr_float_backend<Digits10>, ExpressionTemplates> median(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
+
+Returns the mid point of the interval.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ number<mpfr_float_backend<Digits10>, ExpressionTemplates> width(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& val);
+
+Returns the absolute width of the interval.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ number<mpfi_float_backend<Digits10>, ExpressionTemplates> intersect(
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a,
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
+
+Returns the interval which is the intersection of the ['a] and ['b]. Returns an
+unspecified empty interval if there is no such intersection.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ number<mpfi_float_backend<Digits10>, ExpressionTemplates> hull(
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a,
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
+
+Returns the interval which is the union of ['a] and ['b].
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ bool overlap(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a,
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
+
+Returns `true` only if the intervals ['a] and ['b] overlap.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates1, expression_template_option ExpressionTemplates2>
+ bool in(const number<mpfr_float_backend<Digits10>, ExpressionTemplates1>& a,
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates2>& b);
+
+Returns `true` only if point ['a] is contained within the interval ['b].
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ bool zero_in(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a);
+
+Returns `true` only if the interval ['a] contains the value zero.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ bool subset(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a,
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
+
+Returns `true` only if ['a] is a subset of ['b].
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ bool proper_subset(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a,
+ const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& b);
+
+Returns `true` only if ['a] is a proper subset of ['b].
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ bool empty(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a);
+
+Returns `true` only if ['a] is an empty interval, equivalent to `upper(a) < lower(a)`.
+
+ template <unsigned Digits10, expression_template_option ExpressionTemplates>
+ bool singleton(const number<mpfi_float_backend<Digits10>, ExpressionTemplates>& a);
+
+Returns `true` if `lower(a) == upper(a)`.
+
+[h5 [mpfi] example:]
+
+[mpfi_eg]
+
+[endsect]
+
+[endsect]
+
 [section:rational Rational Number Types]
 
 The following back-ends provide rational number arithmetic:
@@ -1058,6 +1198,64 @@
 
 [endsect]
 
+[section:misc Miscellaneous Number Types.]
+
+Backend types listed in this section are predominantly designed to aid debugging.
+
+[section:logged_adapter logged_adapter]
+
+`#include <boost/multiprecision/logged_adapter.hpp>`
+
+ namespace boost{ namespace multiprecision{
+
+ template <class Backend>
+ void log_postfix_event(const Backend& result, const char* event_description);
+ template <class Backend, class T>
+ void log_postfix_event(const Backend& result1, const T& result2, const char* event_description);
+
+ template <class Backend>
+ void log_prefix_event(const Backend& arg1, const char* event_description);
+ template <class Backend, class T>
+ void log_prefix_event(const Backend& arg1, const T& arg2, const char* event_description);
+ template <class Backend, class T, class U>
+ void log_prefix_event(const Backend& arg1, const T& arg2, const U& arg3, const char* event_description);
+ template <class Backend, class T, class U, class V>
+ void log_prefix_event(const Backend& arg1, const T& arg2, const U& arg3, const V& arg4, const char* event_description);
+
+ template <Backend>
+ class logged_adapter;
+
+ }} // namespaces
+
+The `logged_adapter` type is used in conjunction with `number` and some other backend type: it acts as a thin wrapper around
+some other backend to class `number` and logs all the events that take place on that object. Before any number operation takes
+place, it calls `log_prefix_event` with the arguments to the operation (up to 4), plus a string describing the operation.
+Then after the operation it calls `log_postfix_event` with the result of the operation, plus a string describing the operation.
+Optionally, `log_postfix_event` takes a second result argument: this occurs when the result of the operation is not a `number`,
+for example when `fpclassify` is called, `log_postfix_event` will be called with `result1` being the argument to the function, and
+`result2` being the integer result of `fpclassify`.
+
+The default versions of `log_prefix_event` and `log_postfix_event` do nothing, it is therefore up to the user to overload these
+for the particular backend being observed.
+
+This type provides `numeric_limits` support whenever the template argument Backend does so.
+
+This type is particularly useful when combined with an interval number type - in this case we can use `log_postfix_event`
+to monitor the error accumulated after each operation. We could either set some kind of trap whenever the accumulated error
+exceeds some threshold, or simply print out diagnostic information. Using this technique we can quickly locate the cause of
+numerical instability in a particular routine. The following example demonstrates this technique in a trivial algorithm
+that deliberately introduces cancellation error:
+
+[logged_adapter]
+
+When we examine program output we can clearly see that the diameter of the interval increases after each subtraction:
+
+[logged_adapter_output]
+
+[endsect]
+
+[endsect]
+
 [section:conversions Constructing and Interconverting Between Number Types]
 
 All of the number types that are based on `number` have certain conversion rules in common.
@@ -1841,7 +2039,7 @@
 
 The precision of these functions is generally determined by the backend implementation. For example the precision
 of these functions when used with __mpfr_float_backend is determined entirely by [mpfr]. When these functions use our own
-implementations, the accuracy of the transcendental functions is generally a few epsilon. Note however, that the trigonmetrical
+implementations, the accuracy of the transcendental functions is generally a few epsilon. Note however, that the trigonometrical
 functions incur the usual accuracy loss when reducing arguments by large multiples of [pi]. Also note that both __mpf_float
 and __cpp_dec_float have a number of guard digits beyond their stated precision, so the error rates listed for these
 are in some sense artificially low.
@@ -2060,7 +2258,7 @@
 
    }} // namespaces
 
-Class template `cpp_int_backend` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
+Class template `cpp_int_backend` fulfils all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
 Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject
 to change.
 
@@ -2101,7 +2299,7 @@
 
    }} // namespaces
 
-Class template `gmp_int` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
+Class template `gmp_int` fulfils all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
 Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject
 to change.
 
@@ -2121,7 +2319,7 @@
 
    }} // namespaces
 
-Class template `tommath_int` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
+Class template `tommath_int` fulfils all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
 Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject
 to change.
 
@@ -2146,7 +2344,7 @@
 
    }} // namespaces
 
-Class template `gmp_float` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
+Class template `gmp_float` fulfils all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
 Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject
 to change.
 
@@ -2177,7 +2375,7 @@
 
    }} // namespaces
 
-Class template `mpfr_float_backend` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
+Class template `mpfr_float_backend` fulfils all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
 Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject
 to change.
 
@@ -2205,7 +2403,7 @@
 
    }} // namespaces
 
-Class template `cpp_dec_float` fulfills all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
+Class template `cpp_dec_float` fulfils all of the requirements for a [link boost_multiprecision.ref.backendconc Backend] type.
 Its members and non-member functions are deliberately not documented: these are considered implementation details that are subject
 to change.
 
@@ -2837,7 +3035,7 @@
 
 [endsect]
 
-[section:float_performance Float Algorithm Perfomance]
+[section:float_performance Float Algorithm Performance]
 
 Note that these tests are carefully designed to test performance of the underlying algorithms
 and not memory allocation or variable copying. As usual, performance results should be taken
@@ -2973,7 +3171,7 @@
 
 [endsect]
 
-[section:integer_performance Integer Algorithm Perfomance]
+[section:integer_performance Integer Algorithm Performance]
 
 Note that these tests are carefully designed to test performance of the underlying algorithms
 and not memory allocation or variable copying. As usual, performance results should be taken
@@ -3215,7 +3413,7 @@
 
 [endsect]
 
-[section:rational_performance Rational Type Perfomance]
+[section:rational_performance Rational Type Performance]
 
 Note that these tests are carefully designed to test performance of the underlying algorithms
 and not memory allocation or variable copying. As usual, performance results should be taken
@@ -3337,6 +3535,17 @@
 
 [section:hist History]
 
+[h4 1.54]
+
+* Add support for [mpfi].
+* Add logged_adapter.
+
+[h4 1.53]
+
+* First Release.
+* Fix bug in [@https://svn.boost.org/trac/boost/ticket/7878 cpp_int division].
+* Fix issue [@https://svn.boost.org/trac/boost/ticket/7806 #7806].
+
 [h4 Post review changes]
 
 * Non-expression template operators further optimised with rvalue reference support.

Added: trunk/libs/multiprecision/example/logged_adapter.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/example/logged_adapter.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,119 @@
+///////////////////////////////////////////////////////////////
+// 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_
+
+//[logged_adapter
+
+#include <boost/multiprecision/mpfi.hpp>
+#include <boost/multiprecision/logged_adapter.hpp>
+#include <iostream>
+#include <iomanip>
+//
+// Begin by overloading log_postfix_event so we can capture each arithmetic event as it happens:
+//
+namespace boost{ namespace multiprecision{
+
+template <unsigned D>
+inline void log_postfix_event(const mpfi_float_backend<D>& val, const char* event_description)
+{
+ // Print out the (relative) diameter of the interval:
+ using namespace boost::multiprecision;
+ number<mpfr_float_backend<D> > diam;
+ mpfi_diam(diam.backend().data(), val.data());
+ std::cout << "Diameter was " << diam << " after operation: " << event_description << std::endl;
+}
+template <unsigned D, class T>
+inline void log_postfix_event(const mpfi_float_backend<D>&, const T&, const char* event_description)
+{
+ // This version is never called in this example.
+}
+
+}}
+
+
+int main()
+{
+ using namespace boost::multiprecision;
+ typedef number<logged_adapter<mpfi_float_backend<17> > > logged_type;
+ //
+ // Test case deliberately introduces cancellation error, relative size of interval
+ // gradually gets larger after each operation:
+ //
+ logged_type a = 1;
+ a /= 10;
+
+ for(unsigned i = 0; i < 13; ++i)
+ {
+ logged_type b = a * 9;
+ b /= 10;
+ a -= b;
+ }
+ std::cout << "Final value was: " << a << std::endl;
+ return 0;
+}
+
+//]
+
+/*
+//[logged_adapter_output
+
+Diameter was nan after operation: Default construct
+Diameter was 0 after operation: Assignment from arithmetic type
+Diameter was 4.33681e-18 after operation: /=
+Diameter was nan after operation: Default construct
+Diameter was 7.70988e-18 after operation: *
+Diameter was 9.63735e-18 after operation: /=
+Diameter was 1.30104e-16 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 1.30104e-16 after operation: *
+Diameter was 1.38537e-16 after operation: /=
+Diameter was 2.54788e-15 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 2.54788e-15 after operation: *
+Diameter was 2.54863e-15 after operation: /=
+Diameter was 4.84164e-14 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 4.84164e-14 after operation: *
+Diameter was 4.84221e-14 after operation: /=
+Diameter was 9.19962e-13 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 9.19962e-13 after operation: *
+Diameter was 9.19966e-13 after operation: /=
+Diameter was 1.74793e-11 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 1.74793e-11 after operation: *
+Diameter was 1.74793e-11 after operation: /=
+Diameter was 3.32107e-10 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 3.32107e-10 after operation: *
+Diameter was 3.32107e-10 after operation: /=
+Diameter was 6.31003e-09 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 6.31003e-09 after operation: *
+Diameter was 6.31003e-09 after operation: /=
+Diameter was 1.19891e-07 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 1.19891e-07 after operation: *
+Diameter was 1.19891e-07 after operation: /=
+Diameter was 2.27792e-06 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 2.27792e-06 after operation: *
+Diameter was 2.27792e-06 after operation: /=
+Diameter was 4.32805e-05 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 4.32805e-05 after operation: *
+Diameter was 4.32805e-05 after operation: /=
+Diameter was 0.00082233 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 0.00082233 after operation: *
+Diameter was 0.00082233 after operation: /=
+Diameter was 0.0156243 after operation: -=
+Diameter was nan after operation: Default construct
+Diameter was 0.0156243 after operation: *
+Diameter was 0.0156243 after operation: /=
+Diameter was 0.296861 after operation: -=
+Final value was: {8.51569e-15,1.14843e-14}
+
+//]
+*/

Added: trunk/libs/multiprecision/example/mpfi_snips.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/example/mpfi_snips.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,50 @@
+///////////////////////////////////////////////////////////////
+// Copyright 2011 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/mpfi.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <iostream>
+
+void t1()
+{
+ //[mpfi_eg
+ //=#include <boost/multiprecision/mpfi.hpp>
+
+ using namespace boost::multiprecision;
+
+ // Operations at variable precision and no numeric_limits support:
+ mpfi_float a = 2;
+ mpfi_float::default_precision(1000);
+ std::cout << mpfi_float::default_precision() << std::endl;
+ std::cout << sqrt(a) << std::endl; // print root-2
+
+ // Operations at fixed precision and full numeric_limits support:
+ mpfi_float_100 b = 2;
+ std::cout << std::numeric_limits<mpfi_float_100>::digits << std::endl;
+ // We can use any C++ std lib function:
+ std::cout << log(b) << std::endl; // print log(2)
+
+ // Access the underlying data:
+ mpfi_t r;
+ mpfi_init(r);
+ mpfi_set(r, b.backend().data());
+
+ // Construct some explicit intervals and perform set operations:
+ mpfi_float_50 i1(1, 2), i2(1.5, 2.5);
+ std::cout << intersect(i1, i2) << std::endl;
+ std::cout << hull(i1, i2) << std::endl;
+ std::cout << overlap(i1, i2) << std::endl;
+ std::cout << subset(i1, i2) << std::endl;
+ //]
+}
+
+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-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -101,6 +101,9 @@
 run test_arithmetic_ab_2.cpp ;
 run test_arithmetic_ab_3.cpp ;
 
+run test_arithmetic_logged_1.cpp ;
+run test_arithmetic_logged_2.cpp ;
+
 run test_arithmetic_mpfi_50.cpp mpfi mpfr gmp : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ;
 
 run test_numeric_limits.cpp
@@ -439,6 +442,18 @@
         : # requirements
          [ check-target-builds ../config//has_mpfr : : <build>no ] ;
 
+run ../example/mpfi_snips.cpp mpfi mpfr gmp
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_mpfi : : <build>no ] ;
+
+run ../example/logged_adapter.cpp mpfi mpfr gmp
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_mpfi : : <build>no ] ;
+
 run ../example/cpp_dec_float_snips.cpp ;
 run ../example/cpp_int_snips.cpp ;
 
@@ -595,8 +610,12 @@
                     <define>TEST_BACKEND
                <debug-symbols>off
               : $(source:B)_backend_concept ;
+
+ compile $(source)
+ : # requirements
+ <define>TEST_LOGGED_ADAPTER
+ <debug-symbols>off
+ : $(source:B)_logged_adapter ;
    }
 }
 
-
-

Modified: trunk/libs/multiprecision/test/concepts/number_concept_check.cpp
==============================================================================
--- trunk/libs/multiprecision/test/concepts/number_concept_check.cpp (original)
+++ trunk/libs/multiprecision/test/concepts/number_concept_check.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -18,7 +18,8 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
    && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
- && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET)
+ && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
+ && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
 # define TEST_MPF_50
 # define TEST_BACKEND
 # define TEST_MPZ
@@ -29,6 +30,7 @@
 # define TEST_MPFR_30
 # define TEST_CPP_DEC_FLOAT
 # define TEST_CPP_DEC_FLOAT_NO_ET
+# define TEST_LOGGED_ADAPTER
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,12 +47,15 @@
 #ifdef TEST_BACKEND
 #include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
 #endif
-#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET)
+#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
 #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
 #include <boost/multiprecision/mpfr.hpp>
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+#include <boost/multiprecision/logged_adapter.hpp>
+#endif
 
 #include <boost/math/concepts/real_type_concept.hpp>
 
@@ -219,5 +224,9 @@
 #ifdef TEST_CPP_DEC_FLOAT
    BOOST_CONCEPT_ASSERT((boost::math::concepts::RealTypeConcept<boost::multiprecision::cpp_dec_float_50>));
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+ typedef boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
 
 }

Modified: trunk/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp
==============================================================================
--- trunk/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp (original)
+++ trunk/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -18,7 +18,8 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
    && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
- && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET)
+ && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) \
+ && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
 # define TEST_MPF_50
 # define TEST_BACKEND
 # define TEST_MPZ
@@ -29,6 +30,7 @@
 # define TEST_MPFR_30
 # define TEST_CPP_DEC_FLOAT
 # define TEST_CPP_DEC_FLOAT_NO_ET
+# define TEST_LOGGED_ADAPTER
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,12 +47,15 @@
 #ifdef TEST_BACKEND
 #include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
 #endif
-#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET)
+#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
 #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
 #include <boost/multiprecision/mpfr.hpp>
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+#include <boost/multiprecision/logged_adapter.hpp>
+#endif
 
 #include <boost/math/special_functions.hpp>
 
@@ -141,6 +146,10 @@
 #ifdef TEST_CPP_DEC_FLOAT_NO_ET
    test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+ typedef boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
 }
 
 int main()

Modified: trunk/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp
==============================================================================
--- trunk/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp (original)
+++ trunk/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -18,7 +18,8 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
    && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
- && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET)
+ && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
+ && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
 # define TEST_MPF_50
 # define TEST_BACKEND
 # define TEST_MPZ
@@ -29,6 +30,7 @@
 # define TEST_MPFR_30
 # define TEST_CPP_DEC_FLOAT
 # define TEST_CPP_DEC_FLOAT_NO_ET
+# define TEST_LOGGED_ADAPTER
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,12 +47,15 @@
 #ifdef TEST_BACKEND
 #include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
 #endif
-#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET)
+#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
 #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
 #include <boost/multiprecision/mpfr.hpp>
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+# include <boost/multiprecision/logged_adapter.hpp>
+#endif
 
 #include <boost/math/special_functions.hpp>
 
@@ -108,6 +113,10 @@
 #ifdef TEST_CPP_DEC_FLOAT_NO_ET
    test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+ typedef boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
 }
 
 int main()

Modified: trunk/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp
==============================================================================
--- trunk/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp (original)
+++ trunk/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -18,7 +18,8 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
    && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
- && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET)
+ && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
+ && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
 # define TEST_MPF_50
 # define TEST_BACKEND
 # define TEST_MPZ
@@ -29,6 +30,7 @@
 # define TEST_MPFR_30
 # define TEST_CPP_DEC_FLOAT
 # define TEST_CPP_DEC_FLOAT_NO_ET
+# define TEST_LOGGED_ADAPTER
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,12 +47,15 @@
 #ifdef TEST_BACKEND
 #include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
 #endif
-#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET)
+#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
 #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
 #include <boost/multiprecision/mpfr.hpp>
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+#include <boost/multiprecision/logged_adapter.hpp>
+#endif
 
 #include <boost/math/special_functions.hpp>
 
@@ -112,6 +117,10 @@
 #ifdef TEST_CPP_DEC_FLOAT_NO_ET
    test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+ typedef boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
 }
 
 int main()

Modified: trunk/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp
==============================================================================
--- trunk/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp (original)
+++ trunk/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -18,7 +18,8 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
    && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
- && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET)
+ && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
+ && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
 # define TEST_MPF_50
 # define TEST_BACKEND
 # define TEST_MPZ
@@ -29,6 +30,7 @@
 # define TEST_MPFR_30
 # define TEST_CPP_DEC_FLOAT
 # define TEST_CPP_DEC_FLOAT_NO_ET
+# define TEST_LOGGED_ADAPTER
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,12 +47,15 @@
 #ifdef TEST_BACKEND
 #include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
 #endif
-#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET)
+#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
 #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
 #include <boost/multiprecision/mpfr.hpp>
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+#include <boost/multiprecision/logged_adapter.hpp>
+#endif
 
 #include <boost/math/special_functions.hpp>
 
@@ -130,6 +135,10 @@
 #ifdef TEST_CPP_DEC_FLOAT_NO_ET
    test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+ typedef boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
 }
 
 int main()

Modified: trunk/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp
==============================================================================
--- trunk/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp (original)
+++ trunk/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -18,7 +18,8 @@
 
 #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) \
    && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)\
- && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET)
+ && !defined(TEST_MPFR_6) && !defined(TEST_MPFR_15) && !defined(TEST_MPFR_17) \
+ && !defined(TEST_MPFR_30) && !defined(TEST_CPP_DEC_FLOAT_NO_ET) && !defined(TEST_LOGGED_ADAPTER)
 # define TEST_MPF_50
 # define TEST_BACKEND
 # define TEST_MPZ
@@ -29,6 +30,7 @@
 # define TEST_MPFR_30
 # define TEST_CPP_DEC_FLOAT
 # define TEST_CPP_DEC_FLOAT_NO_ET
+# define TEST_LOGGED_ADAPTER
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -45,12 +47,15 @@
 #ifdef TEST_BACKEND
 #include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
 #endif
-#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET)
+#if defined(TEST_CPP_DEC_FLOAT) || defined(TEST_CPP_DEC_FLOAT_NO_ET) || defined(TEST_LOGGED_ADAPTER)
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #endif
 #if defined(TEST_MPFR_50) || defined(TEST_MPFR_6) || defined(TEST_MPFR_15) || defined(TEST_MPFR_17) || defined(TEST_MPFR_30)
 #include <boost/multiprecision/mpfr.hpp>
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+#include <boost/multiprecision/logged_adapter.hpp>
+#endif
 
 #include <boost/math/special_functions.hpp>
 
@@ -103,6 +108,10 @@
 #ifdef TEST_CPP_DEC_FLOAT_NO_ET
    test_extra(boost::multiprecision::number<boost::multiprecision::cpp_dec_float<100>, boost::multiprecision::et_off>());
 #endif
+#ifdef TEST_LOGGED_ADAPTER
+ typedef boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
 }
 
 int main()

Added: trunk/libs/multiprecision/test/test_arithmetic_logged_1.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/test/test_arithmetic_logged_1.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,19 @@
+///////////////////////////////////////////////////////////////
+// Copyright 2012 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_
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/multiprecision/logged_adapter.hpp>
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#include "test_arithmetic.hpp"
+
+int main()
+{
+ test<boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_dec_float<50> > > >();
+ return boost::report_errors();
+}
+

Added: trunk/libs/multiprecision/test/test_arithmetic_logged_2.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/multiprecision/test/test_arithmetic_logged_2.cpp 2013-01-15 04:25:05 EST (Tue, 15 Jan 2013)
@@ -0,0 +1,19 @@
+///////////////////////////////////////////////////////////////
+// Copyright 2012 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_
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/multiprecision/logged_adapter.hpp>
+#include <boost/multiprecision/cpp_int.hpp>
+#include "test_arithmetic.hpp"
+
+int main()
+{
+ test<boost::multiprecision::number<boost::multiprecision::logged_adapter<boost::multiprecision::cpp_int_backend<> > > >();
+ return boost::report_errors();
+}
+


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