|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r83516 - in branches/release: boost/multiprecision boost/multiprecision/concepts boost/multiprecision/cpp_int boost/multiprecision/detail boost/multiprecision/traits libs/multiprecision libs/multiprecision/config 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/ints/egs libs/multiprecision/doc/html/boost_multiprecision/tut/misc libs/multiprecision/doc/html/boost_multiprecision/tut/rational libs/multiprecision/example libs/multiprecision/performance libs/multiprecision/test libs/multiprecision/test/compile_fail libs/multiprecision/test/concepts libs/multiprecision/test/coverage libs/multiprecision/test/math libs/multiprecision/test/ublas_interop
From: john_at_[hidden]
Date: 2013-03-22 09:03:06
Author: johnmaddock
Date: 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
New Revision: 83516
URL: http://svn.boost.org/trac/boost/changeset/83516
Log:
Merge changes from Trunk.
Added:
branches/release/boost/multiprecision/debug_adaptor.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/debug_adaptor.hpp
branches/release/boost/multiprecision/detail/dynamic_array.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/detail/dynamic_array.hpp
branches/release/boost/multiprecision/detail/rebind.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/detail/rebind.hpp
branches/release/boost/multiprecision/detail/ublas_interop.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/detail/ublas_interop.hpp
branches/release/boost/multiprecision/detail/utype_helper.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/detail/utype_helper.hpp
branches/release/boost/multiprecision/logged_adaptor.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/logged_adaptor.hpp
branches/release/boost/multiprecision/mpfi.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/mpfi.hpp
branches/release/boost/multiprecision/rational_adaptor.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/rational_adaptor.hpp
branches/release/boost/multiprecision/traits/extract_exponent_type.hpp
- copied unchanged from r83515, /trunk/boost/multiprecision/traits/extract_exponent_type.hpp
branches/release/libs/multiprecision/config/has_mpfi.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/config/has_mpfi.cpp
branches/release/libs/multiprecision/doc/debugger1.png
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/debugger1.png
branches/release/libs/multiprecision/doc/debugger2.png
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/debugger2.png
branches/release/libs/multiprecision/doc/debugger3.png
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/debugger3.png
branches/release/libs/multiprecision/doc/debugger4.png
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/debugger4.png
branches/release/libs/multiprecision/doc/debugger5.png
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/debugger5.png
branches/release/libs/multiprecision/doc/debugger6.png
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/debugger6.png
branches/release/libs/multiprecision/doc/debugger7.png
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/debugger7.png
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/
- copied from r83515, /trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval/
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/interval.html
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/
- copied from r83515, /trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc/
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/misc.html
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adaptor.html
- copied unchanged from r83515, /trunk/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adaptor.html
branches/release/libs/multiprecision/example/debug_adaptor_snips.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/example/debug_adaptor_snips.cpp
branches/release/libs/multiprecision/example/logged_adaptor.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/example/logged_adaptor.cpp
branches/release/libs/multiprecision/example/mpfi_snips.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/example/mpfi_snips.cpp
branches/release/libs/multiprecision/test/compile_fail/conv_fail_59.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/compile_fail/conv_fail_59.cpp
branches/release/libs/multiprecision/test/test_arithmetic_dbg_adptr1.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_arithmetic_dbg_adptr1.cpp
branches/release/libs/multiprecision/test/test_arithmetic_dbg_adptr2.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_arithmetic_dbg_adptr2.cpp
branches/release/libs/multiprecision/test/test_arithmetic_logged_1.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_arithmetic_logged_1.cpp
branches/release/libs/multiprecision/test/test_arithmetic_logged_2.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_arithmetic_logged_2.cpp
branches/release/libs/multiprecision/test/test_arithmetic_mpfi_50.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_arithmetic_mpfi_50.cpp
branches/release/libs/multiprecision/test/test_arithmetic_mpfr_50_static.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_arithmetic_mpfr_50_static.cpp
branches/release/libs/multiprecision/test/test_cpp_dec_float_round.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_cpp_dec_float_round.cpp
branches/release/libs/multiprecision/test/test_mpfi.cpp
- copied unchanged from r83515, /trunk/libs/multiprecision/test/test_mpfi.cpp
Removed:
branches/release/boost/multiprecision/rational_adapter.hpp
Properties modified:
branches/release/boost/multiprecision/ (props changed)
branches/release/libs/multiprecision/ (props changed)
Text files modified:
branches/release/boost/multiprecision/concepts/mp_number_archetypes.hpp | 2
branches/release/boost/multiprecision/cpp_dec_float.hpp | 97 ++++----
branches/release/boost/multiprecision/cpp_int.hpp | 60 +++++
branches/release/boost/multiprecision/cpp_int/add.hpp | 22 +
branches/release/boost/multiprecision/cpp_int/comparison.hpp | 13 +
branches/release/boost/multiprecision/cpp_int/divide.hpp | 25 +
branches/release/boost/multiprecision/cpp_int/misc.hpp | 14 +
branches/release/boost/multiprecision/detail/default_ops.hpp | 28 +-
branches/release/boost/multiprecision/detail/et_ops.hpp | 42 +-
branches/release/boost/multiprecision/detail/integer_ops.hpp | 24 +-
branches/release/boost/multiprecision/detail/number_base.hpp | 63 ++++-
branches/release/boost/multiprecision/mpfr.hpp | 80 ++++++-
branches/release/boost/multiprecision/number.hpp | 138 +++++-------
branches/release/boost/multiprecision/tommath.hpp | 4
branches/release/libs/multiprecision/config/Jamfile.v2 | 9
branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html | 69 +++++-
branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html | 38 ++-
branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html | 29 +
branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html | 141 ++++++++++--
branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html | 36 +++
branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html | 4
branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html | 6
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html | 6
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html | 13 +
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html | 8
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html | 8
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html | 6
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html | 16
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html | 8
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html | 4
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html | 16
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html | 2
branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html | 2
branches/release/libs/multiprecision/doc/html/index.html | 13 +
branches/release/libs/multiprecision/doc/multiprecision.qbk | 309 +++++++++++++++++++++++++++-
branches/release/libs/multiprecision/performance/performance_test.cpp | 4
branches/release/libs/multiprecision/test/Jamfile.v2 | 431 ++++++++-------------------------------
branches/release/libs/multiprecision/test/concepts/number_concept_check.cpp | 13 +
branches/release/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp | 13 +
branches/release/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp | 13 +
branches/release/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp | 13 +
branches/release/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp | 13 +
branches/release/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp | 13 +
branches/release/libs/multiprecision/test/coverage/Makefile | 2
branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp | 10
branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp | 10
branches/release/libs/multiprecision/test/math/test_bessel_i.cpp | 5
branches/release/libs/multiprecision/test/math/test_bessel_j.cpp | 5
branches/release/libs/multiprecision/test/math/test_bessel_k.cpp | 5
branches/release/libs/multiprecision/test/math/test_bessel_y.cpp | 5
branches/release/libs/multiprecision/test/math/test_beta.cpp | 5
branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp | 5
branches/release/libs/multiprecision/test/math/test_carlson.cpp | 5
branches/release/libs/multiprecision/test/math/test_cbrt.cpp | 5
branches/release/libs/multiprecision/test/math/test_digamma.cpp | 5
branches/release/libs/multiprecision/test/math/test_ellint_1.cpp | 5
branches/release/libs/multiprecision/test/math/test_ellint_2.cpp | 5
branches/release/libs/multiprecision/test/math/test_ellint_3.cpp | 5
branches/release/libs/multiprecision/test/math/test_erf.cpp | 5
branches/release/libs/multiprecision/test/math/test_expint.cpp | 5
branches/release/libs/multiprecision/test/math/test_gamma.cpp | 5
branches/release/libs/multiprecision/test/math/test_hermite.cpp | 5
branches/release/libs/multiprecision/test/math/test_ibeta.cpp | 5
branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp | 5
branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp | 5
branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp | 5
branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp | 5
branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp | 5
branches/release/libs/multiprecision/test/math/test_igamma.cpp | 5
branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp | 5
branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp | 5
branches/release/libs/multiprecision/test/math/test_laguerre.cpp | 5
branches/release/libs/multiprecision/test/math/test_legendre.cpp | 5
branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp | 5
branches/release/libs/multiprecision/test/math/test_zeta.cpp | 5
branches/release/libs/multiprecision/test/test.hpp | 12 +
branches/release/libs/multiprecision/test/test_acos.cpp | 10
branches/release/libs/multiprecision/test/test_arithmetic_mpfr_50.cpp | 1
branches/release/libs/multiprecision/test/test_arithmetic_mpz.cpp | 4
branches/release/libs/multiprecision/test/test_arithmetic_tommath.cpp | 2
branches/release/libs/multiprecision/test/test_asin.cpp | 10
branches/release/libs/multiprecision/test/test_atan.cpp | 20 +
branches/release/libs/multiprecision/test/test_cos.cpp | 10
branches/release/libs/multiprecision/test/test_cosh.cpp | 10
branches/release/libs/multiprecision/test/test_cpp_int.cpp | 78 +++++++
branches/release/libs/multiprecision/test/test_exp.cpp | 10
branches/release/libs/multiprecision/test/test_float_io.cpp | 13 +
branches/release/libs/multiprecision/test/test_fpclassify.cpp | 10
branches/release/libs/multiprecision/test/test_log.cpp | 11
branches/release/libs/multiprecision/test/test_mixed_cpp_int.cpp | 29 ++
branches/release/libs/multiprecision/test/test_numeric_limits.cpp | 10
branches/release/libs/multiprecision/test/test_pow.cpp | 10
branches/release/libs/multiprecision/test/test_rational_io.cpp | 4
branches/release/libs/multiprecision/test/test_round.cpp | 29 ++
branches/release/libs/multiprecision/test/test_sin.cpp | 12
branches/release/libs/multiprecision/test/test_sinh.cpp | 12
branches/release/libs/multiprecision/test/test_sqrt.cpp | 12
branches/release/libs/multiprecision/test/test_tan.cpp | 11
branches/release/libs/multiprecision/test/test_tanh.cpp | 12
branches/release/libs/multiprecision/test/ublas_interop/test1.hpp | 6
branches/release/libs/multiprecision/test/ublas_interop/test2.hpp | 6
branches/release/libs/multiprecision/test/ublas_interop/test3.hpp | 6
branches/release/libs/multiprecision/test/ublas_interop/test4.hpp | 6
branches/release/libs/multiprecision/test/ublas_interop/test5.hpp | 6
branches/release/libs/multiprecision/test/ublas_interop/test6.hpp | 30 ++
branches/release/libs/multiprecision/test/ublas_interop/test7.hpp | 7
branches/release/libs/multiprecision/test/ublas_interop/test71.cpp | 4
148 files changed, 1647 insertions(+), 883 deletions(-)
Modified: branches/release/boost/multiprecision/concepts/mp_number_archetypes.hpp
==============================================================================
--- branches/release/boost/multiprecision/concepts/mp_number_archetypes.hpp (original)
+++ branches/release/boost/multiprecision/concepts/mp_number_archetypes.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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: branches/release/boost/multiprecision/cpp_dec_float.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_dec_float.hpp (original)
+++ branches/release/boost/multiprecision/cpp_dec_float.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,18 @@
#ifndef BOOST_MP_CPP_DEC_FLOAT_BACKEND_HPP
#define BOOST_MP_CPP_DEC_FLOAT_BACKEND_HPP
+#include <boost/config.hpp>
#include <boost/cstdint.hpp>
+#include <limits>
+#ifndef BOOST_NO_CXX11_HDR_ARRAY
+#include <array>
+#else
#include <boost/array.hpp>
+#endif
+#include <boost/cstdint.hpp>
#include <boost/multiprecision/number.hpp>
#include <boost/multiprecision/detail/big_lanczos.hpp>
-#include <vector>
+#include <boost/multiprecision/detail/dynamic_array.hpp>
//
// Headers required for Boost.Math integration:
@@ -41,32 +48,6 @@
namespace backends{
-namespace detail{
-
-template <class T, class Allocator>
-struct rebind
-{
- typedef typename Allocator::template rebind<T>::other type;
-};
-
-template <class T, unsigned S, class Allocator>
-struct dynamic_array : public std::vector<T, typename rebind<T, Allocator>::type>
-{
- dynamic_array()
- : std::vector<T, typename rebind<T, Allocator>::type>(static_cast<typename std::vector<T, typename rebind<T, Allocator>::type>::size_type>(S), static_cast<T>(0)) {}
-
- T* data()
- {
- return &*this->begin();
- }
- const T* data()const
- {
- return &*this->begin();
- }
-};
-
-}
-
template <unsigned Digits10, class ExponentType, class Allocator>
class cpp_dec_float
{
@@ -74,8 +55,8 @@
static const boost::int32_t cpp_dec_float_digits10_setting = Digits10;
// We need at least 16-bits in the exponent type to do anything sensible:
- BOOST_STATIC_ASSERT_MSG(sizeof(ExponentType) > 1, "ExponentType is too small.");
BOOST_STATIC_ASSERT_MSG(boost::is_signed<ExponentType>::value, "ExponentType must be a signed built in integer type.");
+ BOOST_STATIC_ASSERT_MSG(sizeof(ExponentType) > 1, "ExponentType is too small.");
public:
typedef mpl::list<long long> signed_types;
@@ -124,10 +105,17 @@
}
fpclass_type;
+#ifndef BOOST_NO_CXX11_HDR_ARRAY
+ typedef typename mpl::if_<is_void<Allocator>,
+ std::array<boost::uint32_t, cpp_dec_float_elem_number>,
+ detail::dynamic_array<boost::uint32_t, cpp_dec_float_elem_number, Allocator>
+ >::type array_type;
+#else
typedef typename mpl::if_<is_void<Allocator>,
boost::array<boost::uint32_t, cpp_dec_float_elem_number>,
detail::dynamic_array<boost::uint32_t, cpp_dec_float_elem_number, Allocator>
>::type array_type;
+#endif
array_type data;
ExponentType exp;
@@ -1709,12 +1697,9 @@
// Thus the integer part is zero.
return zero();
}
- else if(exp >= static_cast<ExponentType>(Digits10 - 1))
- {
- // The number is too large to resolve the integer part.
- // Thus it is already a pure integer part.
- return *this;
- }
+
+ // Truncate the digits from the decimal part, including guard digits
+ // that do not belong to the integer part.
// Make a local copy.
cpp_dec_float<Digits10, ExponentType, Allocator> x = *this;
@@ -2206,7 +2191,7 @@
}
template <unsigned Digits10, class ExponentType, class Allocator>
-cpp_dec_float<Digits10, ExponentType, Allocator>& cpp_dec_float<Digits10, ExponentType, Allocator>::operator = (long double a)
+cpp_dec_float<Digits10, ExponentType, Allocator>& cpp_dec_float<Digits10, ExponentType, Allocator>::operator= (long double a)
{
// Christopher Kormanyos's original code used a cast to long long here, but that fails
// when long double has more digits than a long long.
@@ -2613,26 +2598,23 @@
cpp_dec_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38")
}};
- if((p > static_cast<ExponentType>(-128)) && (p < static_cast<ExponentType>(+128)))
+ if((p > static_cast<long long>(-128)) && (p < static_cast<long long>(+128)))
{
return p2_data[static_cast<std::size_t>(p + ((p2_data.size() - 1u) / 2u))];
}
-
- // Compute and return 2^p.
- if(p < static_cast<ExponentType>(0))
- {
- return pow2(static_cast<ExponentType>(-p)).calculate_inv();
- }
- else if(p < static_cast<ExponentType>(std::numeric_limits<boost::uint64_t>::digits))
- {
- const boost::uint64_t p2 = static_cast<boost::uint64_t>(static_cast<boost::uint64_t>(1uLL) << p);
- return cpp_dec_float(p2);
- }
else
{
- cpp_dec_float<Digits10, ExponentType, Allocator> t;
- default_ops::detail::pow_imp(t, two(), p, mpl::true_());
- return t;
+ // Compute and return 2^p.
+ if(p < static_cast<long long>(0))
+ {
+ return pow2(static_cast<long long>(-p)).calculate_inv();
+ }
+ else
+ {
+ cpp_dec_float<Digits10, ExponentType, Allocator> t;
+ default_ops::detail::pow_imp(t, two(), p, mpl::true_());
+ return t;
+ }
}
}
@@ -2805,7 +2787,7 @@
{
if(!x.isfinite())
{
- result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number<cpp_dec_float<Digits10, ExponentType, Allocator> >(x), 0, boost::math::policies::policy<>()).backend();
+ result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number<cpp_dec_float<Digits10, ExponentType, Allocator> >(x), number<cpp_dec_float<Digits10, ExponentType, Allocator> >(x), boost::math::policies::policy<>()).backend();
return;
}
else if(x.isint())
@@ -2819,10 +2801,19 @@
template <unsigned Digits10, class ExponentType, class Allocator, class ArgType>
inline void eval_ldexp(cpp_dec_float<Digits10, ExponentType, Allocator>& result, const cpp_dec_float<Digits10, ExponentType, Allocator>& x, ArgType e)
{
- if((static_cast<long long>(e) > (std::numeric_limits<ExponentType>::max)()) || (static_cast<long long>(e) < (std::numeric_limits<ExponentType>::min)()))
+ const long long the_exp = static_cast<long long>(e);
+
+ if((the_exp > (std::numeric_limits<ExponentType>::max)()) || (the_exp < (std::numeric_limits<ExponentType>::min)()))
BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Exponent value is out of range.")));
+
result = x;
- result *= cpp_dec_float<Digits10, ExponentType, Allocator>::pow2(e);
+
+ if ((the_exp > static_cast<long long>(-std::numeric_limits<long long>::digits)) && (the_exp < static_cast<long long>(0)))
+ result.div_unsigned_long_long(1ULL << static_cast<long long>(-the_exp));
+ else if((the_exp < static_cast<long long>( std::numeric_limits<long long>::digits)) && (the_exp > static_cast<long long>(0)))
+ result.mul_unsigned_long_long(1ULL << the_exp);
+ else if(the_exp != static_cast<long long>(0))
+ result *= cpp_dec_float<Digits10, ExponentType, Allocator>::pow2(e);
}
template <unsigned Digits10, class ExponentType, class Allocator>
Modified: branches/release/boost/multiprecision/cpp_int.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_int.hpp (original)
+++ branches/release/boost/multiprecision/cpp_int.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -15,7 +15,7 @@
#include <boost/type_traits/is_integral.hpp>
#include <boost/type_traits/is_floating_point.hpp>
#include <boost/multiprecision/cpp_int/cpp_int_config.hpp>
-#include <boost/multiprecision/rational_adapter.hpp>
+#include <boost/multiprecision/rational_adaptor.hpp>
#include <boost/detail/endian.hpp>
#include <boost/integer/static_min_max.hpp>
#include <boost/type_traits/common_type.hpp>
@@ -249,7 +249,11 @@
// Allocate a new buffer and copy everything over:
cap = (std::min)((std::max)(cap * 4, new_size), max_limbs);
limb_pointer pl = allocator().allocate(cap);
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(limbs(), limbs() + size(), stdext::checked_array_iterator<limb_pointer>(pl, cap));
+#else
std::copy(limbs(), limbs() + size(), pl);
+#endif
if(!m_internal)
allocator().deallocate(limbs(), capacity());
else
@@ -272,7 +276,11 @@
BOOST_MP_FORCEINLINE cpp_int_base(const cpp_int_base& o) : allocator_type(o), m_limbs(0), m_internal(true)
{
resize(o.size(), o.size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
m_sign = o.m_sign;
}
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
@@ -281,7 +289,11 @@
{
if(m_internal)
{
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
}
else
{
@@ -300,7 +312,11 @@
m_internal = o.m_internal;
if(m_internal)
{
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
}
else
{
@@ -323,7 +339,11 @@
static_cast<allocator_type&>(*this) = static_cast<const allocator_type&>(o);
m_limbs = 0;
resize(o.size(), o.size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
m_sign = o.m_sign;
}
}
@@ -461,7 +481,11 @@
BOOST_MP_FORCEINLINE BOOST_CONSTEXPR cpp_int_base() : m_wrapper(limb_type(0u)), m_limbs(1), m_sign(false) {}
BOOST_MP_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT : m_limbs(o.m_limbs), m_sign(o.m_sign)
{
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
}
//~cpp_int_base() BOOST_NOEXCEPT {}
void assign(const cpp_int_base& o) BOOST_NOEXCEPT
@@ -469,7 +493,11 @@
if(this != &o)
{
resize(o.size(), o.size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
m_sign = o.m_sign;
}
}
@@ -585,7 +613,11 @@
BOOST_MP_FORCEINLINE cpp_int_base(const cpp_int_base& o) BOOST_NOEXCEPT
: m_limbs(o.m_limbs)
{
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
}
//~cpp_int_base() BOOST_NOEXCEPT {}
BOOST_MP_FORCEINLINE void assign(const cpp_int_base& o) BOOST_NOEXCEPT
@@ -593,7 +625,11 @@
if(this != &o)
{
resize(o.size(), o.size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(o.limbs(), o.limbs() + o.size(), stdext::checked_array_iterator<limb_pointer>(limbs(), size()));
+#else
std::copy(o.limbs(), o.limbs() + o.size(), limbs());
+#endif
}
}
private:
@@ -1018,7 +1054,11 @@
{
// regular non-trivial to non-trivial assign:
this->resize(other.size(), other.size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), stdext::checked_array_iterator<limb_pointer>(this->limbs(), this->size()));
+#else
std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs());
+#endif
this->sign(other.sign());
this->normalize();
}
@@ -1093,7 +1133,11 @@
: base_type()
{
this->resize(other.size(), other_size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), stdext::checked_array_iterator<limb_pointer>(this->limbs(), this->size()));
+#else
std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs());
+#endif
this->sign(other.sign());
}
@@ -1125,7 +1169,11 @@
: base_type()
{
this->resize(other.size(), other.size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), stdext::checked_array_iterator<limb_pointer>(this->limbs(), this->size()));
+#else
std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs());
+#endif
this->sign(other.sign());
}
@@ -1152,7 +1200,11 @@
operator=(const cpp_int_backend<MinBits2, MaxBits2, SignType2, Allocator2>& other)
{
this->resize(other.size(), other.size());
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), stdext::checked_array_iterator<limb_pointer>(this->limbs(), this->size()));
+#else
std::copy(other.limbs(), other.limbs() + (std::min)(other.size(), this->size()), this->limbs());
+#endif
this->sign(other.sign());
return *this;
}
@@ -1731,7 +1783,7 @@
} // namespace backends
-namespace detail{
+namespace default_ops{
template <class Backend>
struct double_precision_type;
@@ -1768,7 +1820,7 @@
struct number_category<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator> > : public mpl::int_<number_kind_integer>{};
typedef number<cpp_int_backend<> > cpp_int;
-typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend;
+typedef rational_adaptor<cpp_int_backend<> > cpp_rational_backend;
typedef number<cpp_rational_backend> cpp_rational;
// Fixed precision unsigned types:
@@ -1785,7 +1837,7 @@
// Over again, but with checking enabled this time:
typedef number<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_int;
-typedef rational_adapter<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend;
+typedef rational_adaptor<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend;
typedef number<cpp_rational_backend> checked_cpp_rational;
// Fixed precision unsigned types:
typedef number<cpp_int_backend<128, 128, unsigned_magnitude, checked, void> > checked_uint128_t;
Modified: branches/release/boost/multiprecision/cpp_int/add.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_int/add.hpp (original)
+++ branches/release/boost/multiprecision/cpp_int/add.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -55,7 +55,11 @@
if(!carry)
{
if(pa != pr)
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(pa, pa + (pr_end - pr), stdext::checked_array_iterator<limb_type*>(pr, result.size()));
+#else
std::copy(pa, pa + (pr_end - pr), pr);
+#endif
break;
}
carry += static_cast<double_limb_type>(*pa);
@@ -180,7 +184,11 @@
}
// Any remaining digits are the same as those in pa:
if((x != i) && (pa != pr))
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(pa + i, pa + x, stdext::checked_array_iterator<limb_type*>(pr + i, result.size() - i));
+#else
std::copy(pa + i, pa + x, pr + i);
+#endif
BOOST_ASSERT(0 == borrow);
//
@@ -203,14 +211,22 @@
result.resize(a.size(), a.size());
typename CppInt1::limb_pointer pr = result.limbs();
typename CppInt2::const_limb_pointer pa = a.limbs();
- if(*pa > b)
+ if(*pa >= b)
{
*pr = *pa - b;
if(&result != &a)
{
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(pa + 1, pa + a.size(), stdext::checked_array_iterator<limb_type*>(pr + 1, result.size() - 1));
+#else
std::copy(pa + 1, pa + a.size(), pr + 1);
+#endif
result.sign(a.sign());
}
+ else if((result.size() == 1) && (*pr == 0))
+ {
+ result.sign(false); // zero is unsigned.
+ }
}
else if(result.size() == 1)
{
@@ -230,7 +246,11 @@
if(&result != &a)
{
++i;
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ std::copy(pa + i, pa + a.size(), stdext::checked_array_iterator<limb_type*>(pr + i, result.size() - i));
+#else
std::copy(pa + i, pa + a.size(), pr + i);
+#endif
}
result.normalize();
result.sign(a.sign());
Modified: branches/release/boost/multiprecision/cpp_int/comparison.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_int/comparison.hpp (original)
+++ branches/release/boost/multiprecision/cpp_int/comparison.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -27,9 +27,16 @@
>::type
eval_eq(const cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& a, const cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>& b) BOOST_NOEXCEPT
{
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ return (a.sign() == b.sign())
+ && (a.size() == b.size())
+ && std::equal(a.limbs(), a.limbs() + a.size(),
+ stdext::checked_array_iterator<cpp_int_backend<MinBits, MaxBits, SignType, Checked, Allocator>::const_limb_pointer>(b.limbs(), b.size()));
+#else
return (a.sign() == b.sign())
&& (a.size() == b.size())
&& std::equal(a.limbs(), a.limbs() + a.size(), b.limbs());
+#endif
}
template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
BOOST_MP_FORCEINLINE typename enable_if_c<
@@ -39,9 +46,15 @@
>::type
eval_eq(const cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& a, const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& b) BOOST_NOEXCEPT
{
+#if BOOST_WORKAROUND(BOOST_MSVC, >= 1600)
+ return (a.sign() == b.sign())
+ && (a.size() == b.size())
+ && std::equal(a.limbs(), a.limbs() + a.size(), stdext::checked_array_iterator<cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>::const_limb_pointer>(b.limbs(), b.size()));
+#else
return (a.sign() == b.sign())
&& (a.size() == b.size())
&& std::equal(a.limbs(), a.limbs() + a.size(), b.limbs());
+#endif
}
template <unsigned MinBits, unsigned MaxBits, cpp_int_check_type Checked, class Allocator>
BOOST_MP_FORCEINLINE typename enable_if_c<
Modified: branches/release/boost/multiprecision/cpp_int/divide.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_int/divide.hpp (original)
+++ branches/release/boost/multiprecision/cpp_int/divide.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -114,7 +114,9 @@
if(r_order == 0)
{
if(result)
+ {
*result = px[0] / py[0];
+ }
r = px[0] % py[0];
return;
}
@@ -126,7 +128,9 @@
(static_cast<double_limb_type>(py[1]) << CppInt1::limb_bits) | py[0]
: py[0];
if(result)
+ {
*result = a / b;
+ }
r = a % b;
return;
}
@@ -332,11 +336,6 @@
r.sign(false);
typename CppInt1::limb_pointer pr = r.limbs();
- if((r_order == 0) && (*pr == 0))
- {
- // All the limbs in x are zero, so is the result:
- return;
- }
//
// check for x < y, try to do this without actually having to
// do a full comparison:
@@ -446,8 +445,9 @@
const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b)
{
cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> r;
+ bool s = a.sign() != b.sign();
divide_unsigned_helper(&result, a, b, r);
- result.sign(a.sign() != b.sign());
+ result.sign(s);
}
template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
@@ -458,7 +458,9 @@
limb_type& b)
{
cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> r;
+ bool s = a.sign();
divide_unsigned_helper(&result, a, b, r);
+ result.sign(s);
}
template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
@@ -469,9 +471,9 @@
signed_limb_type& b)
{
cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1> r;
+ bool s = a.sign() != (b < 0);
divide_unsigned_helper(&result, a, static_cast<limb_type>(std::abs(b)), r);
- if(b < 0)
- result.negate();
+ result.sign(s);
}
template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
@@ -514,8 +516,9 @@
const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
const cpp_int_backend<MinBits3, MaxBits3, SignType3, Checked3, Allocator3>& b)
{
+ bool s = a.sign();
divide_unsigned_helper(static_cast<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>* >(0), a, b, result);
- result.sign(a.sign());
+ result.sign(s);
}
template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
@@ -524,7 +527,9 @@
cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>& result,
const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a, limb_type b)
{
+ bool s = a.sign();
divide_unsigned_helper(static_cast<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>* >(0), a, b, result);
+ result.sign(s);
}
template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
@@ -534,7 +539,9 @@
const cpp_int_backend<MinBits2, MaxBits2, SignType2, Checked2, Allocator2>& a,
signed_limb_type b)
{
+ bool s = a.sign();
divide_unsigned_helper(static_cast<cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>* >(0), a, static_cast<limb_type>(std::abs(b)), result);
+ result.sign(s);
}
template <unsigned MinBits1, unsigned MaxBits1, cpp_integer_type SignType1, cpp_int_check_type Checked1, class Allocator1, unsigned MinBits2, unsigned MaxBits2, cpp_integer_type SignType2, cpp_int_check_type Checked2, class Allocator2>
Modified: branches/release/boost/multiprecision/cpp_int/misc.hpp
==============================================================================
--- branches/release/boost/multiprecision/cpp_int/misc.hpp (original)
+++ branches/release/boost/multiprecision/cpp_int/misc.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -379,9 +379,16 @@
{
/* Now u and v are both odd, so diff(u, v) is even.
Let u = min(u, v), v = diff(u, v)/2. */
- if(u.size() == 1)
+ if(u.size() <= 2)
{
- v = integer_gcd_reduce(*u.limbs(), v);
+ if(u.size() == 1)
+ v = integer_gcd_reduce(*u.limbs(), v);
+ else
+ {
+ double_limb_type i;
+ i = u.limbs()[0] | (static_cast<double_limb_type>(u.limbs()[1]) << sizeof(limb_type) * CHAR_BIT);
+ v = static_cast<limb_type>(integer_gcd_reduce(i, static_cast<double_limb_type>(v)));
+ }
break;
}
eval_subtract(u, v);
@@ -431,6 +438,7 @@
if(b.size() == 1)
{
eval_gcd(result, a, *b.limbs());
+ return;
}
int shift;
@@ -579,7 +587,7 @@
//
// Find the index of the least significant bit within that limb:
//
- return find_lsb(*a.limbs(), mpl::int_<CHAR_BIT * sizeof(cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::local_limb_type)>());
+ return find_lsb(*a.limbs(), mpl::int_<CHAR_BIT * sizeof(typename cpp_int_backend<MinBits1, MaxBits1, SignType1, Checked1, Allocator1>::local_limb_type)>());
}
#ifdef BOOST_MSVC
Modified: branches/release/boost/multiprecision/detail/default_ops.hpp
==============================================================================
--- branches/release/boost/multiprecision/detail/default_ops.hpp (original)
+++ branches/release/boost/multiprecision/detail/default_ops.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -950,7 +950,7 @@
int c = eval_fpclassify(a);
if(c == FP_NAN || c == FP_INFINITE)
{
- result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number<T>(a), 0, boost::math::policies::policy<>()).backend();
+ result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number<T>(a), number<T>(a), boost::math::policies::policy<>()).backend();
return;
}
if(eval_get_sign(a) < 0)
@@ -967,7 +967,7 @@
int c = eval_fpclassify(a);
if(c == FP_NAN || c == FP_INFINITE)
{
- result = boost::math::policies::raise_rounding_error("boost::multiprecision::round<%1%>(%1%)", 0, number<T>(a), 0, boost::math::policies::policy<>()).backend();
+ result = boost::math::policies::raise_rounding_error("boost::multiprecision::round<%1%>(%1%)", 0, number<T>(a), number<T>(a), boost::math::policies::policy<>()).backend();
return;
}
if(eval_get_sign(a) < 0)
@@ -1250,7 +1250,7 @@
typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
number_type r = trunc(v, pol);
if((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to<int>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, number_type(v), 0, pol);
return r.template convert_to<int>();
}
template <class tag, class A1, class A2, class A3, class A4>
@@ -1263,7 +1263,7 @@
{
number<Backend, ExpressionTemplates> r = trunc(v, pol);
if((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol).template convert_to<int>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::itrunc<%1%>(%1%)", 0, v, 0, pol);
return r.template convert_to<int>();
}
template <class Backend, expression_template_option ExpressionTemplates>
@@ -1277,7 +1277,7 @@
typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
number_type r = trunc(v, pol);
if((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to<long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, number_type(v), 0L, pol);
return r.template convert_to<long>();
}
template <class tag, class A1, class A2, class A3, class A4>
@@ -1290,7 +1290,7 @@
{
number<T, ExpressionTemplates> r = trunc(v, pol);
if((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol).template convert_to<long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::ltrunc<%1%>(%1%)", 0, v, 0L, pol);
return r.template convert_to<long>();
}
template <class T, expression_template_option ExpressionTemplates>
@@ -1305,7 +1305,7 @@
typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
number_type r = trunc(v, pol);
if((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to<long long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, number_type(v), 0LL, pol);
return r.template convert_to<long long>();
}
template <class tag, class A1, class A2, class A3, class A4>
@@ -1318,7 +1318,7 @@
{
number<T, ExpressionTemplates> r = trunc(v, pol);
if((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol).template convert_to<long long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::lltrunc<%1%>(%1%)", 0, v, 0LL, pol);
return r.template convert_to<long long>();
}
template <class T, expression_template_option ExpressionTemplates>
@@ -1348,7 +1348,7 @@
typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
number_type r = round(v, pol);
if((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0, pol).template convert_to<int>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0, pol);
return r.template convert_to<int>();
}
template <class tag, class A1, class A2, class A3, class A4>
@@ -1361,7 +1361,7 @@
{
number<T, ExpressionTemplates> r = round(v, pol);
if((r > (std::numeric_limits<int>::max)()) || r < (std::numeric_limits<int>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol).template convert_to<int>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0, pol);
return r.template convert_to<int>();
}
template <class T, expression_template_option ExpressionTemplates>
@@ -1375,7 +1375,7 @@
typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
number_type r = round(v, pol);
if((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, number_type(v), 0L, pol).template convert_to<long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, number_type(v), 0L, pol);
return r.template convert_to<long>();
}
template <class tag, class A1, class A2, class A3, class A4>
@@ -1388,7 +1388,7 @@
{
number<T, ExpressionTemplates> r = round(v, pol);
if((r > (std::numeric_limits<long>::max)()) || r < (std::numeric_limits<long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol).template convert_to<long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::lround<%1%>(%1%)", 0, v, 0L, pol);
return r.template convert_to<long>();
}
template <class T, expression_template_option ExpressionTemplates>
@@ -1403,7 +1403,7 @@
typedef typename detail::expression<tag, A1, A2, A3, A4>::result_type number_type;
number_type r = round(v, pol);
if((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0LL, pol).template convert_to<long long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, number_type(v), 0LL, pol);
return r.template convert_to<long long>();
}
template <class tag, class A1, class A2, class A3, class A4>
@@ -1416,7 +1416,7 @@
{
number<T, ExpressionTemplates> r = round(v, pol);
if((r > (std::numeric_limits<long long>::max)()) || r < (std::numeric_limits<long long>::min)() || !boost::math::isfinite(v))
- return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol).template convert_to<long long>();
+ return boost::math::policies::raise_rounding_error("boost::multiprecision::iround<%1%>(%1%)", 0, v, 0LL, pol);
return r.template convert_to<long long>();
}
template <class T, expression_template_option ExpressionTemplates>
Modified: branches/release/boost/multiprecision/detail/et_ops.hpp
==============================================================================
--- branches/release/boost/multiprecision/detail/et_ops.hpp (original)
+++ branches/release/boost/multiprecision/detail/et_ops.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -148,16 +148,16 @@
// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries:
//
template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::minus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >
+inline detail::expression<detail::minus, number<B, ET>, Arg1>
operator + (const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
{
- return detail::expression<detail::minus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >(a, b.left_ref());
+ return detail::expression<detail::minus, number<B, ET>, Arg1>(a, b.left_ref());
}
template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
-inline detail::expression<detail::minus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >
+inline detail::expression<detail::minus, number<B, ET>, Arg1>
operator + (const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
{
- return detail::expression<detail::minus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >(b, a.left_ref());
+ return detail::expression<detail::minus, number<B, ET>, Arg1>(b, a.left_ref());
}
template <class B>
inline detail::expression<detail::subtract_immediates, number<B, et_on>, number<B, et_on> >
@@ -250,17 +250,17 @@
// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries:
//
template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::plus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >
+inline detail::expression<detail::plus, number<B, ET>, Arg1>
operator - (const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
{
- return detail::expression<detail::plus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >(a, b.left_ref());
+ return detail::expression<detail::plus, number<B, ET>, Arg1>(a, b.left_ref());
}
template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
-inline detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >
+inline detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, Arg1> >
operator - (const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
{
- return detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >(
- detail::expression<detail::plus, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >(b, a.left_ref()));
+ return detail::expression<detail::negate, detail::expression<detail::plus, number<B, ET>, Arg1> >(
+ detail::expression<detail::plus, number<B, ET>, Arg1>(b, a.left_ref()));
}
template <class B>
inline detail::expression<detail::add_immediates, number<B, et_on>, number<B, et_on> >
@@ -354,18 +354,18 @@
// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries:
//
template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >
+inline detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >
operator * (const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
{
- return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >(
- detail::expression<detail::multiplies, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > (a, b.left_ref()));
+ return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >(
+ detail::expression<detail::multiplies, number<B, ET>, Arg1> (a, b.left_ref()));
}
template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
-inline detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >
+inline detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >
operator * (const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
{
- return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >(
- detail::expression<detail::multiplies, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >(b, a.left_ref()));
+ return detail::expression<detail::negate, detail::expression<detail::multiplies, number<B, ET>, Arg1> >(
+ detail::expression<detail::multiplies, number<B, ET>, Arg1>(b, a.left_ref()));
}
template <class B>
inline detail::expression<detail::negate, detail::expression<detail::multiply_immediates, number<B, et_on>, number<B, et_on> > >
@@ -464,18 +464,18 @@
// Repeat operator for negated arguments: propagate the negation to the top level to avoid temporaries:
//
template <class B, expression_template_option ET, class Arg1, class Arg2, class Arg3, class Arg4>
-inline detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >
+inline detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, Arg1> >
operator / (const number<B, ET>& a, const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& b)
{
- return detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type > >(
- detail::expression<detail::divides, number<B, ET>, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type >(a, b.left_ref()));
+ return detail::expression<detail::negate, detail::expression<detail::divides, number<B, ET>, Arg1> >(
+ detail::expression<detail::divides, number<B, ET>, Arg1>(a, b.left_ref()));
}
template <class Arg1, class Arg2, class Arg3, class Arg4, class B, expression_template_option ET>
-inline detail::expression<detail::negate, detail::expression<detail::divides, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type, number<B, ET> > >
+inline detail::expression<detail::negate, detail::expression<detail::divides, Arg1, number<B, ET> > >
operator / (const detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>& a, const number<B, ET>& b)
{
- return detail::expression<detail::negate, detail::expression<detail::divides, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type, number<B, ET> > >(
- detail::expression<detail::divides, typename detail::expression<detail::negate, Arg1, Arg2, Arg3, Arg4>::left_type, number<B, ET> >(a.left_ref(), b));
+ return detail::expression<detail::negate, detail::expression<detail::divides, Arg1, number<B, ET> > >(
+ detail::expression<detail::divides, Arg1, number<B, ET> >(a.left_ref(), b));
}
template <class B>
inline detail::expression<detail::negate, detail::expression<detail::divide_immediates, number<B, et_on>, number<B, et_on> > >
Modified: branches/release/boost/multiprecision/detail/integer_ops.hpp
==============================================================================
--- branches/release/boost/multiprecision/detail/integer_ops.hpp (original)
+++ branches/release/boost/multiprecision/detail/integer_ops.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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
Modified: branches/release/boost/multiprecision/detail/number_base.hpp
==============================================================================
--- branches/release/boost/multiprecision/detail/number_base.hpp (original)
+++ branches/release/boost/multiprecision/detail/number_base.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -283,13 +283,12 @@
typedef expression<Tag, Arg1, Arg2, Arg3, Arg4> type;
};
-template <class T>
struct unmentionable
{
- static void proc(){}
+ unmentionable* proc(){ return 0; }
};
-typedef void (*unmentionable_type)();
+typedef unmentionable* (unmentionable::*unmentionable_type)();
template <class T>
struct expression_storage
@@ -320,6 +319,7 @@
{
typedef mpl::int_<1> arity;
typedef typename arg_type<Arg1>::type left_type;
+ typedef typename left_type::result_type left_result_type;
typedef typename left_type::result_type result_type;
typedef tag tag_type;
@@ -330,12 +330,19 @@
const Arg1& left_ref()const BOOST_NOEXCEPT { return arg; }
static const unsigned depth = left_type::depth + 1;
-
+#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+ explicit operator bool()const
+ {
+ result_type r(*this);
+ return static_cast<bool>(r);
+ }
+#else
operator unmentionable_type()const
{
result_type r(*this);
- return r ? &unmentionable<void>::proc : 0;
+ return r ? &unmentionable::proc : 0;
}
+#endif
private:
typename expression_storage<Arg1>::type arg;
@@ -355,10 +362,17 @@
static const unsigned depth = 0;
+#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+ explicit operator bool()const
+ {
+ return static_cast<bool>(arg);
+ }
+#else
operator unmentionable_type()const
{
- return arg ? &unmentionable<void>::proc : 0;
+ return arg ? &unmentionable::proc : 0;
}
+#endif
private:
typename expression_storage<Arg1>::type arg;
@@ -383,12 +397,19 @@
const Arg1& left_ref()const BOOST_NOEXCEPT { return arg1; }
const Arg2& right_ref()const BOOST_NOEXCEPT { return arg2; }
+#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+ explicit operator bool()const
+ {
+ result_type r(*this);
+ return static_cast<bool>(r);
+ }
+#else
operator unmentionable_type()const
{
result_type r(*this);
- return r ? &unmentionable<void>::proc : 0;
+ return r ? &unmentionable::proc : 0;
}
-
+#endif
static const unsigned left_depth = left_type::depth + 1;
static const unsigned right_depth = right_type::depth + 1;
static const unsigned depth = left_depth > right_depth ? left_depth : right_depth;
@@ -423,12 +444,19 @@
const Arg2& middle_ref()const BOOST_NOEXCEPT { return arg2; }
const Arg3& right_ref()const BOOST_NOEXCEPT { return arg3; }
+#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+ explicit operator bool()const
+ {
+ result_type r(*this);
+ return static_cast<bool>(r);
+ }
+#else
operator unmentionable_type()const
{
result_type r(*this);
- return r ? &unmentionable<void>::proc : 0;
+ return r ? &unmentionable::proc : 0;
}
-
+#endif
static const unsigned left_depth = left_type::depth + 1;
static const unsigned middle_depth = middle_type::depth + 1;
static const unsigned right_depth = right_type::depth + 1;
@@ -472,12 +500,19 @@
const Arg3& right_middle_ref()const BOOST_NOEXCEPT { return arg3; }
const Arg4& right_ref()const BOOST_NOEXCEPT { return arg4; }
+#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+ explicit operator bool()const
+ {
+ result_type r(*this);
+ return static_cast<bool>(r);
+ }
+#else
operator unmentionable_type()const
{
result_type r(*this);
- return r ? &unmentionable<void>::proc : 0;
+ return r ? &unmentionable::proc : 0;
}
-
+#endif
static const unsigned left_depth = left_type::depth + 1;
static const unsigned left_middle_depth = left_middle_type::depth + 1;
static const unsigned right_middle_depth = right_middle_type::depth + 1;
@@ -701,6 +736,10 @@
struct is_unsigned_number<number<Backend, ExpressionTemplates> > : public is_unsigned_number<Backend> {};
template <class T>
struct is_signed_number : public mpl::bool_<!is_unsigned_number<T>::value> {};
+template <class T>
+struct is_interval_number : public mpl::false_ {};
+template <class Backend, expression_template_option ExpressionTemplates>
+struct is_interval_number<number<Backend, ExpressionTemplates> > : public is_interval_number<Backend>{};
}} // namespaces
Modified: branches/release/boost/multiprecision/mpfr.hpp
==============================================================================
--- branches/release/boost/multiprecision/mpfr.hpp (original)
+++ branches/release/boost/multiprecision/mpfr.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -1192,7 +1192,7 @@
{
if(0 == mpfr_number_p(val.data()))
{
- result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number<mpfr_float_backend<Digits10, AllocateType> >(val), 0, boost::math::policies::policy<>()).backend();
+ result = boost::math::policies::raise_rounding_error("boost::multiprecision::trunc<%1%>(%1%)", 0, number<mpfr_float_backend<Digits10, AllocateType> >(val), number<mpfr_float_backend<Digits10, AllocateType> >(val), boost::math::policies::policy<>()).backend();
return;
}
mpfr_trunc(result.data(), val.data());
@@ -1246,14 +1246,14 @@
#endif
template <unsigned Digits10, mpfr_allocation_type AllocateType, class Integer>
-inline typename enable_if<mpl::and_<is_signed<Integer>, mpl::bool_<BOOST_MP_ENABLE_IF_WORKAROUND (sizeof(Integer) <= sizeof(long))> > >::type
+inline typename enable_if<mpl::and_<is_signed<Integer>, mpl::bool_<BOOST_MP_ENABLE_IF_WORKAROUND (sizeof(Integer) <= sizeof(long))> > >::type
eval_pow(mpfr_float_backend<Digits10, AllocateType>& result, const mpfr_float_backend<Digits10, AllocateType>& b, const Integer& e)
{
mpfr_pow_si(result.data(), b.data(), e, GMP_RNDN);
}
template <unsigned Digits10, mpfr_allocation_type AllocateType, class Integer>
-inline typename enable_if<mpl::and_<is_unsigned<Integer>, mpl::bool_<BOOST_MP_ENABLE_IF_WORKAROUND (sizeof(Integer) <= sizeof(long))> > >::type
+inline typename enable_if<mpl::and_<is_unsigned<Integer>, mpl::bool_<BOOST_MP_ENABLE_IF_WORKAROUND (sizeof(Integer) <= sizeof(long))> > >::type
eval_pow(mpfr_float_backend<Digits10, AllocateType>& result, const mpfr_float_backend<Digits10, AllocateType>& b, const Integer& e)
{
mpfr_pow_ui(result.data(), b.data(), e, GMP_RNDN);
@@ -1392,15 +1392,47 @@
template <class T> struct constant_euler;
template <class T> struct constant_catalan;
+namespace detail{
+
+ template <class T, int N>
+ struct mpfr_constant_initializer
+ {
+ static void force_instantiate()
+ {
+ init.force_instantiate();
+ }
+ private:
+ struct initializer
+ {
+ initializer()
+ {
+ T::get(mpl::int_<N>());
+ }
+ void force_instantiate()const{}
+ };
+ static const initializer init;
+ };
+
+ template <class T, int N>
+ typename mpfr_constant_initializer<T, N>::initializer const mpfr_constant_initializer<T, N>::init;
+
+}
+
template<unsigned Digits10, boost::multiprecision::mpfr_allocation_type AllocateType, boost::multiprecision::expression_template_option ExpressionTemplates>
struct constant_pi<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >
{
typedef boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result_type;
template<int N>
- static inline result_type get(const mpl::int_<N>&)
+ static inline const result_type& get(const mpl::int_<N>&)
{
- result_type result;
- mpfr_const_pi(result.backend().data(), GMP_RNDN);
+ detail::mpfr_constant_initializer<constant_pi<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >, N>::force_instantiate();
+ static result_type result;
+ static bool has_init = false;
+ if(!has_init)
+ {
+ mpfr_const_pi(result.backend().data(), GMP_RNDN);
+ has_init = true;
+ }
return result;
}
};
@@ -1409,10 +1441,16 @@
{
typedef boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result_type;
template<int N>
- static inline result_type get(const mpl::int_<N>&)
+ static inline const result_type& get(const mpl::int_<N>&)
{
- result_type result;
- mpfr_const_log2(result.backend().data(), GMP_RNDN);
+ detail::mpfr_constant_initializer<constant_ln_two<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >, N>::force_instantiate();
+ static result_type result;
+ static bool init = false;
+ if(!init)
+ {
+ mpfr_const_log2(result.backend().data(), GMP_RNDN);
+ init = true;
+ }
return result;
}
};
@@ -1421,10 +1459,16 @@
{
typedef boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result_type;
template<int N>
- static inline result_type get(const mpl::int_<N>&)
+ static inline const result_type& get(const mpl::int_<N>&)
{
- result_type result;
- mpfr_const_euler(result.backend().data(), GMP_RNDN);
+ detail::mpfr_constant_initializer<constant_euler<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >, N>::force_instantiate();
+ static result_type result;
+ static bool init = false;
+ if(!init)
+ {
+ mpfr_const_euler(result.backend().data(), GMP_RNDN);
+ init = true;
+ }
return result;
}
};
@@ -1433,10 +1477,16 @@
{
typedef boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> result_type;
template<int N>
- static inline result_type get(const mpl::int_<N>&)
+ static inline const result_type& get(const mpl::int_<N>&)
{
- result_type result;
- mpfr_const_catalan(result.backend().data(), GMP_RNDN);
+ detail::mpfr_constant_initializer<constant_catalan<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10, AllocateType>, ExpressionTemplates> >, N>::force_instantiate();
+ static result_type result;
+ static bool init = false;
+ if(!init)
+ {
+ mpfr_const_catalan(result.backend().data(), GMP_RNDN);
+ init = true;
+ }
return result;
}
};
Modified: branches/release/boost/multiprecision/number.hpp
==============================================================================
--- branches/release/boost/multiprecision/number.hpp (original)
+++ branches/release/boost/multiprecision/number.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -44,8 +44,8 @@
BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(const number& e) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast<const Backend&>(std::declval<Backend>())))) : m_backend(e.m_backend){}
template <class V>
BOOST_MP_FORCEINLINE number(const V& v, typename enable_if_c<
- (boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value)
- && !is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
+ (boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value)
+ && !is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
&& !detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value
>::type* = 0)
{
@@ -53,16 +53,16 @@
}
template <class V>
BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(const V& v, typename enable_if_c<
- is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
+ is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
&& !detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value
- >::type* = 0)
+ >::type* = 0)
: m_backend(canonical_value(v)) {}
BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(const number& e, unsigned digits10)
: m_backend(e.m_backend, digits10){}
template <class V>
explicit BOOST_MP_FORCEINLINE number(const V& v, typename enable_if_c<
- (boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value)
- && !detail::is_explicitly_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
+ (boost::is_arithmetic<V>::value || is_same<std::string, V>::value || is_convertible<V, const char*>::value)
+ && !detail::is_explicitly_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
&& detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value
>::type* = 0)
{
@@ -70,10 +70,10 @@
}
template <class V>
explicit BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(const V& v, typename enable_if_c<
- detail::is_explicitly_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
+ detail::is_explicitly_convertible<typename detail::canonical<V, Backend>::type, Backend>::value
&& (detail::is_restricted_conversion<typename detail::canonical<V, Backend>::type, Backend>::value
|| !is_convertible<typename detail::canonical<V, Backend>::type, Backend>::value)
- >::type* = 0)
+ >::type* = 0)
: m_backend(canonical_value(v)) {}
/*
//
@@ -88,12 +88,12 @@
}
*/
template<expression_template_option ET>
- BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(const number<Backend, ET>& val)
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(const number<Backend, ET>& val)
BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast<const Backend&>(std::declval<Backend>())))) : m_backend(val.backend()) {}
template <class Other, expression_template_option ET>
- BOOST_MP_FORCEINLINE number(const number<Other, ET>& val,
- typename enable_if_c<(boost::is_convertible<Other, Backend>::value && !detail::is_restricted_conversion<Other, Backend>::value)>::type* = 0)
+ BOOST_MP_FORCEINLINE number(const number<Other, ET>& val,
+ typename enable_if_c<(boost::is_convertible<Other, Backend>::value && !detail::is_restricted_conversion<Other, Backend>::value)>::type* = 0)
BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast<const Other&>(std::declval<Other>()))))
: m_backend(val.backend()) {}
@@ -109,7 +109,7 @@
}
template <class Other, expression_template_option ET>
explicit BOOST_MP_FORCEINLINE number(const number<Other, ET>& val, typename enable_if_c<
- (detail::is_explicitly_convertible<Other, Backend>::value
+ (detail::is_explicitly_convertible<Other, Backend>::value
&& (detail::is_restricted_conversion<Other, Backend>::value || !boost::is_convertible<Other, Backend>::value))
>::type* = 0) BOOST_NOEXCEPT_IF(noexcept(Backend(static_cast<const Other&>(std::declval<Other>()))))
: m_backend(val.backend()) {}
@@ -142,7 +142,7 @@
return *this;
}
- BOOST_MP_FORCEINLINE number& operator=(const number& e)
+ BOOST_MP_FORCEINLINE number& operator=(const number& e)
BOOST_NOEXCEPT_IF(noexcept(std::declval<Backend>() = static_cast<const Backend&>(std::declval<Backend>())))
{
m_backend = e.m_backend;
@@ -150,22 +150,22 @@
}
template <class V>
- BOOST_MP_FORCEINLINE typename enable_if<is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
- operator=(const V& v)
+ BOOST_MP_FORCEINLINE typename enable_if<is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ operator=(const V& v)
BOOST_NOEXCEPT_IF(noexcept(std::declval<Backend>() = static_cast<typename boost::multiprecision::detail::canonical<V, Backend>::type const&>(std::declval<typename boost::multiprecision::detail::canonical<V, Backend>::type>())))
{
m_backend = canonical_value(v);
return *this;
}
template <class V>
- BOOST_MP_FORCEINLINE number<Backend, ExpressionTemplates>& assign(const V& v)
+ BOOST_MP_FORCEINLINE number<Backend, ExpressionTemplates>& assign(const V& v)
BOOST_NOEXCEPT_IF(noexcept(std::declval<Backend>() = static_cast<typename boost::multiprecision::detail::canonical<V, Backend>::type const&>(std::declval<typename boost::multiprecision::detail::canonical<V, Backend>::type>())))
{
m_backend = canonical_value(v);
return *this;
}
template <class Other, expression_template_option ET>
- typename disable_if<boost::multiprecision::detail::is_explicitly_convertible<Other, Backend>, number<Backend, ExpressionTemplates>& >::type
+ typename disable_if<boost::multiprecision::detail::is_explicitly_convertible<Other, Backend>, number<Backend, ExpressionTemplates>& >::type
assign(const number<Other, ET>& v)
{
//
@@ -181,7 +181,7 @@
*this = e;
}
template <class tag, class Arg1, class Arg2, class Arg3, class Arg4>
- explicit number(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e,
+ explicit number(const detail::expression<tag, Arg1, Arg2, Arg3, Arg4>& e,
typename enable_if_c<!is_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value
&& boost::multiprecision::detail::is_explicitly_convertible<typename detail::expression<tag, Arg1, Arg2, Arg3, Arg4>::result_type, self_type>::value>::type* = 0)
{
@@ -189,10 +189,10 @@
}
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(number&& r)
- BOOST_NOEXCEPT_IF(noexcept(Backend(std::declval<Backend>())))
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR number(number&& r)
+ BOOST_NOEXCEPT_IF(noexcept(Backend(std::declval<Backend>())))
: m_backend(static_cast<Backend&&>(r.m_backend)){}
- BOOST_MP_FORCEINLINE number& operator=(number&& r) BOOST_NOEXCEPT
+ BOOST_MP_FORCEINLINE number& operator=(number&& r) BOOST_NOEXCEPT
{
m_backend = static_cast<Backend&&>(r.m_backend);
return *this;
@@ -234,7 +234,7 @@
}
template <class V>
- typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator+=(const V& v)
{
using default_ops::eval_add;
@@ -265,7 +265,7 @@
}
template <class V>
- typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator-=(const V& v)
{
using default_ops::eval_subtract;
@@ -309,7 +309,7 @@
}
template <class V>
- typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator*=(const V& v)
{
using default_ops::eval_multiply;
@@ -340,7 +340,7 @@
return *this;
}
template <class V>
- typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator%=(const V& v)
{
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The modulus operation is only valid for integer types");
@@ -392,7 +392,7 @@
{
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The left-shift operation is only valid for integer types");
detail::check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed<V>());
- eval_left_shift(m_backend, canonical_value(val));
+ eval_left_shift(m_backend, static_cast<std::size_t>(canonical_value(val)));
return *this;
}
@@ -401,7 +401,7 @@
{
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The right-shift operation is only valid for integer types");
detail::check_shift_range(val, mpl::bool_<(sizeof(V) > sizeof(std::size_t))>(), is_signed<V>());
- eval_right_shift(m_backend, canonical_value(val));
+ eval_right_shift(m_backend, static_cast<std::size_t>(canonical_value(val)));
return *this;
}
@@ -428,7 +428,7 @@
}
template <class V>
- BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator/=(const V& v)
{
using default_ops::eval_divide;
@@ -462,7 +462,7 @@
}
template <class V>
- BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator&=(const V& v)
{
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The bitwise & operation is only valid for integer types");
@@ -497,7 +497,7 @@
}
template <class V>
- BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator|=(const V& v)
{
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The bitwise | operation is only valid for integer types");
@@ -530,7 +530,7 @@
}
template <class V>
- BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
+ BOOST_MP_FORCEINLINE typename enable_if<boost::is_convertible<V, self_type>, number<Backend, ExpressionTemplates>& >::type
operator^=(const V& v)
{
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The bitwise ^ operation is only valid for integer types");
@@ -539,16 +539,6 @@
return *this;
}
//
- // Use in boolean context:
- //
- typedef bool (self_type::*unmentionable_type)()const;
-
- BOOST_MP_FORCEINLINE operator unmentionable_type()const
- {
- return is_zero() ? 0 : &self_type::is_zero;
- }
-
- //
// swap:
//
BOOST_MP_FORCEINLINE void swap(self_type& other) BOOST_NOEXCEPT
@@ -599,11 +589,14 @@
convert_to_imp(&result);
return result;
}
+ //
+ // Use in boolean context, and explicit conversion operators:
+ //
#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 7)
+# if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ < 7)
//
- // Horrible workaround for gcc-4.6.x which always prefers the non-template
- // operator bool() rather than the template operator when converting to
+ // Horrible workaround for gcc-4.6.x which always prefers the template
+ // operator bool() rather than the non-template operator when converting to
// an arithmetic type:
//
template <class T, typename enable_if<is_same<T, bool>, int>::type = 0>
@@ -612,23 +605,30 @@
using default_ops::eval_is_zero;
return !eval_is_zero(backend());
}
- template <class T, typename disable_if<is_same<T, bool>, int>::type = 0>
+ template <class T, typename disable_if_c<is_same<T, bool>::value || is_void<T>::value, int>::type = 0>
explicit operator T ()const
{
return this->template convert_to<T>();
}
-#else
+# else
template <class T>
explicit operator T()const
{
return this->template convert_to<T>();
}
- explicit operator bool()const
+ BOOST_MP_FORCEINLINE explicit operator bool()const
{
- using default_ops::eval_is_zero;
- return !eval_is_zero(backend());
+ return !is_zero();
+ }
+ explicit operator void()const {}
+# endif
+#else
+ typedef bool (self_type::*unmentionable_type)()const;
+
+ BOOST_MP_FORCEINLINE operator unmentionable_type()const
+ {
+ return is_zero() ? 0 : &self_type::is_zero;
}
-#endif
#endif
//
// Default precision:
@@ -1113,7 +1113,7 @@
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The right shift operation is only valid for integer types");
using default_ops::eval_right_shift;
detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed<Val>());
- eval_right_shift(m_backend, canonical_value(e.value()), val);
+ eval_right_shift(m_backend, canonical_value(e.value()), static_cast<std::size_t>(val));
}
template <class Exp, class Val>
@@ -1122,7 +1122,7 @@
BOOST_STATIC_ASSERT_MSG(number_category<Backend>::value == number_kind_integer, "The left shift operation is only valid for integer types");
using default_ops::eval_left_shift;
detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed<Val>());
- eval_left_shift(m_backend, canonical_value(e.value()), val);
+ eval_left_shift(m_backend, canonical_value(e.value()), static_cast<std::size_t>(val));
}
template <class Exp, class Val, class Tag>
@@ -1132,7 +1132,7 @@
using default_ops::eval_right_shift;
self_type temp(e);
detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed<Val>());
- eval_right_shift(m_backend, temp.backend(), val);
+ eval_right_shift(m_backend, temp.backend(), static_cast<std::size_t>(val));
}
template <class Exp, class Val, class Tag>
@@ -1142,7 +1142,7 @@
using default_ops::eval_left_shift;
self_type temp(e);
detail::check_shift_range(val, mpl::bool_<(sizeof(Val) > sizeof(std::size_t))>(), is_signed<Val>());
- eval_left_shift(m_backend, temp.backend(), val);
+ eval_left_shift(m_backend, temp.backend(), static_cast<std::size_t>(val));
}
template <class Exp>
@@ -1581,7 +1581,7 @@
{
typedef typename Exp::left_type child0_type;
typedef typename Exp::right_type child1_type;
- return contains_self(e.left(), typename child0_type::arity())
+ return contains_self(e.left(), typename child0_type::arity())
|| contains_self(e.right(), typename child1_type::arity());
}
template <class Exp>
@@ -1590,7 +1590,7 @@
typedef typename Exp::left_type child0_type;
typedef typename Exp::middle_type child1_type;
typedef typename Exp::right_type child2_type;
- return contains_self(e.left(), typename child0_type::arity())
+ return contains_self(e.left(), typename child0_type::arity())
|| contains_self(e.middle(), typename child1_type::arity())
|| contains_self(e.right(), typename child2_type::arity());
}
@@ -1613,8 +1613,8 @@
}
template <class Val>
- BOOST_MP_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const Val&)const BOOST_NOEXCEPT{ return false; }
- BOOST_MP_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; }
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const Val&)const BOOST_NOEXCEPT{ return false; }
+ BOOST_MP_FORCEINLINE BOOST_CONSTEXPR bool is_realy_self(const self_type& v)const BOOST_NOEXCEPT{ return &v == this; }
static BOOST_MP_FORCEINLINE BOOST_CONSTEXPR const Backend& function_arg_value(const self_type& v) BOOST_NOEXCEPT { return v.backend(); }
template <class V>
@@ -1634,10 +1634,10 @@
template <class B2, expression_template_option ET>
static BOOST_MP_FORCEINLINE BOOST_CONSTEXPR const B2& canonical_value(const number<B2, ET>& v) BOOST_NOEXCEPT { return v.backend(); }
template <class V>
- static BOOST_MP_FORCEINLINE BOOST_CONSTEXPR typename disable_if<is_same<typename detail::canonical<V, Backend>::type, V>, typename detail::canonical<V, Backend>::type>::type
+ static BOOST_MP_FORCEINLINE BOOST_CONSTEXPR typename disable_if<is_same<typename detail::canonical<V, Backend>::type, V>, typename detail::canonical<V, Backend>::type>::type
canonical_value(const V& v) BOOST_NOEXCEPT { return static_cast<typename detail::canonical<V, Backend>::type>(v); }
template <class V>
- static BOOST_MP_FORCEINLINE BOOST_CONSTEXPR typename enable_if<is_same<typename detail::canonical<V, Backend>::type, V>, const V&>::type
+ static BOOST_MP_FORCEINLINE BOOST_CONSTEXPR typename enable_if<is_same<typename detail::canonical<V, Backend>::type, V>, const V&>::type
canonical_value(const V& v) BOOST_NOEXCEPT { return v; }
static BOOST_MP_FORCEINLINE typename detail::canonical<std::string, Backend>::type canonical_value(const std::string& v) BOOST_NOEXCEPT { return v.c_str(); }
@@ -1763,26 +1763,12 @@
return a.denominator();
}
-namespace numeric { namespace ublas {
-//
-// uBlas interoperability:
-//
-template<class V>
-class sparse_vector_element;
-
-template <class V, class Backend, multiprecision::expression_template_option ExpressionTemplates>
-inline bool operator == (const sparse_vector_element<V>& a, const ::boost::multiprecision::number<Backend, ExpressionTemplates>& b)
-{
-typedef typename sparse_vector_element<V>::const_reference ref_type;
- return static_cast<ref_type>(a) == b;
-}
-
-}} // namespaces
-
#ifdef BOOST_MSVC
#pragma warning(pop)
#endif
} // namespaces
+#include <boost/multiprecision/detail/ublas_interop.hpp>
+
#endif
Deleted: branches/release/boost/multiprecision/rational_adapter.hpp
==============================================================================
--- branches/release/boost/multiprecision/rational_adapter.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
+++ (empty file)
@@ -1,302 +0,0 @@
-///////////////////////////////////////////////////////////////
-// 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_
-
-#ifndef BOOST_MATH_RATIONAL_ADAPTER_HPP
-#define BOOST_MATH_RATIONAL_ADAPTER_HPP
-
-#include <iostream>
-#include <iomanip>
-#include <sstream>
-#include <boost/cstdint.hpp>
-#include <boost/multiprecision/number.hpp>
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable:4512 4127)
-#endif
-#include <boost/rational.hpp>
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-namespace boost{
-namespace multiprecision{
-namespace backends{
-
-template <class IntBackend>
-struct rational_adapter
-{
- typedef number<IntBackend> integer_type;
- typedef boost::rational<integer_type> rational_type;
-
- typedef typename IntBackend::signed_types signed_types;
- typedef typename IntBackend::unsigned_types unsigned_types;
- typedef typename IntBackend::float_types float_types;
-
- rational_adapter(){}
- rational_adapter(const rational_adapter& o)
- {
- m_value = o.m_value;
- }
- rational_adapter(const IntBackend& o) : m_value(o) {}
-
- template <class U>
- rational_adapter(const U& u, typename enable_if_c<is_convertible<U, IntBackend>::value>::type* = 0)
- : m_value(IntBackend(u)){}
- template <class U>
- explicit rational_adapter(const U& u,
- typename enable_if_c<
- boost::multiprecision::detail::is_explicitly_convertible<U, IntBackend>::value && !is_convertible<U, IntBackend>::value
- >::type* = 0)
- : m_value(IntBackend(u)){}
- template <class U>
- typename enable_if_c<(boost::multiprecision::detail::is_explicitly_convertible<U, IntBackend>::value && !is_arithmetic<U>::value), rational_adapter&>::type operator = (const U& u)
- {
- m_value = IntBackend(u);
- }
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
- rational_adapter(rational_adapter&& o) : m_value(o.m_value) {}
- rational_adapter(IntBackend&& o) : m_value(o) {}
- rational_adapter& operator = (rational_adapter&& o)
- {
- m_value = static_cast<rational_type&&>(o.m_value);
- return *this;
- }
-#endif
- rational_adapter& operator = (const rational_adapter& o)
- {
- m_value = o.m_value;
- return *this;
- }
- rational_adapter& operator = (const IntBackend& o)
- {
- m_value = o;
- return *this;
- }
- template <class Int>
- typename enable_if<is_integral<Int>, rational_adapter&>::type operator = (Int i)
- {
- m_value = i;
- return *this;
- }
- template <class Float>
- typename enable_if<is_floating_point<Float>, rational_adapter&>::type operator = (Float i)
- {
- int e;
- Float f = std::frexp(i, &e);
- f = std::ldexp(f, std::numeric_limits<Float>::digits);
- e -= std::numeric_limits<Float>::digits;
- integer_type num(f);
- integer_type denom(1u);
- if(e > 0)
- {
- num <<= e;
- }
- else if(e < 0)
- {
- denom <<= -e;
- }
- m_value.assign(num, denom);
- return *this;
- }
- rational_adapter& operator = (const char* s)
- {
- std::string s1;
- multiprecision::number<IntBackend> v1, v2;
- char c;
- bool have_hex = false;
- const char* p = s; // saved for later
-
- while((0 != (c = *s)) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F'))))
- {
- if(c == 'x' || c == 'X')
- have_hex = true;
- s1.append(1, c);
- ++s;
- }
- v1.assign(s1);
- s1.erase();
- if(c == '/')
- {
- ++s;
- while((0 != (c = *s)) && (c == 'x' || c == 'X' || c == '-' || c == '+' || (c >= '0' && c <= '9') || (have_hex && (c >= 'a' && c <= 'f')) || (have_hex && (c >= 'A' && c <= 'F'))))
- {
- if(c == 'x' || c == 'X')
- have_hex = true;
- s1.append(1, c);
- ++s;
- }
- v2.assign(s1);
- }
- else
- v2 = 1;
- if(*s)
- {
- BOOST_THROW_EXCEPTION(std::runtime_error(std::string("Could parse the string \"") + p + std::string("\" as a valid rational number.")));
- }
- data().assign(v1, v2);
- return *this;
- }
- void swap(rational_adapter& o)
- {
- std::swap(m_value, o.m_value);
- }
- std::string str(std::streamsize digits, std::ios_base::fmtflags f)const
- {
- //
- // We format the string ourselves so we can match what GMP's mpq type does:
- //
- std::string result = data().numerator().str(digits, f);
- if(data().denominator() != 1)
- {
- result.append(1, '/');
- result.append(data().denominator().str(digits, f));
- }
- return result;
- }
- void negate()
- {
- m_value = -m_value;
- }
- int compare(const rational_adapter& o)const
- {
- return m_value > o.m_value ? 1 : (m_value < o.m_value ? -1 : 0);
- }
- template <class Arithmatic>
- typename enable_if<is_arithmetic<Arithmatic>, int>::type compare(Arithmatic i)const
- {
- return m_value > i ? 1 : (m_value < i ? -1 : 0);
- }
- rational_type& data() { return m_value; }
- const rational_type& data()const { return m_value; }
-private:
- rational_type m_value;
-};
-
-template <class IntBackend>
-inline void eval_add(rational_adapter<IntBackend>& result, const rational_adapter<IntBackend>& o)
-{
- result.data() += o.data();
-}
-template <class IntBackend>
-inline void eval_subtract(rational_adapter<IntBackend>& result, const rational_adapter<IntBackend>& o)
-{
- result.data() -= o.data();
-}
-template <class IntBackend>
-inline void eval_multiply(rational_adapter<IntBackend>& result, const rational_adapter<IntBackend>& o)
-{
- result.data() *= o.data();
-}
-template <class IntBackend>
-inline void eval_divide(rational_adapter<IntBackend>& result, const rational_adapter<IntBackend>& o)
-{
- using default_ops::eval_is_zero;
- if(eval_is_zero(o))
- {
- BOOST_THROW_EXCEPTION(std::overflow_error("Divide by zero."));
- }
- result.data() /= o.data();
-}
-
-template <class R, class IntBackend>
-inline void eval_convert_to(R* result, const rational_adapter<IntBackend>& backend)
-{
- *result = backend.data().numerator().template convert_to<R>();
- *result /= backend.data().denominator().template convert_to<R>();
-}
-
-template <class IntBackend>
-inline bool eval_is_zero(const rational_adapter<IntBackend>& val)
-{
- return eval_is_zero(val.data().numerator().backend());
-}
-template <class IntBackend>
-inline int eval_get_sign(const rational_adapter<IntBackend>& val)
-{
- return eval_get_sign(val.data().numerator().backend());
-}
-
-template<class IntBackend, class V>
-inline void assign_components(rational_adapter<IntBackend>& result, const V& v1, const V& v2)
-{
- result.data().assign(v1, v2);
-}
-
-} // namespace backends
-
-template<class IntBackend>
-struct expression_template_default<backends::rational_adapter<IntBackend> > : public expression_template_default<IntBackend> {};
-
-template<class IntBackend>
-struct number_category<backends::rational_adapter<IntBackend> > : public mpl::int_<number_kind_rational>{};
-
-using boost::multiprecision::backends::rational_adapter;
-
-template <class T>
-struct component_type<rational_adapter<T> >
-{
- typedef number<T> type;
-};
-
-template <class IntBackend, expression_template_option ET>
-inline number<IntBackend, ET> numerator(const number<rational_adapter<IntBackend>, ET>& val)
-{
- return val.backend().data().numerator();
-}
-template <class IntBackend, expression_template_option ET>
-inline number<IntBackend, ET> denominator(const number<rational_adapter<IntBackend>, ET>& val)
-{
- return val.backend().data().denominator();
-}
-
-#ifdef BOOST_NO_SFINAE_EXPR
-
-namespace detail{
-
-template<class U, class IntBackend>
-struct is_explicitly_convertible<U, rational_adapter<IntBackend> > : public is_explicitly_convertible<U, IntBackend> {};
-
-}
-
-#endif
-
-}} // namespaces
-
-
-namespace std{
-
-template <class IntBackend, boost::multiprecision::expression_template_option ExpressionTemplates>
-class numeric_limits<boost::multiprecision::number<boost::multiprecision::rational_adapter<IntBackend>, ExpressionTemplates> > : public std::numeric_limits<boost::multiprecision::number<IntBackend, ExpressionTemplates> >
-{
- typedef std::numeric_limits<boost::multiprecision::number<IntBackend> > base_type;
- typedef boost::multiprecision::number<boost::multiprecision::rational_adapter<IntBackend> > number_type;
-public:
- BOOST_STATIC_CONSTEXPR bool is_integer = false;
- BOOST_STATIC_CONSTEXPR bool is_exact = true;
- BOOST_STATIC_CONSTEXPR number_type (min)() { return (base_type::min)(); }
- BOOST_STATIC_CONSTEXPR number_type (max)() { return (base_type::max)(); }
- BOOST_STATIC_CONSTEXPR number_type lowest() { return -(max)(); }
- BOOST_STATIC_CONSTEXPR number_type epsilon() { return base_type::epsilon(); }
- BOOST_STATIC_CONSTEXPR number_type round_error() { return epsilon() / 2; }
- BOOST_STATIC_CONSTEXPR number_type infinity() { return base_type::infinity(); }
- BOOST_STATIC_CONSTEXPR number_type quiet_NaN() { return base_type::quiet_NaN(); }
- BOOST_STATIC_CONSTEXPR number_type signaling_NaN() { return base_type::signaling_NaN(); }
- BOOST_STATIC_CONSTEXPR number_type denorm_min() { return base_type::denorm_min(); }
-};
-
-#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-
-template <class IntBackend, boost::multiprecision::expression_template_option ExpressionTemplates>
-BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::rational_adapter<IntBackend>, ExpressionTemplates> >::is_integer;
-template <class IntBackend, boost::multiprecision::expression_template_option ExpressionTemplates>
-BOOST_CONSTEXPR_OR_CONST bool numeric_limits<boost::multiprecision::number<boost::multiprecision::rational_adapter<IntBackend>, ExpressionTemplates> >::is_exact;
-
-#endif
-
-
-}
-
-#endif
Modified: branches/release/boost/multiprecision/tommath.hpp
==============================================================================
--- branches/release/boost/multiprecision/tommath.hpp (original)
+++ branches/release/boost/multiprecision/tommath.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -7,7 +7,7 @@
#define BOOST_MATH_MP_TOMMATH_BACKEND_HPP
#include <boost/multiprecision/number.hpp>
-#include <boost/multiprecision/rational_adapter.hpp>
+#include <boost/multiprecision/rational_adaptor.hpp>
#include <boost/multiprecision/detail/integer_ops.hpp>
#include <boost/math/special_functions/fpclassify.hpp>
#include <boost/cstdint.hpp>
@@ -639,7 +639,7 @@
struct number_category<tommath_int> : public mpl::int_<number_kind_integer>{};
typedef number<tommath_int > tom_int;
-typedef rational_adapter<tommath_int> tommath_rational;
+typedef rational_adaptor<tommath_int> tommath_rational;
typedef number<tommath_rational> tom_rational;
}} // namespaces
Modified: branches/release/libs/multiprecision/config/Jamfile.v2
==============================================================================
--- branches/release/libs/multiprecision/config/Jamfile.v2 (original)
+++ branches/release/libs/multiprecision/config/Jamfile.v2 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -8,6 +8,7 @@
local gmp_path = [ modules.peek : GMP_PATH ] ;
local mpfr_path = [ modules.peek : MPFR_PATH ] ;
+local mpfi_path = [ modules.peek : MPFI_PATH ] ;
local tommath_path = [ modules.peek : TOMMATH_PATH ] ;
project : requirements
@@ -15,12 +16,16 @@
<include>$(gmp_path)/mpfr
<include>$(gmp_path)/gmpfrxx
<include>$(mpfr_path)
+ <include>$(mpfi_path)
+ <include>$(mpfi_path)/src
<include>$(tommath_path)
<include>../../..
<search>$(gmp_path)
<search>$(mpfr_path)
<search>$(mpfr_path)/build.vc10/lib/Win32/Debug
<search>$(tommath_path)
+ <search>$(mpfi_path)
+ <search>$(mpfi_path)/src
# We set these to make it easier to set up and test GMP and MPFR under Win32:
<toolset>msvc:<runtime-link>static
<toolset>msvc:<link>static
@@ -33,14 +38,18 @@
lib gmp ;
lib mpfr ;
+lib mpfi ;
exe has_gmp : has_gmp.cpp gmp :
<include>$(gmp_path) <include>$(gmp_path)/mpfr <include>$(gmp_path)/gmpfrxx ;
exe has_mpfr : has_mpfr.cpp mpfr gmp :
<include>$(mpfr_path) <include>$(gmp_path)/mpfr <include>$(gmp_path)/gmpfrxx <include>$(gmp_path) ;
+exe has_mpfi : has_mpfi.cpp mpfi mpfr gmp :
+ <include>$(mpfr_path) <include>$(gmp_path)/mpfr <include>$(gmp_path)/gmpfrxx <include>$(gmp_path) ;
obj has_tommath : has_tommath.cpp :
<include>$(tommath_path) ;
explicit has_gmp ;
explicit has_mpfr ;
+explicit has_mpfi ;
explicit has_tommath ;
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="map/ack.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="indexes/s01.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_indexes">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_multiprecision.indexes"></a><a class="link" href="indexes.html" title="Indexes">Indexes</a>
</h2></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s01.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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">
+<div class="section id975632">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id983604"></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="id975632"></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>
@@ -76,16 +76,10 @@
<dt>
<a name="idx_id_2"></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">
+<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">compare</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">cpp_dec_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="../map/todo.html" title="TODO"><span class="index-entry-level-1">TODO</span></a></p></li></ul></div>
-</li>
-</ul></div></dd>
+</li></ul></div></dd>
<dt>
<a name="idx_id_3"></a><span class="term">D</span>
</dt>
@@ -96,6 +90,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 +108,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 1.5. 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>
@@ -364,6 +363,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>
@@ -405,6 +408,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_adaptor.html" title="logged_adaptor"><span class="index-entry-level-1">logged_adaptor</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_adaptor.html" title="logged_adaptor"><span class="index-entry-level-1">logged_adaptor</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>
@@ -437,6 +448,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; ">
@@ -452,6 +470,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>
@@ -471,10 +493,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>
@@ -494,9 +524,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>
@@ -505,7 +543,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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s02.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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">
+<div class="section id978339">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id986475"></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="id978339"></a>Class Index</h3></div></div></div>
+<p><a class="link" href="s02.html#idx_id_21">C</a> <a class="link" href="s02.html#idx_id_22">D</a> <a class="link" href="s02.html#idx_id_23">E</a> <a class="link" href="s02.html#idx_id_25">G</a> <a class="link" href="s02.html#idx_id_26">I</a> <a class="link" href="s02.html#idx_id_27">L</a> <a class="link" href="s02.html#idx_id_28">M</a> <a class="link" href="s02.html#idx_id_29">N</a> <a class="link" href="s02.html#idx_id_34">T</a></p>
<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,18 @@
</li>
</ul></div></dd>
<dt>
-<a name="idx_id_22"></a><span class="term">E</span>
+<a name="idx_id_22"></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"><p><a class="link" href="../tut/misc/debug_adaptor.html" title="debug_adaptor"><span class="index-entry-level-0">debug_adaptor</span></a></p></li></ul></div></dd>
+<dt>
+<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 +61,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 +94,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_adaptor.html" title="logged_adaptor"><span class="index-entry-level-0">logged_adaptor</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 +124,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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s03.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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">
+<div class="section id978824">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id986893"></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="id978824"></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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/indexes/s04.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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">
+<div class="section id982055">
<div class="titlepage"><div><div><h3 class="title">
-<a name="id988985"></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="id982055"></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">
@@ -163,7 +163,6 @@
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../tut/floats/cpp_dec_float.html" title="cpp_dec_float"><span class="index-entry-level-1">cpp_dec_float</span></a></strong></span></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/cpp_dec_float.html" title="cpp_dec_float"><span class="index-entry-level-1">cpp_dec_float_100</span></a></p></li>
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/floats/cpp_dec_float.html" title="cpp_dec_float"><span class="index-entry-level-1">cpp_dec_float_50</span></a></p></li>
-<li class="listitem" style="list-style-type: none"><p><a class="link" href="../map/todo.html" title="TODO"><span class="index-entry-level-1">TODO</span></a></p></li>
</ul></div>
</li>
<li class="listitem" style="list-style-type: none">
@@ -224,7 +223,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,9 +232,11 @@
<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>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/misc/debug_adaptor.html" title="debug_adaptor"><span class="index-entry-level-0">debug_adaptor</span></a></p></li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">default_precision</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>
@@ -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 1.5. 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,7 +495,7 @@
</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">
@@ -503,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">
@@ -539,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">
@@ -547,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>
@@ -638,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">
@@ -654,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_adaptor</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_adaptor.html" title="logged_adaptor"><span class="index-entry-level-1">logged_adaptor</span></a></strong></span></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../tut/misc/logged_adaptor.html" title="logged_adaptor"><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_adaptor.html" title="logged_adaptor"><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_adaptor.html" title="logged_adaptor"><span class="index-entry-level-1">logged_adaptor</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_adaptor.html" title="logged_adaptor"><span class="index-entry-level-1">logged_adaptor</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>
@@ -667,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">
@@ -686,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>
@@ -782,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">
@@ -826,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">
@@ -834,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 1.5. Optional Requirements on the Backend Type"><span class="index-entry-level-1">assign_components</span></a></p></li>
@@ -886,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 1.5. 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 1.5. 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">
@@ -915,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">
@@ -930,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>
@@ -946,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>
@@ -958,15 +1031,12 @@
</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">
<p><span class="index-entry-level-0">TODO</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/todo.html" title="TODO"><span class="index-entry-level-1">add</span></a></p></li>
-<li class="listitem" style="list-style-type: none"><p><a class="link" href="../map/todo.html" title="TODO"><span class="index-entry-level-1">cpp_dec_float</span></a></p></li>
-</ul></div>
+<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/todo.html" title="TODO"><span class="index-entry-level-1">add</span></a></p></li></ul></div>
</li>
<li class="listitem" style="list-style-type: none">
<p><span class="index-entry-level-0">tommath_int</span></p>
@@ -998,7 +1068,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">
@@ -1019,9 +1089,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>
@@ -1030,7 +1108,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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/intro.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="tut.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_intro">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_multiprecision.intro"></a><a class="link" href="intro.html" title="Introduction">Introduction</a>
</h2></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="perf/rational_performance.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="map/hist.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_map">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_multiprecision.map"></a><a class="link" href="map.html" title="Roadmap">Roadmap</a>
</h2></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/ack.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="faq.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.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="../indexes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_map_ack">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.map.ack"></a><a class="link" href="ack.html" title="Acknowledgements">Acknowledgements</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/faq.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="todo.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.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="ack.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_map_faq">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.map.faq"></a><a class="link" href="faq.html" title="FAQ">FAQ</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/hist.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,12 +22,42 @@
<div class="spirit-nav">
<a accesskey="p" href="../map.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.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="todo.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_map_hist">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.map.hist"></a><a class="link" href="hist.html" title="History">History</a>
</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">
+ <span class="bold"><strong>Breaking change</strong></span> renamed <code class="computeroutput"><span class="identifier">rational_adapter</span></code> to <code class="computeroutput"><span class="identifier">rational_adaptor</span></code>.
+ </li>
+<li class="listitem">
+ Add support for MPFI.
+ </li>
+<li class="listitem">
+ Add logged_adaptor.
+ </li>
+<li class="listitem">
+ Fixed bug in integer division of <code class="computeroutput"><span class="identifier">cpp_int</span></code>
+ that results in incorrect sign of <code class="computeroutput"><span class="identifier">cpp_int</span></code>
+ when both arguments are small enough to fit in a <code class="computeroutput"><span class="identifier">double_limb_type</span></code>.
+ See 8126.
+ </li>
+<li class="listitem">
+ Fixed bug in subtraction of a single limb in <code class="computeroutput"><span class="identifier">cpp_int</span></code>
+ that results in incorrect value when the result should have a 0 in the
+ last limb: 8133.
+ </li>
+<li class="listitem">
+ Fixed bug in <code class="computeroutput"><span class="identifier">cpp_int</span></code>
+ where division of 0 by something doesn't get zero in the result: 8160.
+ </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; ">
@@ -43,7 +73,7 @@
</li>
</ul></div>
<h5>
-<a name="boost_multiprecision.map.hist.h1"></a>
+<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>
@@ -97,7 +127,7 @@
</li>
</ul></div>
<h5>
-<a name="boost_multiprecision.map.hist.h2"></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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/map/todo.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="hist.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../map.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="faq.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_map_todo">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.map.todo"></a><a class="link" href="todo.html" title="TODO">TODO</a>
</h3></div></div></div>
@@ -35,7 +35,7 @@
Add back-end support for libdecNumber.
</li>
<li class="listitem">
- Add an adapter back-end for complex number types.
+ Add an adaptor back-end for complex number types.
</li>
<li class="listitem">
Add a back-end for MPFR interval arithmetic.
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="ref/headers.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="perf/overhead.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_perf">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_multiprecision.perf"></a><a class="link" href="perf.html" title="Performance Comparison">Performance Comparison</a>
</h2></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/float_performance.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="int_real_world.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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="integer_performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<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 Performance">Float Algorithm
Performance</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="realworld.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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="float_performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_perf_int_real_world">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.perf.int_real_world"></a><a class="link" href="int_real_world.html" title="Integer Real World Tests">Integer Real
World Tests</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/integer_performance.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="float_performance.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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_performance.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<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 Performance">Integer
Algorithm Performance</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/overhead.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../perf.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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="realworld.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_perf_overhead">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.perf.overhead"></a><a class="link" href="overhead.html" title="The Overhead in the Number Class Wrapper">The Overhead in the
Number Class Wrapper</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/rational_performance.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="integer_performance.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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="../map.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<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 Performance">Rational
Type Performance</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/perf/realworld.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="overhead.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../perf.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="int_real_world.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_perf_realworld">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.perf.realworld"></a><a class="link" href="realworld.html" title="Floating Point Real World Tests">Floating Point Real
World Tests</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="tut/mixed.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="ref/number.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_multiprecision.ref"></a><a class="link" href="ref.html" title="Reference">Reference</a>
</h2></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/backendconc.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="internals.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="headers.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_backendconc">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.backendconc"></a><a class="link" href="backendconc.html" title="Backend Requirements">Backend Requirements</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_dec_ref.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="mpfr_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="internals.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_cpp_dec_ref">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.cpp_dec_ref"></a><a class="link" href="cpp_dec_ref.html" title="cpp_dec_float">cpp_dec_float</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/cpp_int_ref.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="number.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="gmp_int_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_cpp_int_ref">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.cpp_int_ref"></a><a class="link" href="cpp_int_ref.html" title="cpp_int">cpp_int</a>
</h3></div></div></div>
@@ -47,7 +47,7 @@
<span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">expression_template_option</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">et_off</span><span class="special">;</span> <span class="special">};</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_int</span><span class="special">;</span> <span class="comment">// arbitrary precision integer</span>
-<span class="keyword">typedef</span> <span class="identifier">rational_adapter</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_rational_backend</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">rational_adaptor</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_rational_backend</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_rational_backend</span><span class="special">></span> <span class="identifier">cpp_rational</span><span class="special">;</span> <span class="comment">// arbitrary precision rational number</span>
<span class="comment">// Fixed precision unsigned types:</span>
@@ -64,7 +64,7 @@
<span class="comment">// Over again, but with checking enabled this time:</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">signed_magnitude</span><span class="special">,</span> <span class="identifier">checked</span><span class="special">></span> <span class="special">></span> <span class="identifier">checked_cpp_int</span><span class="special">;</span>
-<span class="keyword">typedef</span> <span class="identifier">rational_adapter</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">signed_magnitude</span><span class="special">,</span> <span class="identifier">checked</span><span class="special">></span> <span class="special">></span> <span class="identifier">checked_cpp_rational_backend</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">rational_adaptor</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">signed_magnitude</span><span class="special">,</span> <span class="identifier">checked</span><span class="special">></span> <span class="special">></span> <span class="identifier">checked_cpp_rational_backend</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_rational_backend</span><span class="special">></span> <span class="identifier">checked_cpp_rational</span><span class="special">;</span>
<span class="comment">// Checked fixed precision unsigned types:</span>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/gmp_int_ref.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="cpp_int_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="tom_int_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_gmp_int_ref">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.gmp_int_ref"></a><a class="link" href="gmp_int_ref.html" title="gmp_int">gmp_int</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/headers.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="backendconc.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="../perf.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_headers">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.headers"></a><a class="link" href="headers.html" title="Header File Structure">Header File Structure</a>
</h3></div></div></div>
@@ -124,12 +124,12 @@
<tr>
<td>
<p>
- rational_adapter.hpp
+ rational_adaptor.hpp
</p>
</td>
<td>
<p>
- Defines the <code class="computeroutput"><span class="identifier">rational_adapter</span></code>
+ Defines the <code class="computeroutput"><span class="identifier">rational_adaptor</span></code>
backend.
</p>
</td>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/internals.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="backendconc.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_internals">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.internals"></a><a class="link" href="internals.html" title="Internal Support Code">Internal Support
Code</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpf_ref.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="tom_int_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="mpfr_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_mpf_ref">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.mpf_ref"></a><a class="link" href="mpf_ref.html" title="gmp_float">gmp_float</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/mpfr_ref.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="mpf_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="cpp_dec_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_mpfr_ref">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.mpfr_ref"></a><a class="link" href="mpfr_ref.html" title="mpfr_float_backend">mpfr_float_backend</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/number.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="cpp_int_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_number">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.number"></a><a class="link" href="number.html" title="number">number</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/ref/tom_int_ref.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="gmp_int_ref.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ref.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="mpf_ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_ref_tom_int_ref">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.ref.tom_int_ref"></a><a class="link" href="tom_int_ref.html" title="tom_int">tom_int</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="intro.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.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="tut/ints.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_multiprecision.tut"></a><a class="link" href="tut.html" title="Tutorial">Tutorial</a>
</h2></div></div></div>
@@ -57,13 +57,22 @@
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>
<dt><span class="section">gmp_rational</span></dt>
<dt><span class="section">tommath_rational</span></dt>
<dt><span class="section">Use With Boost.Rational</span></dt>
-<dt><span class="section">rational_adapter</span></dt>
+<dt><span class="section">rational_adaptor</span></dt>
+</dl></dd>
+<dt><span class="section">Miscellaneous Number Types.</span></dt>
+<dd><dl>
+<dt><span class="section">logged_adaptor</span></dt>
+<dt><span class="section">debug_adaptor</span></dt>
+<dt><span class="section"><a href="tut/misc/visualizers.html">Visual C++
+ Debugger Visualizers</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="tut/conversions.html">Constructing and
Interconverting Between Number Types</a></span></dt>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/conversions.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter 1. 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/visualizers.html" title="Visual C++ Debugger Visualizers">
<link rel="next" href="random.html" title="Generating Random Numbers">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,9 +20,9 @@
</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/visualizers.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">
+<div class="section boost_multiprecision_tut_conversions">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.conversions"></a><a class="link" href="conversions.html" title="Constructing and Interconverting Between Number Types">Constructing and
Interconverting Between Number Types</a>
@@ -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/visualizers.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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="ints/egs/bitops.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="floats/cpp_dec_float.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.floats"></a><a class="link" href="floats.html" title="Floating Point Numbers">Floating Point Numbers</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../floats.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="gmp_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_cpp_dec_float">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.floats.cpp_dec_float"></a><a class="link" href="cpp_dec_float.html" title="cpp_dec_float">cpp_dec_float</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg/aos.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_fp_eg">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.floats.fp_eg"></a><a class="link" href="fp_eg.html" title="Examples">Examples</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/aos.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../fp_eg.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="jel.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_fp_eg_aos">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_multiprecision.tut.floats.fp_eg.aos"></a><a class="link" href="aos.html" title="Area of Circle">Area of
Circle</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/gi.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="nd.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="poly_eg.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_fp_eg_gi">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_multiprecision.tut.floats.fp_eg.gi"></a><a class="link" href="gi.html" title="Calculating an Integral">Calculating
an Integral</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/jel.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="aos.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="nd.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_fp_eg_jel">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_multiprecision.tut.floats.fp_eg.jel"></a><a class="link" href="jel.html" title="Defining a Special Function.">Defining
a Special Function.</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/nd.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="jel.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="gi.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_fp_eg_nd">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_multiprecision.tut.floats.fp_eg.nd"></a><a class="link" href="nd.html" title="Calculating a Derivative">Calculating
a Derivative</a>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/fp_eg/poly_eg.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -7,7 +7,7 @@
<link rel="home" href="../../../../index.html" title="Chapter 1. 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,9 +20,9 @@
</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">
+<div class="section boost_multiprecision_tut_floats_fp_eg_poly_eg">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_multiprecision.tut.floats.fp_eg.poly_eg"></a><a class="link" href="poly_eg.html" title="Polynomial Evaluation">Polynomial
Evaluation</a>
@@ -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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/gmp_float.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="cpp_dec_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="mpfr_float.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_gmp_float">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.floats.gmp_float"></a><a class="link" href="gmp_float.html" title="gmp_float">gmp_float</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/mpfr_float.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="gmp_float.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../floats.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="fp_eg.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_floats_mpfr_float">
<div class="titlepage"><div><div><h4 class="title">
<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>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../tut.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="ints/cpp_int.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_ints">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.ints"></a><a class="link" href="ints.html" title="Integer Types">Integer Types</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/cpp_int.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../ints.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.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="gmp_int.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_ints_cpp_int">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.ints.cpp_int"></a><a class="link" href="cpp_int.html" title="cpp_int">cpp_int</a>
</h4></div></div></div>
@@ -50,7 +50,7 @@
<span class="special">{</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">expression_template_option</span> <span class="identifier">value</span> <span class="special">=</span> <span class="identifier">et_off</span><span class="special">;</span> <span class="special">};</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_int</span><span class="special">;</span> <span class="comment">// arbitrary precision integer</span>
-<span class="keyword">typedef</span> <span class="identifier">rational_adapter</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_rational_backend</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">rational_adaptor</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_rational_backend</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_rational_backend</span><span class="special">></span> <span class="identifier">cpp_rational</span><span class="special">;</span> <span class="comment">// arbitrary precision rational number</span>
<span class="comment">// Fixed precision unsigned types:</span>
@@ -67,7 +67,7 @@
<span class="comment">// Over again, but with checking enabled this time:</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">signed_magnitude</span><span class="special">,</span> <span class="identifier">checked</span><span class="special">></span> <span class="special">></span> <span class="identifier">checked_cpp_int</span><span class="special">;</span>
-<span class="keyword">typedef</span> <span class="identifier">rational_adapter</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">signed_magnitude</span><span class="special">,</span> <span class="identifier">checked</span><span class="special">></span> <span class="special">></span> <span class="identifier">checked_cpp_rational_backend</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">rational_adaptor</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><</span><span class="number">0</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">signed_magnitude</span><span class="special">,</span> <span class="identifier">checked</span><span class="special">></span> <span class="special">></span> <span class="identifier">checked_cpp_rational_backend</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_rational_backend</span><span class="special">></span> <span class="identifier">checked_cpp_rational</span><span class="special">;</span>
<span class="comment">// Checked fixed precision unsigned types:</span>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="tom_int.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.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="egs/factorials.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_ints_egs">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.ints.egs"></a><a class="link" href="egs.html" title="Examples">Examples</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/bitops.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="factorials.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../egs.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="../../floats.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_ints_egs_bitops">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_multiprecision.tut.ints.egs.bitops"></a><a class="link" href="bitops.html" title="Bit Operations">Bit Operations</a>
</h5></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/egs/factorials.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../egs.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../egs.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="bitops.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_ints_egs_factorials">
<div class="titlepage"><div><div><h5 class="title">
<a name="boost_multiprecision.tut.ints.egs.factorials"></a><a class="link" href="factorials.html" title="Factorials">Factorials</a>
</h5></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/gmp_int.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="cpp_int.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.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="tom_int.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_ints_gmp_int">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.ints.gmp_int"></a><a class="link" href="gmp_int.html" title="gmp_int">gmp_int</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/ints/tom_int.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="gmp_int.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ints.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="egs.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_ints_tom_int">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.ints.tom_int"></a><a class="link" href="tom_int.html" title="tom_int">tom_int</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="primetest.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="rounding.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_lits">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.lits"></a><a class="link" href="lits.html" title="Literal Types and constexpr Support">Literal Types and <code class="computeroutput"><span class="identifier">constexpr</span></code> Support</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/mixed.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="rounding.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="../ref.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_mixed">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.mixed"></a><a class="link" href="mixed.html" title="Mixed Precision Arithmetic">Mixed Precision Arithmetic</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/primetest.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="random.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="lits.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_primetest">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.primetest"></a><a class="link" href="primetest.html" title="Primality Testing">Primality Testing</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/random.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="conversions.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="primetest.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_random">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.random"></a><a class="link" href="random.html" title="Generating Random Numbers">Generating Random Numbers</a>
</h3></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
<link rel="home" href="../../index.html" title="Chapter 1. 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,9 +20,9 @@
</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">
+<div class="section boost_multiprecision_tut_rational">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.rational"></a><a class="link" href="rational.html" title="Rational Number Types">Rational Number Types</a>
</h3></div></div></div>
@@ -31,7 +31,7 @@
<dt><span class="section">gmp_rational</span></dt>
<dt><span class="section">tommath_rational</span></dt>
<dt><span class="section">Use With Boost.Rational</span></dt>
-<dt><span class="section">rational_adapter</span></dt>
+<dt><span class="section">rational_adaptor</span></dt>
</dl></div>
<p>
The following back-ends provide rational number arithmetic:
@@ -178,12 +178,12 @@
<tr>
<td>
<p>
- <code class="computeroutput"><span class="identifier">rational_adapter</span></code>
+ <code class="computeroutput"><span class="identifier">rational_adaptor</span></code>
</p>
</td>
<td>
<p>
- boost/multiprecision/rational_adapter.hpp
+ boost/multiprecision/rational_adaptor.hpp
</p>
</td>
<td>
@@ -198,7 +198,7 @@
</td>
<td>
<p>
- All C++ adapter that allows any integer back-end type to be used
+ All C++ adaptor that allows any integer back-end type to be used
as a rational type.
</p>
</td>
@@ -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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/br.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -7,7 +7,7 @@
<link rel="home" href="../../../index.html" title="Chapter 1. Boost.Multiprecision">
<link rel="up" href="../rational.html" title="Rational Number Types">
<link rel="prev" href="tommath_rational.html" title="tommath_rational">
-<link rel="next" href="rational_adapter.html" title="rational_adapter">
+<link rel="next" href="rational_adaptor.html" title="rational_adaptor">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -20,9 +20,9 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="tommath_rational.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="rational_adapter.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="tommath_rational.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="rational_adaptor.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_rational_br">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.rational.br"></a><a class="link" href="br.html" title="Use With Boost.Rational">Use With Boost.Rational</a>
</h4></div></div></div>
@@ -45,7 +45,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
-<a accesskey="p" href="tommath_rational.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="rational_adapter.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
+<a accesskey="p" href="tommath_rational.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="rational_adaptor.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/cpp_rational.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="../rational.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="gmp_rational.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_rational_cpp_rational">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.rational.cpp_rational"></a><a class="link" href="cpp_rational.html" title="cpp_rational">cpp_rational</a>
</h4></div></div></div>
@@ -31,7 +31,7 @@
</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">typedef</span> <span class="identifier">rational_adapter</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_rational_backend</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">rational_adaptor</span><span class="special"><</span><span class="identifier">cpp_int_backend</span><span class="special"><></span> <span class="special">></span> <span class="identifier">cpp_rational_backend</span><span class="special">;</span>
<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">cpp_rational_backend</span><span class="special">></span> <span class="identifier">cpp_rational</span><span class="special">;</span>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/gmp_rational.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="cpp_rational.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="tommath_rational.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_rational_gmp_rational">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.rational.gmp_rational"></a><a class="link" href="gmp_rational.html" title="gmp_rational">gmp_rational</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/rational_adapter.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -1,13 +1,13 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>rational_adapter</title>
+<title>rational_adaptor</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 1. 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,11 +20,11 @@
</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">
+<div class="section boost_multiprecision_tut_rational_rational_adaptor">
<div class="titlepage"><div><div><h4 class="title">
-<a name="boost_multiprecision.tut.rational.rational_adapter"></a><a class="link" href="rational_adapter.html" title="rational_adapter">rational_adapter</a>
+<a name="boost_multiprecision.tut.rational.rational_adaptor"></a><a class="link" href="rational_adaptor.html" title="rational_adaptor">rational_adaptor</a>
</h4></div></div></div>
<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>
@@ -34,7 +34,7 @@
<span class="special">}}</span>
</pre>
<p>
- The class template <code class="computeroutput"><span class="identifier">rational_adapter</span></code>
+ The class template <code class="computeroutput"><span class="identifier">rational_adaptor</span></code>
is a back-end for <code class="computeroutput"><span class="identifier">number</span></code>
which converts any existing integer back-end into a rational-number back-end.
</p>
@@ -43,7 +43,7 @@
the use would be something like:
</p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">MyIntegerBackend</span><span class="special">></span> <span class="identifier">MyInt</span><span class="special">;</span>
-<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">rational_adapter</span><span class="special"><</span><span class="identifier">MyIntegerBackend</span><span class="special">></span> <span class="special">></span> <span class="identifier">MyRational</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="identifier">number</span><span class="special"><</span><span class="identifier">rational_adaptor</span><span class="special"><</span><span class="identifier">MyIntegerBackend</span><span class="special">></span> <span class="special">></span> <span class="identifier">MyRational</span><span class="special">;</span>
<span class="identifier">MyRational</span> <span class="identifier">r</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
<span class="identifier">r</span> <span class="special">/=</span> <span class="number">3</span><span class="special">;</span>
@@ -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: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rational/tommath_rational.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="gmp_rational.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="br.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_rational_tommath_rational">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_multiprecision.tut.rational.tommath_rational"></a><a class="link" href="tommath_rational.html" title="tommath_rational">tommath_rational</a>
</h4></div></div></div>
Modified: branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html (original)
+++ branches/release/libs/multiprecision/doc/html/boost_multiprecision/tut/rounding.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -22,7 +22,7 @@
<div class="spirit-nav">
<a accesskey="p" href="lits.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="mixed.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
-<div class="section">
+<div class="section boost_multiprecision_tut_rounding">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_multiprecision.tut.rounding"></a><a class="link" href="rounding.html" title="Rounding Rules for Conversions">Rounding Rules for
Conversions</a>
Modified: branches/release/libs/multiprecision/doc/html/index.html
==============================================================================
--- branches/release/libs/multiprecision/doc/html/index.html (original)
+++ branches/release/libs/multiprecision/doc/html/index.html 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -72,13 +72,22 @@
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>
<dt><span class="section">gmp_rational</span></dt>
<dt><span class="section">tommath_rational</span></dt>
<dt><span class="section">Use With Boost.Rational</span></dt>
-<dt><span class="section">rational_adapter</span></dt>
+<dt><span class="section">rational_adaptor</span></dt>
+</dl></dd>
+<dt><span class="section">Miscellaneous Number Types.</span></dt>
+<dd><dl>
+<dt><span class="section">logged_adaptor</span></dt>
+<dt><span class="section">debug_adaptor</span></dt>
+<dt><span class="section"><a href="boost_multiprecision/tut/misc/visualizers.html">Visual C++
+ Debugger Visualizers</a></span></dt>
</dl></dd>
<dt><span class="section"><a href="boost_multiprecision/tut/conversions.html">Constructing and
Interconverting Between Number Types</a></span></dt>
@@ -136,7 +145,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: January 14, 2013 at 19:06:40 GMT</small></p></td>
+<td align="left"><p><small>Last revised: March 08, 2013 at 11:50:36 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
Modified: branches/release/libs/multiprecision/doc/multiprecision.qbk
==============================================================================
--- branches/release/libs/multiprecision/doc/multiprecision.qbk (original)
+++ branches/release/libs/multiprecision/doc/multiprecision.qbk 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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_adaptor.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]]
@@ -406,7 +409,7 @@
{ static const expression_template_option value = et_off; };
typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer
- typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend;
+ typedef rational_adaptor<cpp_int_backend<> > cpp_rational_backend;
typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number
// Fixed precision unsigned types:
@@ -423,7 +426,7 @@
// Over again, but with checking enabled this time:
typedef number<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_int;
- typedef rational_adapter<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend;
+ typedef rational_adaptor<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend;
typedef number<cpp_rational_backend> checked_cpp_rational;
// Checked fixed precision unsigned types:
@@ -757,6 +760,7 @@
[endsect]
[section:mpfr_float mpfr_float]
+
`#include <boost/multiprecision/mpfr.hpp>`
namespace boost{ namespace multiprecision{
@@ -881,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:
@@ -890,7 +1031,7 @@
[[`cpp_rational`][boost/multiprecision/cpp_int.hpp][2][None][An all C++ Boost-licensed implementation.][Slower than [gmp].]]
[[`gmp_rational`][boost/multiprecision/gmp.hpp][2][[gmp]][Very fast and efficient back-end.][Dependency on GNU licensed [gmp] library.]]
[[`tommath_rational`][boost/multiprecision/tommath.hpp][2][[tommath]][All C/C++ implementation that's Boost Software Licence compatible.][Slower than [gmp].]]
-[[`rational_adapter`][boost/multiprecision/rational_adapter.hpp][N/A][none][All C++ adapter that allows any integer back-end type to be used as a rational type.][Requires an underlying integer back-end type.]]
+[[`rational_adaptor`][boost/multiprecision/rational_adaptor.hpp][N/A][none][All C++ adaptor that allows any integer back-end type to be used as a rational type.][Requires an underlying integer back-end type.]]
[[`boost::rational`][boost/rational.hpp][N/A][None][A C++ rational number type that can used with any `number` integer type.][The expression templates used by `number` end up being "hidden" inside `boost::rational`: performance may well suffer as a result.]]
]
@@ -900,7 +1041,7 @@
namespace boost{ namespace multiprecision{
- typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend;
+ typedef rational_adaptor<cpp_int_backend<> > cpp_rational_backend;
typedef number<cpp_rational_backend> cpp_rational;
@@ -1031,7 +1172,7 @@
[endsect]
-[section:rational_adapter rational_adapter]
+[section:rational_adaptor rational_adaptor]
namespace boost{ namespace multiprecision{
@@ -1040,13 +1181,13 @@
}}
-The class template `rational_adapter` is a back-end for `number` which converts any existing integer back-end
+The class template `rational_adaptor` is a back-end for `number` which converts any existing integer back-end
into a rational-number back-end.
So for example, given an integer back-end type `MyIntegerBackend`, the use would be something like:
typedef number<MyIntegerBackend> MyInt;
- typedef number<rational_adapter<MyIntegerBackend> > MyRational;
+ typedef number<rational_adaptor<MyIntegerBackend> > MyRational;
MyRational r = 2;
r /= 3;
@@ -1057,6 +1198,141 @@
[endsect]
+[section:misc Miscellaneous Number Types.]
+
+Backend types listed in this section are predominantly designed to aid debugging.
+
+[section:logged_adaptor logged_adaptor]
+
+`#include <boost/multiprecision/logged_adaptor.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_adaptor;
+
+ }} // namespaces
+
+The `logged_adaptor` 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_adaptor]
+
+When we examine program output we can clearly see that the diameter of the interval increases after each subtraction:
+
+[logged_adaptor_output]
+
+[endsect]
+
+[section:debug_adaptor debug_adaptor]
+
+`#include <boost/multiprecision/debug_adaptor.hpp>`
+
+ namespace boost{ namespace multiprecision{
+
+ template <Backend>
+ class debug_adaptor;
+
+ }} // namespaces
+
+The `debug_adaptor` 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 intercepts all operations on that object storing the result as a string within itself.
+
+This type provides `numeric_limits` support whenever the template argument Backend does so.
+
+This type is particularly useful when your debugger provides a good view of `std::string`: when this is the case
+multiprecision values can easily be inspected in the debugger by looking at the `debug_value` member of `debug_adaptor`.
+The down side of this approach is that runtimes are much slower when using this type. Set against that it can make
+debugging very much easier, certainly much easier than sprinkling code with `printf` statements.
+
+When used in conjunction with the Visual C++ debugger visualisers, the value of a multiprecision type that uses this
+backend is displayed in the debugger just a builtin value would be, here we're inspecting a value of type
+`number<debug_adaptor<cpp_dec_float<50> > >`:
+
+[$../debugger1.png]
+
+Otherwise you will need to expand out the view and look at the "debug_value" member:
+
+[$../debugger2.png]
+
+It works for all the backend types equally too, here it is inspecting a `number<debug_adaptor<gmp_rational> >`:
+
+[$../debugger3.png]
+
+
+[endsect]
+
+[section:visualizers Visual C++ Debugger Visualizers]
+
+Let's face it debugger multiprecision numbers is hard - simply because we can't easily inspect the value of the numbers.
+Visual C++ provides a partial solution in the shape of "visualizers" which provide improved views of complex data structures,
+these visualizers need to be added to the `[Visualizer]` section of `autoexp.dat` located in the `Common7\Packages\Debugger`
+directory of your Visual Studio installation. The actual visualizer code is in the sandbox
+[@https://svn.boost.org/svn/boost/sandbox/boost_docs/subprojects/DebuggerVisualizers/multiprecision.vis.txt here] - just cut and paste the code
+into your `autoexp.dat` file.
+
+[note These visualizers have only been tested with VC10, also given the ability of buggy visualizers to crash your Visual C++
+debugger, make sure you back up `autoexp.dat` file before using these!!]
+
+The first visualizer provides improved views of `debug_adaptor`:
+
+[$../debugger1.png]
+
+The next visualizer provides improved views of cpp_int: small numbers are displayed as actual values, while larger numbers are
+displayed as an array of hexadecimal parts, with the most significant part first.
+
+Here's what it looks like for small values:
+
+[$../debugger4.png]
+
+And for larger values:
+
+[$../debugger5.png]
+
+There is also a `~raw` child member that
+lets you see the actual members of the class:
+
+[$../debugger6.png]
+
+The visualizer for `cpp_dec_float` shows the first few digits of the value in the preview field, and the full array of digits
+when you expand the view. As before the `~raw` child gives you access to the actual data members:
+
+[$../debugger7.png]
+
+[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.
@@ -2025,7 +2301,7 @@
{ static const expression_template_option value = et_off; };
typedef number<cpp_int_backend<> > cpp_int; // arbitrary precision integer
- typedef rational_adapter<cpp_int_backend<> > cpp_rational_backend;
+ typedef rational_adaptor<cpp_int_backend<> > cpp_rational_backend;
typedef number<cpp_rational_backend> cpp_rational; // arbitrary precision rational number
// Fixed precision unsigned types:
@@ -2042,7 +2318,7 @@
// Over again, but with checking enabled this time:
typedef number<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_int;
- typedef rational_adapter<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend;
+ typedef rational_adaptor<cpp_int_backend<0, 0, signed_magnitude, checked> > checked_cpp_rational_backend;
typedef number<cpp_rational_backend> checked_cpp_rational;
// Checked fixed precision unsigned types:
@@ -2673,7 +2949,7 @@
[[number.hpp][Defines the `number` backend, is included by all the backend headers.]]
[[mpfr.hpp][Defines the mpfr_float_backend backend.]]
[[random.hpp][Defines code to interoperate with Boost.Random.]]
-[[rational_adapter.hpp][Defines the `rational_adapter` backend.]]
+[[rational_adaptor.hpp][Defines the `rational_adaptor` backend.]]
[[cpp_dec_float.hpp][Defines the `cpp_dec_float` backend.]]
[[tommath.hpp][Defines the `tommath_int` backend.]]
[[concepts/number_archetypes.hpp][Defines a backend concept archetypes for testing use.]]
@@ -3336,6 +3612,17 @@
[section:hist History]
+[h4 1.54]
+
+* [*Breaking change] renamed `rational_adapter` to `rational_adaptor`.
+* Add support for [mpfi].
+* Add logged_adaptor.
+* Fixed bug in integer division of `cpp_int` that results in incorrect sign of `cpp_int` when both arguments are small enough
+to fit in a `double_limb_type`. See [@https://svn.boost.org/trac/boost/ticket/8126 8126].
+* Fixed bug in subtraction of a single limb in `cpp_int` that results in incorrect value when the result should have a 0
+in the last limb: [@https://svn.boost.org/trac/boost/ticket/8133 8133].
+* Fixed bug in `cpp_int` where division of 0 by something doesn't get zero in the result: [@https://svn.boost.org/trac/boost/ticket/8160 8160].
+
[h4 1.53]
* First Release.
@@ -3380,7 +3667,7 @@
More a list of what ['could] be done, rather than what ['should] be done (which may be a much smaller list!).
* Add back-end support for libdecNumber.
-* Add an adapter back-end for complex number types.
+* Add an adaptor back-end for complex number types.
* Add a back-end for MPFR interval arithmetic.
* Add better multiplication routines (Karatsuba, FFT etc) to cpp_int_backend.
* Add assembly level routines to cpp_int_backend.
Modified: branches/release/libs/multiprecision/performance/performance_test.cpp
==============================================================================
--- branches/release/libs/multiprecision/performance/performance_test.cpp (original)
+++ branches/release/libs/multiprecision/performance/performance_test.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -34,7 +34,7 @@
#if defined(TEST_MPF) || defined(TEST_MPZ) || defined(TEST_MPQ) || defined(TEST_MPZ_BOOST_RATIONAL)
#include <boost/multiprecision/gmp.hpp>
-#include <boost/multiprecision/rational_adapter.hpp>
+#include <boost/multiprecision/rational_adaptor.hpp>
#endif
#ifdef TEST_CPP_DEC_FLOAT
#include <boost/multiprecision/cpp_dec_float.hpp>
@@ -44,7 +44,7 @@
#endif
#if defined(TEST_TOMMATH) || defined(TEST_TOMMATH_BOOST_RATIONAL)
#include <boost/multiprecision/tommath.hpp>
-#include <boost/multiprecision/rational_adapter.hpp>
+#include <boost/multiprecision/rational_adaptor.hpp>
#endif
#if defined(TEST_CPP_INT) || defined(TEST_CPP_INT_RATIONAL)
#include <boost/multiprecision/cpp_int.hpp>
Modified: branches/release/libs/multiprecision/test/Jamfile.v2
==============================================================================
--- branches/release/libs/multiprecision/test/Jamfile.v2 (original)
+++ branches/release/libs/multiprecision/test/Jamfile.v2 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -9,6 +9,7 @@
local ntl-path = [ modules.peek : NTL_PATH ] ;
local gmp_path = [ modules.peek : GMP_PATH ] ;
local mpfr_path = [ modules.peek : MPFR_PATH ] ;
+local mpfi_path = [ modules.peek : MPFI_PATH ] ;
local tommath_path = [ modules.peek : TOMMATH_PATH ] ;
project : requirements
@@ -16,11 +17,15 @@
<include>$(gmp_path)/mpfr
<include>$(gmp_path)/gmpfrxx
<include>$(mpfr_path)
+ <include>$(mpfi_path)
+ <include>$(mpfi_path)/src
<include>$(tommath_path)
<include>../../..
<search>$(gmp_path)
<search>$(mpfr_path)
<search>$(mpfr_path)/build.vc10/lib/Win32/Debug
+ <search>$(mpfi_path)
+ <search>$(mpfi_path)/src
<search>$(tommath_path)
# We set these to make it easier to set up and test GMP and MPFR under Win32:
<toolset>msvc:<runtime-link>static
@@ -41,6 +46,7 @@
lib gmp ;
lib mpfr ;
+lib mpfi ;
if $(tommath_path)
{
@@ -66,6 +72,7 @@
run test_arithmetic_mpfr.cpp mpfr gmp : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ;
run test_arithmetic_mpfr_50.cpp mpfr gmp : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ;
+run test_arithmetic_mpfr_50_static.cpp mpfr gmp : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ;
run test_arithmetic_tommath.cpp $(TOMMATH) : : : [ check-target-builds ../config//has_tommath : : <build>no ] ;
run test_arithmetic_tommath_br.cpp $(TOMMATH) : : : [ check-target-builds ../config//has_tommath : : <build>no ] ;
@@ -94,6 +101,16 @@
run test_arithmetic_ab_2.cpp ;
run test_arithmetic_ab_3.cpp ;
+run test_cpp_dec_float_round.cpp ;
+
+run test_arithmetic_logged_1.cpp ;
+run test_arithmetic_logged_2.cpp ;
+
+run test_arithmetic_dbg_adptr1.cpp ;
+run test_arithmetic_dbg_adptr2.cpp ;
+
+run test_arithmetic_mpfi_50.cpp mpfi mpfr gmp : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ;
+
run test_numeric_limits.cpp
: # command line
: # input files
@@ -171,288 +188,44 @@
<define>TEST_CPP_INT
: test_numeric_limits_cpp_int ;
-run test_exp.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_exp_mpf50 ;
-
-run test_log.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_log_mpf50 ;
-
-run test_pow.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_pow_mpf50 ;
-
-run test_sinh.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_sinh_mpf50 ;
-
-run test_cosh.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_cosh_mpf50 ;
-
-run test_tanh.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_tanh_mpf50 ;
-
-run test_exp.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_exp_mpfr50 ;
-
-run test_log.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_log_mpfr50 ;
-
-run test_pow.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_pow_mpfr50 ;
-
-run test_sinh.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_sinh_mpfr50 ;
-
-run test_cosh.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_cosh_mpfr50 ;
-
-run test_tanh.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_tanh_mpfr50 ;
-
-run test_exp.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_exp_cpp_dec_float ;
-
-run test_sqrt.cpp
+run test_numeric_limits.cpp mpfi mpfr gmp
: # command line
: # input files
: # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_sqrt_cpp_dec_float ;
-
-run test_log.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_log_cpp_dec_float ;
-
-run test_pow.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_pow_cpp_dec_float ;
-
-run test_sinh.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_sinh_cpp_dec_float ;
-
-run test_cosh.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_cosh_cpp_dec_float ;
-
-run test_tanh.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_tanh_cpp_dec_float ;
-
-run test_sin.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_sin_cpp_dec_float ;
-
-run test_sin.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_sin_mpf50 ;
-
-run test_sin.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_sin_mpfr_50 ;
-
-run test_cos.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_cos_cpp_dec_float ;
-
-run test_cos.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_cos_mpf50 ;
-
-run test_cos.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_cos_mpfr_50 ;
-
-run test_asin.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_asin_cpp_dec_float ;
+ <define>TEST_MPFI_50
+ [ check-target-builds ../config//has_mpfi : : <build>no ]
+ : test_numeric_limits_mpfi_50 ;
-run test_asin.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_asin_mpf50 ;
-
-run test_asin.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_asin_mpfr_50 ;
-
-run test_acos.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_acos_cpp_dec_float ;
-
-run test_acos.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_acos_mpf50 ;
-
-run test_acos.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_acos_mpfr_50 ;
-
-run test_atan.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_atan_mpf50 ;
-
-run test_atan.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_atan_cpp_dec_float ;
-
-run test_atan.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_atan_mpfr_50 ;
-
-run test_tan.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_tan_mpf50 ;
-
-run test_tan.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_tan_cpp_dec_float ;
-
-run test_tan.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_tan_mpfr_50 ;
+for local source in test_exp.cpp test_log.cpp test_pow.cpp test_sinh.cpp test_sqrt.cpp test_cosh.cpp test_tanh.cpp test_sin.cpp test_cos.cpp test_tan.cpp test_asin.cpp test_acos.cpp test_atan.cpp test_round.cpp test_fpclassify.cpp
+{
+ run $(source) gmp
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_gmp : : <build>no ]
+ <define>TEST_MPF_50
+ : $(source:B)_mpf50 ;
+ run $(source) mpfr gmp
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_mpfr : : <build>no ]
+ <define>TEST_MPFR_50
+ : $(source:B)_mpfr50 ;
+ run $(source) mpfi mpfr gmp
+ : # command line
+ : # input files
+ : # requirements
+ [ check-target-builds ../config//has_mpfi : : <build>no ]
+ <define>TEST_MPFI_50
+ : $(source:B)_mpfi50 ;
+ run $(source)
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_CPP_DEC_FLOAT
+ : $(source:B)_cpp_dec_float ;
+}
run test_gmp_conversions.cpp gmp
: # command line
@@ -466,66 +239,6 @@
: # requirements
[ check-target-builds ../config//has_mpfr : : <build>no ] ;
-run test_round.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_BACKEND
- : test_round_backend_concept ;
-
-run test_round.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_round_mpf50 ;
-
-run test_round.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_round_mpfr_50 ;
-
-run test_round.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_round_cpp_dec_float ;
-
-run test_fpclassify.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_BACKEND
- : test_fpclassify_backend_concept ;
-
-run test_fpclassify.cpp gmp
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPF_50
- [ check-target-builds ../config//has_gmp : : <build>no ]
- : test_fpclassify_mpf50 ;
-
-run test_fpclassify.cpp mpfr
- : # command line
- : # input files
- : # requirements
- <define>TEST_MPFR_50
- [ check-target-builds ../config//has_mpfr : : <build>no ]
- : test_fpclassify_mpfr_50 ;
-
-run test_fpclassify.cpp
- : # command line
- : # input files
- : # requirements
- <define>TEST_CPP_DEC_FLOAT
- : test_fpclassify_cpp_dec_float ;
-
run test_constants.cpp gmp
: # command line
: # input files
@@ -610,6 +323,15 @@
[ check-target-builds ../config//has_mpfr : : <build>no ]
: test_float_io_mpfr ;
+run test_float_io.cpp mpfi mpfr gmp
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_MPFI_50
+ release # Otherwise runtime is slow
+ [ check-target-builds ../config//has_mpfi : : <build>no ]
+ : test_float_io_mpfi ;
+
run test_int_io.cpp $(TOMMATH)
: # command line
: # input files
@@ -725,6 +447,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_adaptor.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 ;
@@ -766,13 +500,20 @@
run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp ;
#run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp ;
+run ublas_interop/test1.cpp ublas_interop/test11.cpp ublas_interop/test12.cpp ublas_interop/test13.cpp : : : <define>TEST_ET=1 : ublas1_et ;
+run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ublas_interop/test23.cpp : : : <define>TEST_ET=1 : ublas2_et ;
+#run ublas_interop/test3.cpp ublas_interop/test31.cpp ublas_interop/test32.cpp ublas_interop/test33.cpp : : : <define>TEST_ET=1 : ublas3_et ;
+run ublas_interop/test4.cpp ublas_interop/test42.cpp ublas_interop/test43.cpp : : : <define>TEST_ET=1 : ublas3_et ;
+run ublas_interop/test5.cpp ublas_interop/test52.cpp ublas_interop/test53.cpp : : : <define>TEST_ET=1 : ublas4_et ;
+run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp : : : <define>TEST_ET=1 : ublas5_et ;
+#run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp : : : <define>TEST_ET=1 : ublas6_et ;
if $(enable-specfun)
{
for local source in [ glob math/*.cpp ]
{
- run $(source) mpfr gmp /boost/test//boost_test_exec_monitor/<link>static /boost/regex//boost_regex/<link>static
+ run $(source) mpfr gmp /boost/test//boost_unit_test_framework/<link>static /boost/regex//boost_regex/<link>static
: # command line
: # input files
: # requirements
@@ -783,7 +524,7 @@
<toolset>msvc:<cxxflags>-bigobj
release
: $(source:B)_mpfr ;
- run $(source) gmp /boost/test//boost_test_exec_monitor/<link>static /boost/regex//boost_regex/<link>static
+ run $(source) gmp /boost/test//boost_unit_test_framework/<link>static /boost/regex//boost_regex/<link>static
: # command line
: # input files
: # requirements
@@ -794,7 +535,7 @@
<toolset>msvc:<cxxflags>-bigobj
release
: $(source:B)_mpf ;
- run $(source) /boost/test//boost_test_exec_monitor/<link>static /boost/regex//boost_regex/<link>static
+ run $(source) /boost/test//boost_unit_test_framework/<link>static /boost/regex//boost_regex/<link>static
: # command line
: # input files
: # requirements
@@ -881,8 +622,12 @@
<define>TEST_BACKEND
<debug-symbols>off
: $(source:B)_backend_concept ;
+
+ compile $(source)
+ : # requirements
+ <define>TEST_LOGGED_ADAPTER
+ <debug-symbols>off
+ : $(source:B)_logged_adaptor ;
}
}
-
-
Modified: branches/release/libs/multiprecision/test/concepts/number_concept_check.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/concepts/number_concept_check.cpp (original)
+++ branches/release/libs/multiprecision/test/concepts/number_concept_check.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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_adaptor.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_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
}
Modified: branches/release/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp (original)
+++ branches/release/libs/multiprecision/test/concepts/sf_concept_check_basic.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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_adaptor.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_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
}
int main()
Modified: branches/release/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp (original)
+++ branches/release/libs/multiprecision/test/concepts/sf_concept_check_bessel.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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_adaptor.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_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
}
int main()
Modified: branches/release/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp (original)
+++ branches/release/libs/multiprecision/test/concepts/sf_concept_check_elliptic.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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_adaptor.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_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
}
int main()
Modified: branches/release/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp (original)
+++ branches/release/libs/multiprecision/test/concepts/sf_concept_check_gamma.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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_adaptor.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_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
}
int main()
Modified: branches/release/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp (original)
+++ branches/release/libs/multiprecision/test/concepts/sf_concept_check_poly.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 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_adaptor.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_adaptor<boost::multiprecision::cpp_dec_float<50> > > num_t;
+ test_extra(num_t());
+#endif
}
int main()
Modified: branches/release/libs/multiprecision/test/coverage/Makefile
==============================================================================
--- branches/release/libs/multiprecision/test/coverage/Makefile (original)
+++ branches/release/libs/multiprecision/test/coverage/Makefile 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -13,7 +13,7 @@
../../../../boost/multiprecision/random.hpp\
../../../../boost/multiprecision/cpp_int.hpp\
../../../../boost/multiprecision/miller_rabin.hpp\
-../../../../boost/multiprecision/rational_adapter.hpp\
+../../../../boost/multiprecision/rational_adaptor.hpp\
../../../../boost/multiprecision/concepts/mp_number_archetypes.hpp\
../../../../boost/multiprecision/detail/big_lanczos.hpp\
../../../../boost/multiprecision/detail/digits.hpp\
Modified: branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp (original)
+++ branches/release/libs/multiprecision/test/math/log1p_expm1_test.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -41,7 +41,8 @@
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
-#include <boost/test/test_exec_monitor.hpp>
+#define BOOST_TEST_MAIN
+#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>
#include <boost/math/special_functions/log1p.hpp>
#include <boost/math/special_functions/expm1.hpp>
@@ -60,7 +61,7 @@
//
// Note that when this file is first run on a new platform many of
// these tests will fail: the default accuracy is 1 epsilon which
-// is too tight for most platforms. In this situation you will
+// is too tight for most platforms. In this situation you will
// need to cast a human eye over the error rates reported and make
// a judgement as to whether they are acceptable. Either way please
// report the results to the Boost mailing list. Acceptable rates of
@@ -112,12 +113,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -144,7 +145,6 @@
test(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp (original)
+++ branches/release/libs/multiprecision/test/math/powm1_sqrtp1m1_test.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -41,7 +41,8 @@
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
-#include <boost/test/test_exec_monitor.hpp>
+#define BOOST_TEST_MAIN
+#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>
#include <boost/math/special_functions/sqrt1pm1.hpp>
#include <boost/math/special_functions/powm1.hpp>
@@ -60,7 +61,7 @@
//
// Note that when this file is first run on a new platform many of
// these tests will fail: the default accuracy is 1 epsilon which
-// is too tight for most platforms. In this situation you will
+// is too tight for most platforms. In this situation you will
// need to cast a human eye over the error rates reported and make
// a judgement as to whether they are acceptable. Either way please
// report the results to the Boost mailing list. Acceptable rates of
@@ -103,12 +104,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -136,7 +137,6 @@
test_powm1_sqrtp1m1(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_powm1_sqrtp1m1(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_bessel_i.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_i.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_i.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -70,12 +70,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -105,7 +105,6 @@
test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_bessel_j.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_j.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_j.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -113,12 +113,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -146,7 +146,6 @@
test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_bessel_k.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_k.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_k.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -86,12 +86,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -119,7 +119,6 @@
test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_bessel_y.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_bessel_y.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_bessel_y.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -112,12 +112,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -145,7 +145,6 @@
test_bessel(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_bessel(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_beta.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_beta.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_beta.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -98,12 +98,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -131,7 +131,6 @@
test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_binomial_coeff.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -77,12 +77,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -110,7 +110,6 @@
test_binomial(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_binomial(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_carlson.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_carlson.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_carlson.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -69,12 +69,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -102,7 +102,6 @@
test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_cbrt.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_cbrt.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_cbrt.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -59,12 +59,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -91,7 +91,6 @@
test_cbrt(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_cbrt(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_digamma.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_digamma.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_digamma.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -73,12 +73,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -105,6 +105,5 @@
test_digamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_digamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ellint_1.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ellint_1.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ellint_1.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -66,12 +66,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -98,6 +98,5 @@
test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ellint_2.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ellint_2.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ellint_2.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -59,12 +59,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -91,6 +91,5 @@
test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ellint_3.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ellint_3.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ellint_3.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -80,12 +80,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -112,6 +112,5 @@
test_spots(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_spots(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_erf.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_erf.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_erf.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -80,12 +80,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -112,6 +112,5 @@
test_erf(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_erf(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_expint.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_expint.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_expint.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -80,12 +80,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -112,6 +112,5 @@
test_expint(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_expint(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_gamma.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_gamma.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_gamma.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -94,12 +94,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -126,6 +126,5 @@
test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_hermite.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_hermite.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_hermite.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -59,12 +59,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -91,6 +91,5 @@
test_hermite(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_hermite(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ibeta.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -90,12 +90,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -122,6 +122,5 @@
test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_2.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -90,12 +90,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -122,6 +122,5 @@
test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_3.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -76,12 +76,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -108,6 +108,5 @@
test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_4.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -83,12 +83,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -115,6 +115,5 @@
test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_inv_1.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -69,12 +69,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -101,6 +101,5 @@
test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_ibeta_inv_ab_4.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -62,12 +62,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -94,6 +94,5 @@
test_beta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_beta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_igamma.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_igamma.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_igamma.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -66,12 +66,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -98,6 +98,5 @@
test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_igamma_inv.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -81,12 +81,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -113,6 +113,5 @@
test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_igamma_inva.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -60,12 +60,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -92,6 +92,5 @@
test_gamma(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_gamma(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_laguerre.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_laguerre.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_laguerre.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -59,12 +59,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -91,6 +91,5 @@
test_laguerre(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_laguerre(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_legendre.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_legendre.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_legendre.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -59,12 +59,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -91,6 +91,5 @@
test_legendre_p(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_legendre_p(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_tgamma_ratio.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -73,12 +73,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -105,6 +105,5 @@
test_tgamma_ratio(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_tgamma_ratio(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/math/test_zeta.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/math/test_zeta.cpp (original)
+++ branches/release/libs/multiprecision/test/math/test_zeta.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -66,12 +66,12 @@
// Finish off by printing out the compiler/stdlib/platform names,
// we do this to make it easier to mark up expected error rates.
//
- std::cout << "Tests run with " << BOOST_COMPILER << ", "
+ std::cout << "Tests run with " << BOOST_COMPILER << ", "
<< BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
}
-int test_main(int, char* [])
+BOOST_AUTO_TEST_CASE( test_main )
{
using namespace boost::multiprecision;
expected_results();
@@ -100,6 +100,5 @@
test_zeta(number<cpp_dec_float<30> >(), "number<cpp_dec_float<30> >");
test_zeta(number<cpp_dec_float<35, long long, std::allocator<void> > >(), "number<cpp_dec_float<35, long long, std::allocator<void> > >");
#endif
- return 0;
}
Modified: branches/release/libs/multiprecision/test/test.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/test.hpp (original)
+++ branches/release/libs/multiprecision/test/test.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -43,7 +43,7 @@
}
template <class T>
-typename boost::disable_if_c<boost::multiprecision::number_category<T>::value == boost::multiprecision::number_kind_integer, T>::type relative_error(T a, T b)
+typename boost::disable_if_c<(boost::multiprecision::number_category<T>::value == boost::multiprecision::number_kind_integer) || boost::multiprecision::is_interval_number<T>::value, T>::type relative_error(T a, T b)
{
using std::abs;
using detail::abs;
@@ -71,6 +71,7 @@
b = min_val;
else if((b > -min_val) && (b < 0))
b = -min_val;
+
return (std::max)(abs(T((a-b)/a)), abs(T((a-b)/b))) / std::numeric_limits<T>::epsilon();
}
@@ -81,6 +82,7 @@
a = min_val;
if(abs(b) < min_val)
b = min_val;
+
return (std::max)(abs(T((a-b)/a)), abs(T((a-b)/b))) / std::numeric_limits<T>::epsilon();
}
@@ -92,6 +94,14 @@
return relative_error<cast_type>(static_cast<cast_type>(a), static_cast<cast_type>(b));
}
+template <class T>
+typename boost::enable_if_c<boost::multiprecision::is_interval_number<T>::value, T>::type relative_error(T a, T b)
+{
+ typename boost::multiprecision::component_type<T>::type am = median(a);
+ typename boost::multiprecision::component_type<T>::type bm = median(b);
+ return relative_error<typename boost::multiprecision::component_type<T>::type>(am, bm);
+}
+
enum
{
Modified: branches/release/libs/multiprecision/test/test_acos.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_acos.cpp (original)
+++ branches/release/libs/multiprecision/test/test_acos.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,12 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -100,6 +104,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_arithmetic_mpfr_50.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_arithmetic_mpfr_50.cpp (original)
+++ branches/release/libs/multiprecision/test/test_arithmetic_mpfr_50.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -20,7 +20,6 @@
int main()
{
test<boost::multiprecision::mpfr_float_50>();
- test<boost::multiprecision::static_mpfr_float_50>();
return boost::report_errors();
}
Modified: branches/release/libs/multiprecision/test/test_arithmetic_mpz.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_arithmetic_mpz.cpp (original)
+++ branches/release/libs/multiprecision/test/test_arithmetic_mpz.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -8,14 +8,14 @@
#endif
#include <boost/multiprecision/gmp.hpp>
-#include <boost/multiprecision/rational_adapter.hpp>
+#include <boost/multiprecision/rational_adaptor.hpp>
#include "test_arithmetic.hpp"
int main()
{
test<boost::multiprecision::mpz_int>();
- test<boost::multiprecision::number<boost::multiprecision::rational_adapter<boost::multiprecision::gmp_int> > >();
+ test<boost::multiprecision::number<boost::multiprecision::rational_adaptor<boost::multiprecision::gmp_int> > >();
return boost::report_errors();
}
Modified: branches/release/libs/multiprecision/test/test_arithmetic_tommath.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_arithmetic_tommath.cpp (original)
+++ branches/release/libs/multiprecision/test/test_arithmetic_tommath.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -17,7 +17,7 @@
int main()
{
test<boost::multiprecision::tom_int>();
- test<boost::multiprecision::number<boost::multiprecision::rational_adapter<boost::multiprecision::tommath_int> > >();
+ test<boost::multiprecision::number<boost::multiprecision::rational_adaptor<boost::multiprecision::tommath_int> > >();
return boost::report_errors();
}
Modified: branches/release/libs/multiprecision/test/test_asin.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_asin.cpp (original)
+++ branches/release/libs/multiprecision/test/test_asin.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,12 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -96,6 +100,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_atan.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_atan.cpp (original)
+++ branches/release/libs/multiprecision/test/test_atan.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,12 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -194,9 +198,13 @@
err = relative_error(T(atan2(T(0), T(1))), atan2_def(T(0), T(1))).template convert_to<unsigned>();
if(err > max_err)
max_err = err;
- err = relative_error(T(atan2(T(0), T(-1))), atan2_def(T(0), T(-1))).template convert_to<unsigned>();
- if(err > max_err)
- max_err = err;
+ if(!boost::multiprecision::is_interval_number<T>::value)
+ {
+ // We don't test this with intervals as [-0,0] leads to strange behaviour in atan2...
+ err = relative_error(T(atan2(T(0), T(-1))), atan2_def(T(0), T(-1))).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
T pi;
pi.backend() = boost::multiprecision::default_ops::get_constant_pi<typename T::backend_type>();
@@ -246,6 +254,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_cos.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_cos.cpp (original)
+++ branches/release/libs/multiprecision/test/test_cos.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,12 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -296,6 +300,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_cosh.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_cosh.cpp (original)
+++ branches/release/libs/multiprecision/test/test_cosh.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,12 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -138,6 +142,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_cpp_int.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_cpp_int.cpp (original)
+++ branches/release/libs/multiprecision/test/test_cpp_int.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -387,6 +387,84 @@
BOOST_CHECK_EQUAL(q, a);
BOOST_CHECK_EQUAL(r, 1);
}
+ // Bug https://svn.boost.org/trac/boost/ticket/8126:
+ test_type a("-4294967296");
+ test_type b("4294967296");
+ test_type c("-1");
+ a = (a / b);
+ BOOST_CHECK_EQUAL(a, -1);
+ a = -4294967296;
+ a = (a / b) * c;
+ BOOST_CHECK_EQUAL(a, 1);
+ a = -23;
+ b = 23;
+ a = (a / b) * c;
+ BOOST_CHECK_EQUAL(a, 1);
+ a = -23;
+ a = (a / b) / c;
+ BOOST_CHECK_EQUAL(a, 1);
+ a = test_type("-26607734784073568386365259775");
+ b = test_type("8589934592");
+ a = a / b;
+ BOOST_CHECK_EQUAL(a, test_type("-3097548007973652377"));
+ // Bug https://svn.boost.org/trac/boost/ticket/8133:
+ a = test_type("0x12345600012434ffffffffffffffffffffffff");
+ unsigned ui = 0xffffffff;
+ a = a - ui;
+ BOOST_CHECK_EQUAL(a, test_type("0x12345600012434ffffffffffffffff00000000"));
+ a = test_type("0x12345600012434ffffffffffffffffffffffff");
+#ifndef BOOST_NO_LONG_LONG
+ unsigned long long ull = 0xffffffffffffffffuLL;
+ a = a - ull;
+ BOOST_CHECK_EQUAL(a, test_type("0x12345600012434ffffffff0000000000000000"));
+#endif
+ //
+ // Now check that things which should be zero really are
+ // https://svn.boost.org/trac/boost/ticket/8145:
+ //
+ a = -1;
+ a += 1;
+ BOOST_CHECK_EQUAL(a, 0);
+ a = 1;
+ a += -1;
+ BOOST_CHECK_EQUAL(a, 0);
+ a = -1;
+ a += test_type(1);
+ BOOST_CHECK_EQUAL(a, 0);
+ a = 1;
+ a += test_type(-1);
+ BOOST_CHECK_EQUAL(a, 0);
+ a = test_type("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
+ a -= test_type("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
+ BOOST_CHECK_EQUAL(a, 0);
+ a = -test_type("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
+ a += test_type("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
+ BOOST_CHECK_EQUAL(a, 0);
+ a = 2;
+ a *= 0;
+ BOOST_CHECK_EQUAL(a, 0);
+ a = -2;
+ a *= 0;
+ BOOST_CHECK_EQUAL(a, 0);
+ a = 2;
+ a *= test_type(0);
+ BOOST_CHECK_EQUAL(a, 0);
+ a = -2;
+ a *= test_type(0);
+ BOOST_CHECK_EQUAL(a, 0);
+ a = -2;
+ a /= 50;
+ BOOST_CHECK_EQUAL(a, 0);
+ a = -test_type("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
+ a /= (1 + test_type("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"));
+ BOOST_CHECK_EQUAL(a, 0);
+ // https://svn.boost.org/trac/boost/ticket/8160
+ a = 1;
+ a = 0 / test_type(1);
+ BOOST_CHECK_EQUAL(a, 0);
+ a = 1;
+ a = 0 % test_type(25);
+ BOOST_CHECK_EQUAL(a, 0);
}
void test()
Modified: branches/release/libs/multiprecision/test/test_exp.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_exp.cpp (original)
+++ branches/release/libs/multiprecision/test/test_exp.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,12 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -178,6 +182,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_float_io.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_float_io.cpp (original)
+++ branches/release/libs/multiprecision/test/test_float_io.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -9,10 +9,11 @@
# define _SCL_SECURE_NO_WARNINGS
#endif
-#if !defined(TEST_MPF_50) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50)
+#if !defined(TEST_MPF_50) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
# define TEST_CPP_DEC_FLOAT
# define TEST_MPFR_50
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -29,6 +30,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_CPP_DEC_FLOAT
#include <boost/multiprecision/cpp_dec_float.hpp>
#endif
@@ -287,6 +291,13 @@
test_round_trip<boost::multiprecision::mpfr_float_50>();
test_round_trip<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+
+ test_round_trip<boost::multiprecision::mpfr_float_50>();
+ test_round_trip<boost::multiprecision::mpfr_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_fpclassify.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_fpclassify.cpp (original)
+++ branches/release/libs/multiprecision/test/test_fpclassify.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -14,9 +14,10 @@
#include <boost/math/special_functions/fpclassify.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
# define TEST_MPFR_50
+# define TEST_MPFI_50
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
@@ -35,6 +36,9 @@
#ifdef TEST_MPFR_50
#include <boost/multiprecision/mpfr.hpp>
#endif
+#ifdef TEST_MPFI_50
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -309,6 +313,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_log.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_log.cpp (original)
+++ branches/release/libs/multiprecision/test/test_log.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,11 +16,13 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFR_50
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -37,6 +39,9 @@
#ifdef TEST_MPFR_50
#include <boost/multiprecision/mpfr.hpp>
#endif
+#ifdef TEST_MPFI_50
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -206,6 +211,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_mixed_cpp_int.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_mixed_cpp_int.cpp (original)
+++ branches/release/libs/multiprecision/test/test_mixed_cpp_int.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -69,10 +69,39 @@
}
}
+void test_rational_mixed()
+{
+ using namespace boost::multiprecision;
+ cpp_int a(2);
+ cpp_rational r(10);
+
+ BOOST_CHECK_EQUAL(a + -r, -8);
+ BOOST_CHECK_EQUAL(-r + a, -8);
+ BOOST_CHECK_EQUAL(-a + r, 8);
+ BOOST_CHECK_EQUAL(r + -a, 8);
+
+ BOOST_CHECK_EQUAL(a - -r, 12);
+ BOOST_CHECK_EQUAL(-r - a, -12);
+ BOOST_CHECK_EQUAL(-a - r, -12);
+ BOOST_CHECK_EQUAL(r - -a, 12);
+
+ BOOST_CHECK_EQUAL(a * -r, -20);
+ BOOST_CHECK_EQUAL(-r * a, -20);
+ BOOST_CHECK_EQUAL(-a * r, -20);
+ BOOST_CHECK_EQUAL(r * -a, -20);
+
+ BOOST_CHECK_EQUAL(a / -r, cpp_rational(-2, 10));
+ BOOST_CHECK_EQUAL(-r / a, -5);
+ BOOST_CHECK_EQUAL(cpp_rational(-a / r), cpp_rational(-2, 10));
+ BOOST_CHECK_EQUAL(r / -a, -5);
+}
+
int main()
{
using namespace boost::multiprecision;
+ test_rational_mixed();
+
test<checked_int512_t, checked_int1024_t>();
test<checked_int256_t, checked_int512_t>();
test<number<cpp_int_backend<64, 64, signed_magnitude, checked, void>, et_off>, checked_int128_t>();
Modified: branches/release/libs/multiprecision/test/test_numeric_limits.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_numeric_limits.cpp (original)
+++ branches/release/libs/multiprecision/test/test_numeric_limits.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -11,7 +11,7 @@
#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \
!defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && \
- !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT)
+ !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
# define TEST_MPF
# define TEST_BACKEND
@@ -22,6 +22,7 @@
# define TEST_MPQ
# define TEST_TOMMATH
# define TEST_CPP_INT
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -44,6 +45,9 @@
#if defined(TEST_MPFR) || defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_TOMMATH
#include <boost/multiprecision/tommath.hpp>
#endif
@@ -236,6 +240,10 @@
#ifdef TEST_MPFR_50
test<boost::multiprecision::mpfr_float_50>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float>();
+#endif
#ifdef TEST_TOMMATH
test<boost::multiprecision::tom_int>();
#endif
Modified: branches/release/libs/multiprecision/test/test_pow.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_pow.cpp (original)
+++ branches/release/libs/multiprecision/test/test_pow.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,12 +16,13 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
//# define TEST_MPF
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
# define TEST_MPFR_50
+# define TEST_MPFI_50
#ifdef _MSC_VER
#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
@@ -38,6 +39,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -581,6 +585,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_rational_io.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_rational_io.cpp (original)
+++ branches/release/libs/multiprecision/test/test_rational_io.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -36,7 +36,7 @@
#include <boost/algorithm/string/case_conv.hpp>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/uniform_int.hpp>
-#include <boost/multiprecision/rational_adapter.hpp>
+#include <boost/multiprecision/rational_adaptor.hpp>
#include "test.hpp"
#include <iostream>
#include <iomanip>
@@ -130,7 +130,7 @@
#ifdef TEST_MPQ
test_round_trip<boost::multiprecision::mpq_rational>();
test_round_trip<boost::rational<boost::multiprecision::mpz_int> >();
- test_round_trip<boost::multiprecision::number<boost::multiprecision::rational_adapter<boost::multiprecision::gmp_int> > >();
+ test_round_trip<boost::multiprecision::number<boost::multiprecision::rational_adaptor<boost::multiprecision::gmp_int> > >();
#endif
#ifdef TEST_TOMMATH
test_round_trip<boost::rational<boost::multiprecision::tom_int> >();
Modified: branches/release/libs/multiprecision/test/test_round.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_round.cpp (original)
+++ branches/release/libs/multiprecision/test/test_round.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -15,9 +15,10 @@
#include <boost/random/mersenne_twister.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
# define TEST_MPFR_50
+# define TEST_MPFI_50
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
@@ -36,6 +37,9 @@
#ifdef TEST_MPFR_50
#include <boost/multiprecision/mpfr.hpp>
#endif
+#ifdef TEST_MPFI_50
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -72,7 +76,7 @@
}
template <class T, class U>
-void check_within_half(T a, U u)
+typename boost::disable_if_c<boost::multiprecision::is_interval_number<T>::value>::type check_within_half(T a, U u)
{
BOOST_MATH_STD_USING
if(fabs(a-u) > 0.5f)
@@ -88,6 +92,23 @@
<< std::left << a << u << std::endl;
}
}
+template <class T, class U>
+typename boost::enable_if_c<boost::multiprecision::is_interval_number<T>::value>::type check_within_half(T a, U u)
+{
+ BOOST_MATH_STD_USING
+ if(upper(T(fabs(a-u))) > 0.5f)
+ {
+ BOOST_ERROR("Rounded result differed by more than 0.5 from the original");
+ std::cerr << "Values were: " << std::setprecision(35) << std::setw(40)
+ << std::left << a << u << std::endl;
+ }
+ if((upper(T(fabs(a - u))) == 0.5f) && (fabs(static_cast<T>(u)) < fabs(a)))
+ {
+ BOOST_ERROR("Rounded result was towards zero with boost::round");
+ std::cerr << "Values were: " << std::setprecision(35) << std::setw(40)
+ << std::left << a << u << std::endl;
+ }
+}
//
// We may not have an abs overload for long long so provide a fall back:
@@ -390,6 +411,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_sin.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_sin.cpp (original)
+++ branches/release/libs/multiprecision/test/test_sin.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,9 +16,10 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
-//# define TEST_MPF
+# define TEST_MPFR_50
+# define TEST_MPFI_50
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -290,6 +294,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_sinh.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_sinh.cpp (original)
+++ branches/release/libs/multiprecision/test/test_sinh.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,9 +16,10 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
-//# define TEST_MPF
+# define TEST_MPFR_50
+# define TEST_MPFI_50
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -214,6 +218,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_sqrt.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_sqrt.cpp (original)
+++ branches/release/libs/multiprecision/test/test_sqrt.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,9 +16,10 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
-//# define TEST_MPF
+# define TEST_MPFR_50
+# define TEST_MPFI_50
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -183,6 +187,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_tan.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_tan.cpp (original)
+++ branches/release/libs/multiprecision/test/test_tan.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,9 +16,9 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
-//# define TEST_MPF
+# define TEST_MPFI_50
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
# define TEST_MPFR_50
@@ -38,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -588,6 +591,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/test_tanh.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/test_tanh.cpp (original)
+++ branches/release/libs/multiprecision/test/test_tanh.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -16,9 +16,10 @@
#include <boost/array.hpp>
#include "test.hpp"
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ)
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50)
# define TEST_MPF_50
-//# define TEST_MPF
+# define TEST_MPFR_50
+# define TEST_MPFI_50
# define TEST_BACKEND
# define TEST_CPP_DEC_FLOAT
@@ -37,6 +38,9 @@
#if defined(TEST_MPFR_50)
#include <boost/multiprecision/mpfr.hpp>
#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
#ifdef TEST_BACKEND
#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
#endif
@@ -133,6 +137,10 @@
test<boost::multiprecision::mpfr_float_50>();
test<boost::multiprecision::mpfr_float_100>();
#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
#ifdef TEST_CPP_DEC_FLOAT
test<boost::multiprecision::cpp_dec_float_50>();
test<boost::multiprecision::cpp_dec_float_100>();
Modified: branches/release/libs/multiprecision/test/ublas_interop/test1.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test1.hpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test1.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -14,12 +14,16 @@
#define TEST1_H
#ifdef _MSC_VER
-# pragma warning(disable:4800 4996)
+# pragma warning(disable:4800 4996 4127 4100)
#endif
#include <boost/multiprecision/cpp_dec_float.hpp>
+#ifdef TEST_ET
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_on> mp_test_type;
+#else
typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_test_type;
+#endif
//typedef double mp_test_type;
#define USE_RANGE
Modified: branches/release/libs/multiprecision/test/ublas_interop/test2.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test2.hpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test2.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -13,12 +13,16 @@
#ifndef TEST2_H
#define TEST2_H
#ifdef _MSC_VER
-# pragma warning(disable:4800 4996)
+# pragma warning(disable:4800 4996 4127 4100 4018)
#endif
#include <boost/multiprecision/cpp_dec_float.hpp>
+#ifdef TEST_ET
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_on> mp_test_type;
+#else
typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_test_type;
+#endif
//typedef double mp_test_type;
#define USE_RANGE
Modified: branches/release/libs/multiprecision/test/ublas_interop/test3.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test3.hpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test3.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -14,12 +14,16 @@
#define TEST3_H
#ifdef _MSC_VER
-# pragma warning(disable:4800 4996)
+# pragma warning(disable:4800 4996 4127 4100)
#endif
#include <boost/multiprecision/cpp_dec_float.hpp>
+#ifdef TEST_ET
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_on> mp_test_type;
+#else
typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_test_type;
+#endif
//typedef double mp_test_type;
#define USE_RANGE
Modified: branches/release/libs/multiprecision/test/ublas_interop/test4.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test4.hpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test4.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -14,12 +14,16 @@
#define TEST4_H
#ifdef _MSC_VER
-# pragma warning(disable:4800 4996)
+# pragma warning(disable:4800 4996 4127 4100)
#endif
#include <boost/multiprecision/cpp_dec_float.hpp>
+#ifdef TEST_ET
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_on> mp_test_type;
+#else
typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_test_type;
+#endif
//typedef double mp_test_type;
#define USE_RANGE
Modified: branches/release/libs/multiprecision/test/ublas_interop/test5.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test5.hpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test5.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -14,12 +14,16 @@
#define TEST5_H
#ifdef _MSC_VER
-# pragma warning(disable:4800 4996)
+# pragma warning(disable:4800 4996 4127 4100)
#endif
#include <boost/multiprecision/cpp_dec_float.hpp>
+#ifdef TEST_ET
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_on> mp_test_type;
+#else
typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_test_type;
+#endif
//typedef double mp_test_type;
#define USE_RANGE
Modified: branches/release/libs/multiprecision/test/ublas_interop/test6.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test6.hpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test6.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -13,6 +13,36 @@
#ifndef TEST6_H
#define TEST6_H
+#ifdef _MSC_VER
+# pragma warning(disable:4800 4996 4127 4100)
+#endif
+
+#include <boost/multiprecision/cpp_dec_float.hpp>
+
+#ifdef TEST_ET
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_on> mp_test_type;
+#else
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_test_type;
+#endif
+//typedef double mp_test_type;
+
+#define USE_RANGE
+#define USE_SLICE
+#define USE_FLOAT
+#define USE_UNBOUNDED_ARRAY
+#define USE_BOUNDED_ARRAY
+#define USE_STD_VECTOR
+#define USE_BOUNDED_VECTOR USE_MATRIX
+#define USE_UNBOUNDED_ARRAY
+#define USE_MAP_ARRAY
+#define USE_STD_MAP
+#define USE_MAPPED_VECTOR
+#define USE_COMPRESSED_VECTOR
+#define USE_COORDINATE_VECTOR
+#define USE_MAPPED_MATRIX
+#define USE_COMPRESSED_MATRIX
+#define USE_COORDINATE_MATRIX
+
#include <iostream>
#include <boost/numeric/ublas/vector.hpp>
Modified: branches/release/libs/multiprecision/test/ublas_interop/test7.hpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test7.hpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test7.hpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -19,13 +19,18 @@
#include <boost/multiprecision/cpp_dec_float.hpp>
+#ifdef TEST_ET
+typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_on> mp_test_type;
+#else
typedef boost::multiprecision::number<boost::multiprecision::cpp_dec_float<50>, boost::multiprecision::et_off> mp_test_type;
+#endif
//typedef double mp_test_type;
#define USE_RANGE
#define USE_SLICE
#define USE_FLOAT
-#define USE_UNBOUNDED_ARRAY
+#define USE_UNBOUNDED_ARRAY
+#define USE_BOUNDED_ARRAY
#define USE_STD_VECTOR
#define USE_BOUNDED_VECTOR USE_MATRIX
#define USE_UNBOUNDED_ARRAY
Modified: branches/release/libs/multiprecision/test/ublas_interop/test71.cpp
==============================================================================
--- branches/release/libs/multiprecision/test/ublas_interop/test71.cpp (original)
+++ branches/release/libs/multiprecision/test/ublas_interop/test71.cpp 2013-03-22 09:02:53 EDT (Fri, 22 Mar 2013)
@@ -9,6 +9,10 @@
// GeNeSys mbH & Co. KG in producing this work.
//
+//
+// This file fails to compile - appears to be a known uBlas issue :-(
+//
+
#include "test7.hpp"
// Test vector expression templates
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