Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r78097 - in sandbox/big_number: boost/multiprecision libs/multiprecision/test libs/multiprecision/test/math
From: e_float_at_[hidden]
Date: 2012-04-20 16:05:50


Author: christopher_kormanyos
Date: 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
New Revision: 78097
URL: http://svn.boost.org/trac/boost/changeset/78097

Log:
Re-factor cpp_dec_float class constants.
Extend cpp_dec_float low-digit range from 30 to 9.
Removed temporary storage from cpp_dec_float multiply routine.
Extended tests to 9, 18 and (sqrt test) to 1000 digits.
Text files modified:
   sandbox/big_number/boost/multiprecision/cpp_dec_float.hpp | 861 ++++++++++++++++++++-------------------
   sandbox/big_number/libs/multiprecision/test/Jamfile.v2 | 7
   sandbox/big_number/libs/multiprecision/test/math/test_bessel_i.cpp | 2
   sandbox/big_number/libs/multiprecision/test/math/test_zeta.cpp | 2
   sandbox/big_number/libs/multiprecision/test/test_asin.cpp | 3
   sandbox/big_number/libs/multiprecision/test/test_atan.cpp | 3
   sandbox/big_number/libs/multiprecision/test/test_exp.cpp | 3
   sandbox/big_number/libs/multiprecision/test/test_log.cpp | 3
   sandbox/big_number/libs/multiprecision/test/test_pow.cpp | 3
   sandbox/big_number/libs/multiprecision/test/test_sin.cpp | 3
   sandbox/big_number/libs/multiprecision/test/test_sinh.cpp | 3
   sandbox/big_number/libs/multiprecision/test/test_sqrt.cpp | 208 ++++----
   12 files changed, 573 insertions(+), 528 deletions(-)

Modified: sandbox/big_number/boost/multiprecision/cpp_dec_float.hpp
==============================================================================
--- sandbox/big_number/boost/multiprecision/cpp_dec_float.hpp (original)
+++ sandbox/big_number/boost/multiprecision/cpp_dec_float.hpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -9,8 +9,8 @@
 // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
 //
 
-#ifndef BOOST_MP_EFX_BACKEND_HPP
-#define BOOST_MP_EFX_BACKEND_HPP
+#ifndef BOOST_MP_CPP_DEC_FLOAT_BACKEND_HPP
+#define BOOST_MP_CPP_DEC_FLOAT_BACKEND_HPP
 
 #include <boost/cstdint.hpp>
 #include <boost/array.hpp>
@@ -29,30 +29,31 @@
 template <unsigned Digits10>
 class cpp_dec_float
 {
-public:
- typedef mpl::list<long long> signed_types;
- typedef mpl::list<unsigned long long> unsigned_types;
- typedef mpl::list<long double> float_types;
- typedef long long exponent_type;
-
-
- static const boost::int32_t mp_radix = 10;
-
+private:
    static const boost::int32_t cpp_dec_float_digits10_setting = Digits10;
- static const boost::int32_t cpp_dec_float_digits10_limit = boost::integer_traits<boost::int32_t>::const_max - 100;
- static const boost::int32_t cpp_dec_float_digits10 = ((Digits10 < 30) ? 30 : ((Digits10 > cpp_dec_float_digits10_limit) ? cpp_dec_float_digits10_limit : Digits10));
- static const boost::int64_t cpp_dec_float_max_exp10 = 2776234983093287512;
- static const boost::int64_t cpp_dec_float_min_exp10 = -2776234983093287512;
- static const boost::int64_t cpp_dec_float_max_exp = (cpp_dec_float_max_exp10 / 301LL) * 1000LL;
- static const boost::int64_t cpp_dec_float_min_exp = (cpp_dec_float_min_exp10 / 301LL) * 1000LL;
 
- static const boost::int32_t mp_elem_digits10 = static_cast<boost::int32_t>(8);
+public:
+ typedef mpl::list<long long> signed_types;
+ typedef mpl::list<unsigned long long> unsigned_types;
+ typedef mpl::list<long double> float_types;
+ typedef long long exponent_type;
+
+ static const boost::int32_t cpp_dec_float_radix = 10L;
+ static const boost::int32_t cpp_dec_float_digits10_limit_lo = 9L;
+ static const boost::int32_t cpp_dec_float_digits10_limit_hi = boost::integer_traits<boost::int32_t>::const_max - 100;
+ static const boost::int32_t cpp_dec_float_digits10 = ((cpp_dec_float_digits10_setting < cpp_dec_float_digits10_limit_lo) ? cpp_dec_float_digits10_limit_lo : ((cpp_dec_float_digits10_setting > cpp_dec_float_digits10_limit_hi) ? cpp_dec_float_digits10_limit_hi : cpp_dec_float_digits10_setting));
+ static const boost::int64_t cpp_dec_float_max_exp10 = static_cast<boost::int64_t>( 2776234983093287512LL);
+ static const boost::int64_t cpp_dec_float_min_exp10 = static_cast<boost::int64_t>(-2776234983093287512LL);
+ static const boost::int64_t cpp_dec_float_max_exp = static_cast<boost::int64_t>((cpp_dec_float_max_exp10 / 301LL) * 1000LL);
+ static const boost::int64_t cpp_dec_float_min_exp = static_cast<boost::int64_t>((cpp_dec_float_min_exp10 / 301LL) * 1000LL);
 
- BOOST_STATIC_ASSERT(0 == cpp_dec_float_max_exp10 % mp_elem_digits10);
    BOOST_STATIC_ASSERT(cpp_dec_float_max_exp10 == -cpp_dec_float_min_exp10);
 
 private:
- static const boost::int32_t cpp_dec_float_digits10_num_base = static_cast<boost::int32_t>((cpp_dec_float_digits10 / mp_elem_digits10) + (((cpp_dec_float_digits10 % mp_elem_digits10) != 0) ? 1 : 0));
+ static const boost::int32_t cpp_dec_float_elem_digits10 = 8L;
+ static const boost::int32_t cpp_dec_float_elem_mask = 100000000L;
+
+ BOOST_STATIC_ASSERT(0 == cpp_dec_float_max_exp10 % cpp_dec_float_elem_digits10);
 
    // There are three guard limbs.
    // 1) The first limb has 'play' from 1...8 decimal digits.
@@ -60,39 +61,41 @@
    // 3) One limb can get lost when justifying after multiply,
    // as only half of the triangle is multiplied and a carry
    // from below is missing.
- static const boost::int32_t mp_elem_number = static_cast<boost::int32_t>(cpp_dec_float_digits10_num_base + 3);
- static const boost::int32_t mp_elem_mask = static_cast<boost::int32_t>(100000000);
+ static const boost::int32_t cpp_dec_float_elem_number_request = static_cast<boost::int32_t>((cpp_dec_float_digits10 / cpp_dec_float_elem_digits10) + (((cpp_dec_float_digits10 % cpp_dec_float_elem_digits10) != 0) ? 1 : 0));
+
+ // The number of elements needed (with a minimum of two) plus three added guard limbs.
+ static const boost::int32_t cpp_dec_float_elem_number = static_cast<boost::int32_t>(((cpp_dec_float_elem_number_request < 2L) ? 2L : cpp_dec_float_elem_number_request) + 3L);
 
 public:
- static const boost::int32_t cpp_dec_float_total_digits10 = mp_elem_number * mp_elem_digits10;
+ static const boost::int32_t cpp_dec_float_total_digits10 = static_cast<boost::int32_t>(cpp_dec_float_elem_number * cpp_dec_float_elem_digits10);
 
 private:
 
- typedef enum enum_fpclass
+ typedef enum enum_fpclass_type
    {
- mp_finite,
- mp_inf,
- mp_NaN
+ cpp_dec_float_finite,
+ cpp_dec_float_inf,
+ cpp_dec_float_NaN
    }
- t_fpclass;
+ fpclass_type;
 
- typedef boost::array<boost::uint32_t, mp_elem_number> array_type;
+ typedef boost::array<boost::uint32_t, cpp_dec_float_elem_number> array_type;
 
- array_type data;
- boost::int64_t exp;
- bool neg;
- t_fpclass fpclass;
- boost::int32_t prec_elem;
+ array_type data;
+ boost::int64_t exp;
+ bool neg;
+ fpclass_type fpclass;
+ boost::int32_t prec_elem;
 
    //
    // Special values constructor:
    //
- cpp_dec_float(t_fpclass c) :
+ cpp_dec_float(fpclass_type c) :
       data(),
       exp (static_cast<boost::int64_t>(0)),
       neg (false),
       fpclass (c),
- prec_elem(mp_elem_number) { }
+ prec_elem(cpp_dec_float_elem_number) { }
 
       //
       // Static data initializer:
@@ -130,15 +133,15 @@
       data(),
       exp (static_cast<boost::int64_t>(0)),
       neg (false),
- fpclass (mp_finite),
- prec_elem(mp_elem_number) { }
+ fpclass (cpp_dec_float_finite),
+ prec_elem(cpp_dec_float_elem_number) { }
 
    cpp_dec_float(const char* s) :
       data(),
       exp (static_cast<boost::int64_t>(0)),
       neg (false),
- fpclass (mp_finite),
- prec_elem(mp_elem_number)
+ fpclass (cpp_dec_float_finite),
+ prec_elem(cpp_dec_float_elem_number)
       {
          *this = s;
       }
@@ -148,8 +151,8 @@
       data(),
       exp (static_cast<boost::int64_t>(0)),
       neg (false),
- fpclass (mp_finite),
- prec_elem(mp_elem_number)
+ fpclass (cpp_dec_float_finite),
+ prec_elem(cpp_dec_float_elem_number)
       {
          from_unsigned_long_long(i);
       }
@@ -159,8 +162,8 @@
       data(),
       exp (static_cast<boost::int64_t>(0)),
       neg (false),
- fpclass (mp_finite),
- prec_elem(mp_elem_number)
+ fpclass (cpp_dec_float_finite),
+ prec_elem(cpp_dec_float_elem_number)
       {
          if(i < 0)
          {
@@ -183,7 +186,7 @@
       exp (f.exp),
       neg (f.neg),
       fpclass (static_cast<enum_fpclass>(static_cast<int>(f.fpclass))),
- prec_elem(mp_elem_number)
+ prec_elem(cpp_dec_float_elem_number)
    {
       // TODO: this doesn't round!
       std::copy(f.data.begin(), f.data.begin() + (std::min)(f.prec_elem, prec_elem), data.begin());
@@ -195,8 +198,8 @@
       data(),
       exp (static_cast<boost::int64_t>(0)),
       neg (false),
- fpclass (mp_finite),
- prec_elem(mp_elem_number)
+ fpclass (cpp_dec_float_finite),
+ prec_elem(cpp_dec_float_elem_number)
    {
       *this = val;
    }
@@ -206,13 +209,13 @@
    // Specific special values.
    static const cpp_dec_float& nan()
    {
- static const cpp_dec_float val(mp_NaN);
+ static const cpp_dec_float val(cpp_dec_float_NaN);
       init.do_nothing();
       return val;
    }
    static const cpp_dec_float& inf()
    {
- static const cpp_dec_float val(mp_inf);
+ static const cpp_dec_float val(cpp_dec_float_inf);
       init.do_nothing();
       return val;
    }
@@ -389,13 +392,13 @@
    }
 
    // Comparison functions
- bool isnan (void) const { return (fpclass == mp_NaN); }
- bool isinf (void) const { return (fpclass == mp_inf); }
- bool isfinite(void) const { return (fpclass == mp_finite); }
+ bool isnan (void) const { return (fpclass == cpp_dec_float_NaN); }
+ bool isinf (void) const { return (fpclass == cpp_dec_float_inf); }
+ bool isfinite(void) const { return (fpclass == cpp_dec_float_finite); }
 
    bool iszero (void) const
    {
- return ((fpclass == mp_finite) && (data[0u] == 0u));
+ return ((fpclass == cpp_dec_float_finite) && (data[0u] == 0u));
    }
    bool isone (void) const;
    bool isint (void) const;
@@ -441,14 +444,14 @@
    {
       if(prec_digits >= cpp_dec_float_total_digits10)
       {
- prec_elem = mp_elem_number;
+ prec_elem = cpp_dec_float_elem_number;
       }
       else
       {
- const boost::int32_t elems = static_cast<boost::int32_t>( static_cast<boost::int32_t>( (prec_digits + (mp_elem_digits10 / 2)) / mp_elem_digits10)
- + static_cast<boost::int32_t>(((prec_digits % mp_elem_digits10) != 0) ? 1 : 0));
+ const boost::int32_t elems = static_cast<boost::int32_t>( static_cast<boost::int32_t>( (prec_digits + (cpp_dec_float_elem_digits10 / 2)) / cpp_dec_float_elem_digits10)
+ + static_cast<boost::int32_t>(((prec_digits % cpp_dec_float_elem_digits10) != 0) ? 1 : 0));
 
- prec_elem = (std::min)(mp_elem_number, (std::max)(elems, static_cast<boost::int32_t>(2)));
+ prec_elem = (std::min)(cpp_dec_float_elem_number, (std::max)(elems, static_cast<boost::int32_t>(2)));
       }
    }
    static cpp_dec_float pow2(long long i);
@@ -500,22 +503,22 @@
          }
       }
 
- return (bo_order_is_zero ? static_cast<boost::int64_t>(0)
- : static_cast<boost::int64_t>(exp + prefix));
+ return (bo_order_is_zero ? static_cast<long long>(0) : static_cast<long long>(exp + prefix));
    }
 
 private:
    static bool data_elem_is_non_zero_predicate(const boost::uint32_t& d) { return (d != static_cast<boost::uint32_t>(0u)); }
- static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast<boost::uint32_t>(cpp_dec_float::mp_elem_mask - 1)); }
+ static bool data_elem_is_non_nine_predicate(const boost::uint32_t& d) { return (d != static_cast<boost::uint32_t>(cpp_dec_float::cpp_dec_float_elem_mask - 1)); }
    static bool char_is_nonzero_predicate(const char& c) { return (c != static_cast<char>('0')); }
 
    void from_unsigned_long_long(const unsigned long long u);
 
    int cmp_data(const array_type& vd) const;
 
- static void mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p);
- static boost::uint32_t mul_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p);
- static boost::uint32_t div_loop_n(boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p);
+
+ static boost::uint32_t mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p);
+ static boost::uint32_t mul_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p);
+ static boost::uint32_t div_loop_n (boost::uint32_t* const u, boost::uint32_t n, const boost::int32_t p);
 
    bool rd_string(const char* const s);
 
@@ -528,11 +531,13 @@
 typename cpp_dec_float<Digits10>::initializer cpp_dec_float<Digits10>::init;
 
 template <unsigned Digits10>
-const boost::int32_t cpp_dec_float<Digits10>::mp_radix;
+const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_radix;
 template <unsigned Digits10>
 const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_digits10_setting;
 template <unsigned Digits10>
-const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_digits10_limit;
+const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_digits10_limit_lo;
+template <unsigned Digits10>
+const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_digits10_limit_hi;
 template <unsigned Digits10>
 const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_digits10;
 template <unsigned Digits10>
@@ -544,13 +549,13 @@
 template <unsigned Digits10>
 const boost::int64_t cpp_dec_float<Digits10>::cpp_dec_float_min_exp10;
 template <unsigned Digits10>
-const boost::int32_t cpp_dec_float<Digits10>::mp_elem_digits10;
+const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_elem_digits10;
 template <unsigned Digits10>
-const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_digits10_num_base;
+const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_elem_number_request;
 template <unsigned Digits10>
-const boost::int32_t cpp_dec_float<Digits10>::mp_elem_number;
+const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_elem_number;
 template <unsigned Digits10>
-const boost::int32_t cpp_dec_float<Digits10>::mp_elem_mask;
+const boost::int32_t cpp_dec_float<Digits10>::cpp_dec_float_elem_mask;
 
 
 template <unsigned Digits10>
@@ -576,7 +581,7 @@
    }
 
    // Get the offset for the add/sub operation.
- static const boost::int64_t max_delta_exp = static_cast<boost::int64_t>((mp_elem_number - 1) * mp_elem_digits10);
+ static const boost::int64_t max_delta_exp = static_cast<boost::int64_t>((cpp_dec_float_elem_number - 1) * cpp_dec_float_elem_digits10);
 
    const boost::int64_t ofs_exp = static_cast<boost::int64_t>(exp - v.exp);
 
@@ -597,7 +602,7 @@
    typename array_type::iterator p_u = data.begin();
    typename array_type::const_iterator p_v = v.data.begin();
    bool b_copy = false;
- const boost::int32_t ofs = static_cast<boost::int32_t>(static_cast<boost::int32_t>(ofs_exp) / mp_elem_digits10);
+ const boost::int32_t ofs = static_cast<boost::int32_t>(static_cast<boost::int32_t>(ofs_exp) / cpp_dec_float_elem_digits10);
    array_type n_data;
 
    if(neg == v.neg)
@@ -623,11 +628,11 @@
       // Addition algorithm
       boost::uint32_t carry = static_cast<boost::uint32_t>(0u);
 
- for(boost::int32_t j = static_cast<boost::int32_t>(mp_elem_number - static_cast<boost::int32_t>(1)); j >= static_cast<boost::int32_t>(0); j--)
+ for(boost::int32_t j = static_cast<boost::int32_t>(cpp_dec_float_elem_number - static_cast<boost::int32_t>(1)); j >= static_cast<boost::int32_t>(0); j--)
       {
          boost::uint32_t t = static_cast<boost::uint32_t>(static_cast<boost::uint32_t>(p_u[j] + p_v[j]) + carry);
- carry = t / static_cast<boost::uint32_t>(mp_elem_mask);
- p_u[j] = static_cast<boost::uint32_t>(t - static_cast<boost::uint32_t>(carry * static_cast<boost::uint32_t>(mp_elem_mask)));
+ carry = t / static_cast<boost::uint32_t>(cpp_dec_float_elem_mask);
+ p_u[j] = static_cast<boost::uint32_t>(t - static_cast<boost::uint32_t>(carry * static_cast<boost::uint32_t>(cpp_dec_float_elem_mask)));
       }
 
       if(b_copy)
@@ -641,7 +646,7 @@
       {
          std::copy_backward(data.begin(), data.end() - static_cast<std::size_t>(1u), data.end());
          data[0] = carry;
- exp += static_cast<boost::int64_t>(mp_elem_digits10);
+ exp += static_cast<boost::int64_t>(cpp_dec_float_elem_digits10);
       }
    }
    else
@@ -686,7 +691,7 @@
       // Subtraction algorithm
       boost::int32_t borrow = static_cast<boost::int32_t>(0);
 
- for(j = static_cast<boost::int32_t>(mp_elem_number - static_cast<boost::int32_t>(1)); j >= static_cast<boost::int32_t>(0); j--)
+ for(j = static_cast<boost::int32_t>(cpp_dec_float_elem_number - static_cast<boost::int32_t>(1)); j >= static_cast<boost::int32_t>(0); j--)
       {
          boost::int32_t t = static_cast<boost::int32_t>(static_cast<boost::int32_t>( static_cast<boost::int32_t>(p_u[j])
             - static_cast<boost::int32_t>(p_v[j])) - borrow);
@@ -695,7 +700,7 @@
          if(t < static_cast<boost::int32_t>(0))
          {
             // Yes, underflow and borrow
- t += static_cast<boost::int32_t>(mp_elem_mask);
+ t += static_cast<boost::int32_t>(cpp_dec_float_elem_mask);
             borrow = static_cast<boost::int32_t>(1);
          }
          else
@@ -703,7 +708,7 @@
             borrow = static_cast<boost::int32_t>(0);
          }
 
- p_u[j] = static_cast<boost::uint32_t>(static_cast<boost::uint32_t>(t) % static_cast<boost::uint32_t>(mp_elem_mask));
+ p_u[j] = static_cast<boost::uint32_t>(static_cast<boost::uint32_t>(t) % static_cast<boost::uint32_t>(cpp_dec_float_elem_mask));
       }
 
       if(b_copy)
@@ -733,7 +738,7 @@
             std::copy(data.begin() + static_cast<std::size_t>(sj), data.end(), data.begin());
             std::fill(data.end() - sj, data.end(), static_cast<boost::uint32_t>(0u));
 
- exp -= static_cast<boost::int64_t>(sj * static_cast<std::size_t>(mp_elem_digits10));
+ exp -= static_cast<boost::int64_t>(sj * static_cast<std::size_t>(cpp_dec_float_elem_digits10));
          }
       }
    }
@@ -852,22 +857,22 @@
    // Set the exponent of the result.
    exp += v.exp;
 
- boost::array<boost::uint32_t, static_cast<std::size_t>(mp_elem_number + static_cast<boost::int32_t>(1))> w = {{ 0u }};
-
    const boost::int32_t prec_mul = (std::min)(prec_elem, v.prec_elem);
- mul_loop_uv(data.data(), v.data.data(), w.data(), prec_mul);
 
- // Copy the multiplication data into the result.
- // Shift the result and adjust the exponent if necessary.
- if(w[static_cast<std::size_t>(0u)] != static_cast<boost::uint32_t>(0u))
- {
- exp += static_cast<boost::int64_t>(mp_elem_digits10);
+ const boost::uint32_t carry = mul_loop_uv(data.data(), v.data.data(), prec_mul);
 
- std::copy(w.begin(), w.begin() + prec_mul, data.begin());
- }
- else
+ // Handle a potential carry.
+ if(carry != static_cast<boost::uint32_t>(0u))
    {
- std::copy(w.begin() + 1u, w.begin() + (prec_mul + 1), data.begin());
+ exp += cpp_dec_float_elem_digits10;
+
+ // Shift the result of the multiplication one element to the right...
+ std::copy_backward(data.begin(),
+ data.begin() + static_cast<std::size_t>(prec_elem - static_cast<boost::int32_t>(1)),
+ data.begin() + static_cast<std::size_t>(prec_elem));
+
+ // ... And insert the carry.
+ data.front() = carry;
    }
 
    // Set the sign of the result.
@@ -945,7 +950,7 @@
       return *this = zero();
    }
 
- if(n >= static_cast<unsigned long long>(mp_elem_mask))
+ if(n >= static_cast<unsigned long long>(cpp_dec_float_elem_mask))
    {
       neg = b_neg;
       cpp_dec_float t;
@@ -966,7 +971,7 @@
    // Handle the carry and adjust the exponent.
    if(carry != static_cast<boost::uint32_t>(0u))
    {
- exp += static_cast<boost::int64_t>(mp_elem_digits10);
+ exp += static_cast<boost::int64_t>(cpp_dec_float_elem_digits10);
 
       // Shift the result of the multiplication one element to the right.
       std::copy_backward(data.begin(),
@@ -979,7 +984,7 @@
    bool overflow = exp >= cpp_dec_float_max_exp10;
    if(exp == cpp_dec_float_max_exp10)
    {
- // Check to see if we really truely have an overflow or not...
+ // Check to see if we really truly have an overflow or not...
       if(isneg())
       {
          cpp_dec_float t(*this);
@@ -1053,7 +1058,7 @@
       return *this;
    }
 
- if(n >= static_cast<unsigned long long>(mp_elem_mask))
+ if(n >= static_cast<unsigned long long>(cpp_dec_float_elem_mask))
    {
       neg = b_neg;
       cpp_dec_float t;
@@ -1072,14 +1077,14 @@
       if(data[0] == static_cast<boost::uint32_t>(0u))
       {
          // Adjust the exponent
- exp -= static_cast<boost::int64_t>(mp_elem_digits10);
+ exp -= static_cast<boost::int64_t>(cpp_dec_float_elem_digits10);
 
          // Shift result of the division one element to the left.
          std::copy(data.begin() + static_cast<std::size_t>(1u),
             data.begin() + static_cast<std::size_t>(prec_elem - static_cast<boost::int32_t>(1)),
             data.begin());
 
- data[prec_elem - static_cast<boost::int32_t>(1)] = static_cast<boost::uint32_t>(static_cast<boost::uint64_t>(prev * static_cast<boost::uint64_t>(mp_elem_mask)) / nn);
+ data[prec_elem - static_cast<boost::int32_t>(1)] = static_cast<boost::uint32_t>(static_cast<boost::uint64_t>(prev * static_cast<boost::uint64_t>(cpp_dec_float_elem_mask)) / nn);
       }
    }
 
@@ -1164,7 +1169,7 @@
 
    neg = b_neg;
 
- prec_elem = mp_elem_number;
+ prec_elem = cpp_dec_float_elem_number;
 
    return *this;
 }
@@ -1247,7 +1252,7 @@
       *this += t;
    }
 
- prec_elem = mp_elem_number;
+ prec_elem = cpp_dec_float_elem_number;
 
    return *this;
 }
@@ -1366,7 +1371,7 @@
          const typename array_type::const_iterator it_non_zero = std::find_if(data.begin(), data.end(), data_elem_is_non_zero_predicate);
          return (it_non_zero == data.end());
       }
- else if((data[0u] == static_cast<boost::uint32_t>(mp_elem_mask - 1)) && (exp == static_cast<boost::int64_t>(-mp_elem_digits10)))
+ else if((data[0u] == static_cast<boost::uint32_t>(cpp_dec_float_elem_mask - 1)) && (exp == static_cast<boost::int64_t>(-cpp_dec_float_elem_digits10)))
       {
          const typename array_type::const_iterator it_non_nine = std::find_if(data.begin(), data.end(), data_elem_is_non_nine_predicate);
          return (it_non_nine == data.end());
@@ -1379,15 +1384,15 @@
 template <unsigned Digits10>
 bool cpp_dec_float<Digits10>::isint() const
 {
- if(fpclass != mp_finite) { return false; }
+ if(fpclass != cpp_dec_float_finite) { return false; }
 
    if(iszero()) { return true; }
 
    if(exp < static_cast<boost::int64_t>(0)) { return false; } // |*this| < 1.
 
- const typename array_type::size_type offset_decimal_part = static_cast<typename array_type::size_type>(exp / mp_elem_digits10) + 1u;
+ const typename array_type::size_type offset_decimal_part = static_cast<typename array_type::size_type>(exp / cpp_dec_float_elem_digits10) + 1u;
 
- if(offset_decimal_part >= static_cast<typename array_type::size_type>(mp_elem_number))
+ if(offset_decimal_part >= static_cast<typename array_type::size_type>(cpp_dec_float_elem_number))
    {
       // The number is too large to resolve the integer part.
       // It considered to be a pure integer.
@@ -1424,8 +1429,8 @@
    }
 
    mantissa = static_cast<double>(data[0])
- + (static_cast<double>(data[1]) / static_cast<double>(mp_elem_mask))
- + ((static_cast<double>(data[2]) / static_cast<double>(mp_elem_mask)) / static_cast<double>(mp_elem_mask));
+ + (static_cast<double>(data[1]) / static_cast<double>(cpp_dec_float_elem_mask))
+ + ((static_cast<double>(data[2]) / static_cast<double>(cpp_dec_float_elem_mask)) / static_cast<double>(cpp_dec_float_elem_mask));
 
    mantissa /= static_cast<double>(p10);
 
@@ -1455,13 +1460,13 @@
    if(xx.isneg())
       xx.negate();
 
- // Check for zero cpp_dec_float<Digits10>.
+ // Check if *this cpp_dec_float<Digits10> is zero.
    if(iszero() || (xx.compare(double_min()) < 0))
    {
       return 0.0;
    }
 
- // Check if cpp_dec_float<Digits10> exceeds the maximum of double.
+ // Check if *this cpp_dec_float<Digits10> exceeds the maximum of double.
    if(xx.compare(double_max()) > 0)
    {
       return ((!neg) ? std::numeric_limits<double>::infinity()
@@ -1483,7 +1488,7 @@
 {
    // Returns the long double conversion of a cpp_dec_float<Digits10>.
 
- // Check for non-normal cpp_dec_float<Digits10>.
+ // Check if *this cpp_dec_float<Digits10> is subnormal.
    if(!isfinite())
    {
       if(isnan())
@@ -1501,13 +1506,13 @@
    if(xx.isneg())
       xx.negate();
 
- // Check for zero cpp_dec_float<Digits10>.
+ // Check if *this cpp_dec_float<Digits10> is zero.
    if(iszero() || (xx.compare(long_double_min()) < 0))
    {
       return static_cast<long double>(0.0);
    }
 
- // Check if cpp_dec_float<Digits10> exceeds the maximum of double.
+ // Check if *this cpp_dec_float<Digits10> exceeds the maximum of double.
    if(xx.compare(long_double_max()) > 0)
    {
       return ((!neg) ? std::numeric_limits<long double>::infinity()
@@ -1557,11 +1562,11 @@
 
       val = static_cast<unsigned long long>(xn.data[0]);
 
- const boost::int32_t imax = (std::min)(static_cast<boost::int32_t>(static_cast<boost::int32_t>(xn.exp) / mp_elem_digits10), static_cast<boost::int32_t>(mp_elem_number - static_cast<boost::int32_t>(1)));
+ const boost::int32_t imax = (std::min)(static_cast<boost::int32_t>(static_cast<boost::int32_t>(xn.exp) / cpp_dec_float_elem_digits10), static_cast<boost::int32_t>(cpp_dec_float_elem_number - static_cast<boost::int32_t>(1)));
 
       for(boost::int32_t i = static_cast<boost::int32_t>(1); i <= imax; i++)
       {
- val *= static_cast<unsigned long long>(mp_elem_mask);
+ val *= static_cast<unsigned long long>(cpp_dec_float_elem_mask);
          val += static_cast<unsigned long long>(xn.data[i]);
       }
    }
@@ -1601,11 +1606,11 @@
       // Extract the data into an unsigned long long value.
       val = static_cast<unsigned long long>(xn.data[0]);
 
- const boost::int32_t imax = (std::min)(static_cast<boost::int32_t>(static_cast<boost::int32_t>(xn.exp) / mp_elem_digits10), static_cast<boost::int32_t>(mp_elem_number - static_cast<boost::int32_t>(1)));
+ const boost::int32_t imax = (std::min)(static_cast<boost::int32_t>(static_cast<boost::int32_t>(xn.exp) / cpp_dec_float_elem_digits10), static_cast<boost::int32_t>(cpp_dec_float_elem_number - static_cast<boost::int32_t>(1)));
 
       for(boost::int32_t i = static_cast<boost::int32_t>(1); i <= imax; i++)
       {
- val *= static_cast<unsigned long long>(mp_elem_mask);
+ val *= static_cast<unsigned long long>(cpp_dec_float_elem_mask);
          val += static_cast<unsigned long long>(xn.data[i]);
       }
    }
@@ -1640,8 +1645,8 @@
    cpp_dec_float<Digits10> x = *this;
 
    // Clear out the decimal portion
- const size_t first_clear = (static_cast<size_t>(x.exp) / static_cast<size_t>(mp_elem_digits10)) + 1u;
- const size_t last_clear = static_cast<size_t>(mp_elem_number);
+ const size_t first_clear = (static_cast<size_t>(x.exp) / static_cast<size_t>(cpp_dec_float_elem_digits10)) + 1u;
+ const size_t last_clear = static_cast<size_t>(cpp_dec_float_elem_number);
 
    std::fill(x.data.begin() + first_clear, x.data.begin() + last_clear, static_cast<boost::uint32_t>(0u));
 
@@ -1677,8 +1682,8 @@
    else if(f & std::ios_base::scientific)
       ++number_of_digits;
    // Determine the number of elements needed to provide the requested digits from cpp_dec_float<Digits10>.
- const std::size_t number_of_elements = (std::min)(static_cast<std::size_t>((number_of_digits / static_cast<std::size_t>(mp_elem_digits10)) + 2u),
- static_cast<std::size_t>(mp_elem_number));
+ const std::size_t number_of_elements = (std::min)(static_cast<std::size_t>((number_of_digits / static_cast<std::size_t>(cpp_dec_float_elem_digits10)) + 2u),
+ static_cast<std::size_t>(cpp_dec_float_elem_number));
 
    // Extract the remaining digits from cpp_dec_float<Digits10> after the decimal point.
    str = boost::lexical_cast<std::string>(data[0]);
@@ -1688,7 +1693,7 @@
    {
       std::stringstream ss;
 
- ss << std::setw(static_cast<std::streamsize>(mp_elem_digits10))
+ ss << std::setw(static_cast<std::streamsize>(cpp_dec_float_elem_digits10))
          << std::setfill(static_cast<char>('0'))
          << data[i];
 
@@ -1808,6 +1813,9 @@
 
    std::string str(s);
 
+ // TBD: Using several regular expressions may significantly reduce
+ // the code complexity (and perhaps the run-time) of rd_string().
+
    // Get a possible exponent and remove it.
    exp = static_cast<boost::int64_t>(0);
 
@@ -1857,8 +1865,7 @@
       return true;
    }
 
-
- // Remove leading zeros for all input types.
+ // Remove the leading zeros for all input types.
    const std::string::iterator fwd_it_leading_zero = std::find_if(str.begin(), str.end(), char_is_nonzero_predicate);
 
    if(fwd_it_leading_zero != str.begin())
@@ -1877,10 +1884,10 @@
    }
 
    // Put the input string into the standard cpp_dec_float<Digits10> input form
- // aaa.bbbbE+/-n, where aa has 1...mp_elem_digits10, bbbb has an
- // even multiple of mp_elem_digits10 which are possibly zero padded
- // on the right-end, and n is a signed 32-bit integer which is an
- // even multiple of mp_elem_digits10.
+ // aaa.bbbbE+/-n, where aaa has 1...cpp_dec_float_elem_digits10, bbbb has an
+ // even multiple of cpp_dec_float_elem_digits10 which are possibly zero padded
+ // on the right-end, and n is a signed 64-bit integer which is an
+ // even multiple of cpp_dec_float_elem_digits10.
 
    // Find a possible decimal point.
    pos = str.find(static_cast<char>('.'));
@@ -1918,7 +1925,7 @@
             delta_exp = std::distance<std::string::const_iterator>(str.begin() + 1u, it_non_zero);
          }
 
- // Bring one single digit into the mantissa and adjust exponent accordingly.
+ // Bring one single digit into the mantissa and adjust the exponent accordingly.
          str.erase(str.begin(), it_non_zero);
          str.insert(static_cast<std::size_t>(1u), ".");
          exp -= static_cast<boost::int64_t>(delta_exp + 1u);
@@ -1930,14 +1937,14 @@
       str.append(".");
    }
 
- // Shift the decimal point such that the exponent is an even multiple of mp_elem_digits10.
+ // Shift the decimal point such that the exponent is an even multiple of cpp_dec_float_elem_digits10.
    std::size_t n_shift = static_cast<std::size_t>(0u);
- const std::size_t n_exp_rem = static_cast<std::size_t>(exp % static_cast<boost::int64_t>(mp_elem_digits10));
+ const std::size_t n_exp_rem = static_cast<std::size_t>(exp % static_cast<boost::int64_t>(cpp_dec_float_elem_digits10));
 
- if((exp % static_cast<boost::int64_t>(mp_elem_digits10)) != static_cast<boost::int64_t>(0))
+ if((exp % static_cast<boost::int64_t>(cpp_dec_float_elem_digits10)) != static_cast<boost::int64_t>(0))
    {
       n_shift = ((exp < static_cast<boost::int64_t>(0))
- ? static_cast<std::size_t>(n_exp_rem + static_cast<std::size_t>(mp_elem_digits10))
+ ? static_cast<std::size_t>(n_exp_rem + static_cast<std::size_t>(cpp_dec_float_elem_digits10))
          : static_cast<std::size_t>(n_exp_rem));
    }
 
@@ -1963,31 +1970,31 @@
       exp -= static_cast<boost::int64_t>(n_shift);
    }
 
- // Cut the size of the mantissa to <= mp_elem_digits10.
+ // Cut the size of the mantissa to <= cpp_dec_float_elem_digits10.
    pos = str.find(static_cast<char>('.'));
    pos_plus_one = static_cast<std::size_t>(pos + 1u);
 
- if(pos > static_cast<std::size_t>(mp_elem_digits10))
+ if(pos > static_cast<std::size_t>(cpp_dec_float_elem_digits10))
    {
       const boost::int32_t n_pos = static_cast<boost::int32_t>(pos);
- const boost::int32_t n_rem_is_zero = ((static_cast<boost::int32_t>(n_pos % mp_elem_digits10) == static_cast<boost::int32_t>(0)) ? static_cast<boost::int32_t>(1) : static_cast<boost::int32_t>(0));
- const boost::int32_t n = static_cast<boost::int32_t>(static_cast<boost::int32_t>(n_pos / mp_elem_digits10) - n_rem_is_zero);
+ const boost::int32_t n_rem_is_zero = ((static_cast<boost::int32_t>(n_pos % cpp_dec_float_elem_digits10) == static_cast<boost::int32_t>(0)) ? static_cast<boost::int32_t>(1) : static_cast<boost::int32_t>(0));
+ const boost::int32_t n = static_cast<boost::int32_t>(static_cast<boost::int32_t>(n_pos / cpp_dec_float_elem_digits10) - n_rem_is_zero);
 
- str.insert(static_cast<std::size_t>(static_cast<boost::int32_t>(n_pos - static_cast<boost::int32_t>(n * mp_elem_digits10))), ".");
+ str.insert(static_cast<std::size_t>(static_cast<boost::int32_t>(n_pos - static_cast<boost::int32_t>(n * cpp_dec_float_elem_digits10))), ".");
 
       str.erase(pos_plus_one, static_cast<std::size_t>(1u));
 
- exp += static_cast<boost::int64_t>(static_cast<boost::int64_t>(n) * static_cast<boost::int64_t>(mp_elem_digits10));
+ exp += static_cast<boost::int64_t>(static_cast<boost::int64_t>(n) * static_cast<boost::int64_t>(cpp_dec_float_elem_digits10));
    }
 
    // Pad the decimal part such that its value is an even
- // multiple of mp_elem_digits10.
+ // multiple of cpp_dec_float_elem_digits10.
    pos = str.find(static_cast<char>('.'));
    pos_plus_one = static_cast<std::size_t>(pos + 1u);
 
    const boost::int32_t n_dec = static_cast<boost::int32_t>(static_cast<boost::int32_t>(str.length() - 1u) - static_cast<boost::int32_t>(pos));
- const boost::int32_t n_rem = static_cast<boost::int32_t>(n_dec % mp_elem_digits10);
- boost::int32_t n_cnt = ((n_rem != static_cast<boost::int32_t>(0)) ? static_cast<boost::int32_t>(mp_elem_digits10 - n_rem)
+ const boost::int32_t n_rem = static_cast<boost::int32_t>(n_dec % cpp_dec_float_elem_digits10);
+ boost::int32_t n_cnt = ((n_rem != static_cast<boost::int32_t>(0)) ? static_cast<boost::int32_t>(cpp_dec_float_elem_digits10 - n_rem)
       : static_cast<boost::int32_t>(0));
 
    if(n_cnt != static_cast<boost::int32_t>(0))
@@ -1996,7 +2003,7 @@
    }
 
    // Truncate decimal part if it is too long.
- const std::size_t max_dec = static_cast<std::size_t>((mp_elem_number - 1) * mp_elem_digits10);
+ const std::size_t max_dec = static_cast<std::size_t>((cpp_dec_float_elem_number - 1) * cpp_dec_float_elem_digits10);
 
    if(static_cast<std::size_t>(str.length() - pos) > max_dec)
    {
@@ -2016,15 +2023,15 @@
    data[0u] = boost::lexical_cast<boost::uint32_t>(str.substr(static_cast<std::size_t>(0u), pos));
 
    // ...then get the remaining digits to the right of the decimal point.
- const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast<std::string::size_type>(mp_elem_digits10));
+ const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast<std::string::size_type>(cpp_dec_float_elem_digits10));
 
    for(std::string::size_type i = static_cast<std::string::size_type>(0u); i < i_end; i++)
    {
       const std::string::const_iterator it = str.begin()
          + pos_plus_one
- + (i * static_cast<std::string::size_type>(mp_elem_digits10));
+ + (i * static_cast<std::string::size_type>(cpp_dec_float_elem_digits10));
 
- data[i + 1u] = boost::lexical_cast<boost::uint32_t>(std::string(it, it + static_cast<std::string::size_type>(mp_elem_digits10)));
+ data[i + 1u] = boost::lexical_cast<boost::uint32_t>(std::string(it, it + static_cast<std::string::size_type>(cpp_dec_float_elem_digits10)));
    }
 
    // Check for overflow...
@@ -2076,11 +2083,11 @@
  : data (),
    exp (static_cast<boost::int64_t>(0)),
    neg (false),
- fpclass (mp_finite),
- prec_elem(mp_elem_number)
+ fpclass (cpp_dec_float_finite),
+ prec_elem(cpp_dec_float_elem_number)
 {
- // Create an cpp_dec_float<Digits10> from mantissa and exponent.
- // This ctor does not maintain the full precision of double.
+ // Create *this cpp_dec_float<Digits10> from a given mantissa and exponent.
+ // Note: This constructor does not maintain the full precision of double.
 
    const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits<double>::min)() * (1.0 + std::numeric_limits<double>::epsilon())));
 
@@ -2098,9 +2105,9 @@
    while(d > 10.0) { d /= 10.0; ++e; }
    while(d < 1.0) { d *= 10.0; --e; }
 
- boost::int32_t shift = static_cast<boost::int32_t>(e % static_cast<boost::int32_t>(mp_elem_digits10));
+ boost::int32_t shift = static_cast<boost::int32_t>(e % static_cast<boost::int32_t>(cpp_dec_float_elem_digits10));
 
- while(static_cast<boost::int32_t>(shift-- % mp_elem_digits10) != static_cast<boost::int32_t>(0))
+ while(static_cast<boost::int32_t>(shift-- % cpp_dec_float_elem_digits10) != static_cast<boost::int32_t>(0))
    {
       d *= 10.0;
       --e;
@@ -2111,7 +2118,7 @@
 
    std::fill(data.begin(), data.end(), static_cast<boost::uint32_t>(0u));
 
- static const boost::int32_t digit_ratio = static_cast<boost::int32_t>(static_cast<boost::int32_t>(std::numeric_limits<double>::digits10) / static_cast<boost::int32_t>(mp_elem_digits10));
+ static const boost::int32_t digit_ratio = static_cast<boost::int32_t>(static_cast<boost::int32_t>(std::numeric_limits<double>::digits10) / static_cast<boost::int32_t>(cpp_dec_float_elem_digits10));
    static const boost::int32_t digit_loops = static_cast<boost::int32_t>(digit_ratio + static_cast<boost::int32_t>(2));
 
    for(boost::int32_t i = static_cast<boost::int32_t>(0); i < digit_loops; i++)
@@ -2119,7 +2126,7 @@
       boost::uint32_t n = static_cast<boost::uint32_t>(static_cast<boost::uint64_t>(d));
       data[i] = static_cast<boost::uint32_t>(n);
       d -= static_cast<double>(n);
- d *= static_cast<double>(mp_elem_mask);
+ d *= static_cast<double>(cpp_dec_float_elem_mask);
    }
 }
 
@@ -2180,33 +2187,33 @@
 
    exp = static_cast<boost::int64_t>(0);
    neg = false;
- fpclass = mp_finite;
- prec_elem = mp_elem_number;
+ fpclass = cpp_dec_float_finite;
+ prec_elem = cpp_dec_float_elem_number;
 
    std::size_t i =static_cast<std::size_t>(0u);
 
    unsigned long long uu = u;
 
- boost::uint32_t temp[(std::numeric_limits<unsigned long long>::digits10 / static_cast<int>(mp_elem_digits10)) + 3] = { static_cast<boost::uint32_t>(0u) };
+ boost::uint32_t temp[(std::numeric_limits<unsigned long long>::digits10 / static_cast<int>(cpp_dec_float_elem_digits10)) + 3] = { static_cast<boost::uint32_t>(0u) };
 
    while(uu != static_cast<unsigned long long>(0u))
    {
- temp[i] = static_cast<boost::uint32_t>(uu % static_cast<unsigned long long>(mp_elem_mask));
- uu = static_cast<unsigned long long>(uu / static_cast<unsigned long long>(mp_elem_mask));
+ temp[i] = static_cast<boost::uint32_t>(uu % static_cast<unsigned long long>(cpp_dec_float_elem_mask));
+ uu = static_cast<unsigned long long>(uu / static_cast<unsigned long long>(cpp_dec_float_elem_mask));
       ++i;
    }
 
    if(i > static_cast<std::size_t>(1u))
    {
- exp += static_cast<boost::int64_t>((i - 1u) * static_cast<std::size_t>(mp_elem_digits10));
+ exp += static_cast<boost::int64_t>((i - 1u) * static_cast<std::size_t>(cpp_dec_float_elem_digits10));
    }
 
    std::reverse(temp, temp + i);
- std::copy(temp, temp + (std::min)(i, static_cast<std::size_t>(mp_elem_number)), data.begin());
+ std::copy(temp, temp + (std::min)(i, static_cast<std::size_t>(cpp_dec_float_elem_number)), data.begin());
 }
 
 template <unsigned Digits10>
-void cpp_dec_float<Digits10>::mul_loop_uv(const boost::uint32_t* const u, const boost::uint32_t* const v, boost::uint32_t* const w, const boost::int32_t p)
+boost::uint32_t cpp_dec_float<Digits10>::mul_loop_uv(boost::uint32_t* const u, const boost::uint32_t* const v, const boost::int32_t p)
 {
    //
    // There is a limit on how many limbs this algorithm can handle without dropping digits
@@ -2214,24 +2221,24 @@
    //
    // FLOOR( (2^64 - 1) / (10^8 * 10^8) ) == 1844
    //
- BOOST_STATIC_ASSERT_MSG(mp_elem_number < 1800, "Too many limbs in the data type for the multiplication algorithm - unsupported precision in cpp_dec_float.");
+ BOOST_STATIC_ASSERT_MSG(cpp_dec_float_elem_number < 1800, "Too many limbs in the data type for the multiplication algorithm - unsupported precision in cpp_dec_float.");
 
    boost::uint64_t carry = static_cast<boost::uint64_t>(0u);
 
    for(boost::int32_t j = static_cast<boost::int32_t>(p - 1u); j >= static_cast<boost::int32_t>(0); j--)
    {
- boost::uint64_t sum = carry;
+ boost::uint64_t sum = carry;
 
- for(boost::int32_t i = j; i >= static_cast<boost::int32_t>(0); i--)
- {
- sum += static_cast<boost::uint64_t>(u[i] * static_cast<boost::uint64_t>(v[j - i]));
- }
+ for(boost::int32_t i = j; i >= static_cast<boost::int32_t>(0); i--)
+ {
+ sum += static_cast<boost::uint64_t>(u[j - i] * static_cast<boost::uint64_t>(v[i]));
+ }
 
- w[j + 1] = static_cast<boost::uint32_t>(sum % static_cast<boost::uint32_t>(mp_elem_mask));
- carry = static_cast<boost::uint64_t>(sum / static_cast<boost::uint32_t>(mp_elem_mask));
+ u[j] = static_cast<boost::uint32_t>(sum % static_cast<boost::uint32_t>(cpp_dec_float_elem_mask));
+ carry = static_cast<boost::uint64_t>(sum / static_cast<boost::uint32_t>(cpp_dec_float_elem_mask));
    }
 
- w[0u] = static_cast<boost::uint32_t>(carry);
+ return static_cast<boost::uint32_t>(carry);
 }
 
 template <unsigned Digits10>
@@ -2243,8 +2250,8 @@
    for(boost::int32_t j = p - 1; j >= static_cast<boost::int32_t>(0); j--)
    {
       const boost::uint64_t t = static_cast<boost::uint64_t>(carry + static_cast<boost::uint64_t>(u[j] * static_cast<boost::uint64_t>(n)));
- carry = static_cast<boost::uint64_t>(t / static_cast<boost::uint32_t>(mp_elem_mask));
- u[j] = static_cast<boost::uint32_t>(t - static_cast<boost::uint64_t>(static_cast<boost::uint32_t>(mp_elem_mask) * static_cast<boost::uint64_t>(carry)));
+ carry = static_cast<boost::uint64_t>(t / static_cast<boost::uint32_t>(cpp_dec_float_elem_mask));
+ u[j] = static_cast<boost::uint32_t>(t - static_cast<boost::uint64_t>(static_cast<boost::uint32_t>(cpp_dec_float_elem_mask) * static_cast<boost::uint64_t>(carry)));
    }
 
    return static_cast<boost::uint32_t>(carry);
@@ -2257,7 +2264,7 @@
 
    for(boost::int32_t j = static_cast<boost::int32_t>(0); j < p; j++)
    {
- const boost::uint64_t t = static_cast<boost::uint64_t>(u[j] + static_cast<boost::uint64_t>(prev * static_cast<boost::uint32_t>(mp_elem_mask)));
+ const boost::uint64_t t = static_cast<boost::uint64_t>(u[j] + static_cast<boost::uint64_t>(prev * static_cast<boost::uint32_t>(cpp_dec_float_elem_mask)));
       u[j] = static_cast<boost::uint32_t>(t / n);
       prev = static_cast<boost::uint64_t>(t - static_cast<boost::uint64_t>(n * static_cast<boost::uint64_t>(u[j])));
    }
@@ -2274,261 +2281,261 @@
    init.do_nothing();
    static const boost::array<cpp_dec_float<Digits10>, 255u> p2_data =
    {{
- cpp_dec_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"),
- cpp_dec_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"),
- cpp_dec_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"),
- cpp_dec_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"),
- cpp_dec_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"),
- cpp_dec_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"),
- cpp_dec_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"),
- cpp_dec_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"),
- cpp_dec_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"),
- cpp_dec_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"),
- cpp_dec_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"),
- cpp_dec_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"),
- cpp_dec_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"),
- cpp_dec_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"),
- cpp_dec_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"),
- cpp_dec_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"),
- cpp_dec_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"),
- cpp_dec_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"),
- cpp_dec_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"),
- cpp_dec_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"),
- cpp_dec_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"),
- cpp_dec_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"),
- cpp_dec_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"),
- cpp_dec_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"),
- cpp_dec_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"),
- cpp_dec_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"),
- cpp_dec_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"),
- cpp_dec_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"),
- cpp_dec_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"),
- cpp_dec_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"),
- cpp_dec_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"),
- cpp_dec_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"),
- cpp_dec_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"),
- cpp_dec_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"),
- cpp_dec_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"),
- cpp_dec_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"),
- cpp_dec_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"),
- cpp_dec_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"),
- cpp_dec_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"),
- cpp_dec_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"),
- cpp_dec_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"),
- cpp_dec_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"),
- cpp_dec_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"),
- cpp_dec_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"),
- cpp_dec_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"),
- cpp_dec_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"),
- cpp_dec_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"),
- cpp_dec_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"),
- cpp_dec_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"),
- cpp_dec_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"),
- cpp_dec_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"),
- cpp_dec_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"),
- cpp_dec_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"),
- cpp_dec_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"),
- cpp_dec_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"),
- cpp_dec_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"),
- cpp_dec_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"),
- cpp_dec_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"),
- cpp_dec_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"),
- cpp_dec_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"),
- cpp_dec_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"),
- cpp_dec_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"),
- cpp_dec_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"),
- cpp_dec_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"),
- cpp_dec_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"),
- cpp_dec_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"),
- cpp_dec_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"),
- cpp_dec_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"),
- cpp_dec_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"),
- cpp_dec_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"),
- cpp_dec_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"),
- cpp_dec_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"),
- cpp_dec_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"),
- cpp_dec_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"),
- cpp_dec_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"),
- cpp_dec_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"),
- cpp_dec_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"),
- cpp_dec_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"),
- cpp_dec_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"),
- cpp_dec_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"),
- cpp_dec_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"),
- cpp_dec_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"),
- cpp_dec_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"),
- cpp_dec_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"),
- cpp_dec_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"),
- cpp_dec_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"),
- cpp_dec_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"),
- cpp_dec_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"),
- cpp_dec_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"),
- cpp_dec_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"),
- cpp_dec_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"),
- cpp_dec_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"),
- cpp_dec_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"),
- cpp_dec_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"),
- cpp_dec_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
- cpp_dec_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
- cpp_dec_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
- cpp_dec_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
- cpp_dec_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"),
- cpp_dec_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"),
- cpp_dec_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"),
- cpp_dec_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"),
- cpp_dec_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"),
- cpp_dec_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"),
- cpp_dec_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
- cpp_dec_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
- cpp_dec_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
- cpp_dec_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
- cpp_dec_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"),
- cpp_dec_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"),
- cpp_dec_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"),
- cpp_dec_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
- cpp_dec_float("0.125"),
- cpp_dec_float("0.25"),
- cpp_dec_float("0.5"),
- one(),
- two(),
- cpp_dec_float(static_cast<unsigned long long>(4)),
- cpp_dec_float(static_cast<unsigned long long>(8)),
- cpp_dec_float(static_cast<unsigned long long>(16)),
- cpp_dec_float(static_cast<unsigned long long>(32)),
- cpp_dec_float(static_cast<unsigned long long>(64)),
- cpp_dec_float(static_cast<unsigned long long>(128)),
- cpp_dec_float(static_cast<unsigned long long>(256)),
- cpp_dec_float(static_cast<unsigned long long>(512)),
- cpp_dec_float(static_cast<unsigned long long>(1024)),
- cpp_dec_float(static_cast<unsigned long long>(2048)),
- cpp_dec_float(static_cast<unsigned long long>(4096)),
- cpp_dec_float(static_cast<unsigned long long>(8192)),
- cpp_dec_float(static_cast<unsigned long long>(16384)),
- cpp_dec_float(static_cast<unsigned long long>(32768)),
- cpp_dec_float(static_cast<unsigned long long>(65536)),
- cpp_dec_float(static_cast<unsigned long long>(131072)),
- cpp_dec_float(static_cast<unsigned long long>(262144)),
- cpp_dec_float(static_cast<unsigned long long>(524288)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 20u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 21u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 22u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 23u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 24u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 25u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 26u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 27u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 28u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 29u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 30u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uL << 31u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 32u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 33u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 34u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 35u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 36u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 37u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 38u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 39u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 40u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 41u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 42u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 43u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 44u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 45u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 46u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 47u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 48u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 49u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 50u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 51u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 52u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 53u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 54u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 55u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 56u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 57u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 58u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 59u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 60u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 61u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 62u)),
- cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 63u)),
- cpp_dec_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"),
- cpp_dec_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"),
- cpp_dec_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"),
- cpp_dec_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"),
- cpp_dec_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"),
- cpp_dec_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"),
- cpp_dec_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
- cpp_dec_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
- cpp_dec_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
- cpp_dec_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
- cpp_dec_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"),
- cpp_dec_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"),
- cpp_dec_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"),
- cpp_dec_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"),
- cpp_dec_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"),
- cpp_dec_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"),
- cpp_dec_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
- cpp_dec_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
- cpp_dec_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
- cpp_dec_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
- cpp_dec_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"),
- cpp_dec_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"),
- cpp_dec_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"),
- cpp_dec_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"),
- cpp_dec_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"),
- cpp_dec_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"),
- cpp_dec_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"),
- cpp_dec_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"),
- cpp_dec_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"),
- cpp_dec_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"),
- cpp_dec_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"),
- cpp_dec_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"),
- cpp_dec_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"),
- cpp_dec_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"),
- cpp_dec_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"),
- cpp_dec_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"),
- cpp_dec_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"),
- cpp_dec_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"),
- cpp_dec_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"),
- cpp_dec_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"),
- cpp_dec_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"),
- cpp_dec_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"),
- cpp_dec_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"),
- cpp_dec_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"),
- cpp_dec_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"),
- cpp_dec_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"),
- cpp_dec_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"),
- cpp_dec_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"),
- cpp_dec_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"),
- cpp_dec_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"),
- cpp_dec_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"),
- cpp_dec_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"),
- cpp_dec_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"),
- cpp_dec_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"),
- cpp_dec_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"),
- cpp_dec_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"),
- cpp_dec_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"),
- cpp_dec_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"),
- cpp_dec_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"),
- cpp_dec_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"),
- cpp_dec_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"),
- cpp_dec_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"),
- cpp_dec_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"),
- cpp_dec_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38")
+ cpp_dec_float("5.877471754111437539843682686111228389093327783860437607543758531392086297273635864257812500000000000e-39"),
+ cpp_dec_float("1.175494350822287507968736537222245677818665556772087521508751706278417259454727172851562500000000000e-38"),
+ cpp_dec_float("2.350988701644575015937473074444491355637331113544175043017503412556834518909454345703125000000000000e-38"),
+ cpp_dec_float("4.701977403289150031874946148888982711274662227088350086035006825113669037818908691406250000000000000e-38"),
+ cpp_dec_float("9.403954806578300063749892297777965422549324454176700172070013650227338075637817382812500000000000000e-38"),
+ cpp_dec_float("1.880790961315660012749978459555593084509864890835340034414002730045467615127563476562500000000000000e-37"),
+ cpp_dec_float("3.761581922631320025499956919111186169019729781670680068828005460090935230255126953125000000000000000e-37"),
+ cpp_dec_float("7.523163845262640050999913838222372338039459563341360137656010920181870460510253906250000000000000000e-37"),
+ cpp_dec_float("1.504632769052528010199982767644474467607891912668272027531202184036374092102050781250000000000000000e-36"),
+ cpp_dec_float("3.009265538105056020399965535288948935215783825336544055062404368072748184204101562500000000000000000e-36"),
+ cpp_dec_float("6.018531076210112040799931070577897870431567650673088110124808736145496368408203125000000000000000000e-36"),
+ cpp_dec_float("1.203706215242022408159986214115579574086313530134617622024961747229099273681640625000000000000000000e-35"),
+ cpp_dec_float("2.407412430484044816319972428231159148172627060269235244049923494458198547363281250000000000000000000e-35"),
+ cpp_dec_float("4.814824860968089632639944856462318296345254120538470488099846988916397094726562500000000000000000000e-35"),
+ cpp_dec_float("9.629649721936179265279889712924636592690508241076940976199693977832794189453125000000000000000000000e-35"),
+ cpp_dec_float("1.925929944387235853055977942584927318538101648215388195239938795566558837890625000000000000000000000e-34"),
+ cpp_dec_float("3.851859888774471706111955885169854637076203296430776390479877591133117675781250000000000000000000000e-34"),
+ cpp_dec_float("7.703719777548943412223911770339709274152406592861552780959755182266235351562500000000000000000000000e-34"),
+ cpp_dec_float("1.540743955509788682444782354067941854830481318572310556191951036453247070312500000000000000000000000e-33"),
+ cpp_dec_float("3.081487911019577364889564708135883709660962637144621112383902072906494140625000000000000000000000000e-33"),
+ cpp_dec_float("6.162975822039154729779129416271767419321925274289242224767804145812988281250000000000000000000000000e-33"),
+ cpp_dec_float("1.232595164407830945955825883254353483864385054857848444953560829162597656250000000000000000000000000e-32"),
+ cpp_dec_float("2.465190328815661891911651766508706967728770109715696889907121658325195312500000000000000000000000000e-32"),
+ cpp_dec_float("4.930380657631323783823303533017413935457540219431393779814243316650390625000000000000000000000000000e-32"),
+ cpp_dec_float("9.860761315262647567646607066034827870915080438862787559628486633300781250000000000000000000000000000e-32"),
+ cpp_dec_float("1.972152263052529513529321413206965574183016087772557511925697326660156250000000000000000000000000000e-31"),
+ cpp_dec_float("3.944304526105059027058642826413931148366032175545115023851394653320312500000000000000000000000000000e-31"),
+ cpp_dec_float("7.888609052210118054117285652827862296732064351090230047702789306640625000000000000000000000000000000e-31"),
+ cpp_dec_float("1.577721810442023610823457130565572459346412870218046009540557861328125000000000000000000000000000000e-30"),
+ cpp_dec_float("3.155443620884047221646914261131144918692825740436092019081115722656250000000000000000000000000000000e-30"),
+ cpp_dec_float("6.310887241768094443293828522262289837385651480872184038162231445312500000000000000000000000000000000e-30"),
+ cpp_dec_float("1.262177448353618888658765704452457967477130296174436807632446289062500000000000000000000000000000000e-29"),
+ cpp_dec_float("2.524354896707237777317531408904915934954260592348873615264892578125000000000000000000000000000000000e-29"),
+ cpp_dec_float("5.048709793414475554635062817809831869908521184697747230529785156250000000000000000000000000000000000e-29"),
+ cpp_dec_float("1.009741958682895110927012563561966373981704236939549446105957031250000000000000000000000000000000000e-28"),
+ cpp_dec_float("2.019483917365790221854025127123932747963408473879098892211914062500000000000000000000000000000000000e-28"),
+ cpp_dec_float("4.038967834731580443708050254247865495926816947758197784423828125000000000000000000000000000000000000e-28"),
+ cpp_dec_float("8.077935669463160887416100508495730991853633895516395568847656250000000000000000000000000000000000000e-28"),
+ cpp_dec_float("1.615587133892632177483220101699146198370726779103279113769531250000000000000000000000000000000000000e-27"),
+ cpp_dec_float("3.231174267785264354966440203398292396741453558206558227539062500000000000000000000000000000000000000e-27"),
+ cpp_dec_float("6.462348535570528709932880406796584793482907116413116455078125000000000000000000000000000000000000000e-27"),
+ cpp_dec_float("1.292469707114105741986576081359316958696581423282623291015625000000000000000000000000000000000000000e-26"),
+ cpp_dec_float("2.584939414228211483973152162718633917393162846565246582031250000000000000000000000000000000000000000e-26"),
+ cpp_dec_float("5.169878828456422967946304325437267834786325693130493164062500000000000000000000000000000000000000000e-26"),
+ cpp_dec_float("1.033975765691284593589260865087453566957265138626098632812500000000000000000000000000000000000000000e-25"),
+ cpp_dec_float("2.067951531382569187178521730174907133914530277252197265625000000000000000000000000000000000000000000e-25"),
+ cpp_dec_float("4.135903062765138374357043460349814267829060554504394531250000000000000000000000000000000000000000000e-25"),
+ cpp_dec_float("8.271806125530276748714086920699628535658121109008789062500000000000000000000000000000000000000000000e-25"),
+ cpp_dec_float("1.654361225106055349742817384139925707131624221801757812500000000000000000000000000000000000000000000e-24"),
+ cpp_dec_float("3.308722450212110699485634768279851414263248443603515625000000000000000000000000000000000000000000000e-24"),
+ cpp_dec_float("6.617444900424221398971269536559702828526496887207031250000000000000000000000000000000000000000000000e-24"),
+ cpp_dec_float("1.323488980084844279794253907311940565705299377441406250000000000000000000000000000000000000000000000e-23"),
+ cpp_dec_float("2.646977960169688559588507814623881131410598754882812500000000000000000000000000000000000000000000000e-23"),
+ cpp_dec_float("5.293955920339377119177015629247762262821197509765625000000000000000000000000000000000000000000000000e-23"),
+ cpp_dec_float("1.058791184067875423835403125849552452564239501953125000000000000000000000000000000000000000000000000e-22"),
+ cpp_dec_float("2.117582368135750847670806251699104905128479003906250000000000000000000000000000000000000000000000000e-22"),
+ cpp_dec_float("4.235164736271501695341612503398209810256958007812500000000000000000000000000000000000000000000000000e-22"),
+ cpp_dec_float("8.470329472543003390683225006796419620513916015625000000000000000000000000000000000000000000000000000e-22"),
+ cpp_dec_float("1.694065894508600678136645001359283924102783203125000000000000000000000000000000000000000000000000000e-21"),
+ cpp_dec_float("3.388131789017201356273290002718567848205566406250000000000000000000000000000000000000000000000000000e-21"),
+ cpp_dec_float("6.776263578034402712546580005437135696411132812500000000000000000000000000000000000000000000000000000e-21"),
+ cpp_dec_float("1.355252715606880542509316001087427139282226562500000000000000000000000000000000000000000000000000000e-20"),
+ cpp_dec_float("2.710505431213761085018632002174854278564453125000000000000000000000000000000000000000000000000000000e-20"),
+ cpp_dec_float("5.421010862427522170037264004349708557128906250000000000000000000000000000000000000000000000000000000e-20"),
+ cpp_dec_float("1.084202172485504434007452800869941711425781250000000000000000000000000000000000000000000000000000000e-19"),
+ cpp_dec_float("2.168404344971008868014905601739883422851562500000000000000000000000000000000000000000000000000000000e-19"),
+ cpp_dec_float("4.336808689942017736029811203479766845703125000000000000000000000000000000000000000000000000000000000e-19"),
+ cpp_dec_float("8.673617379884035472059622406959533691406250000000000000000000000000000000000000000000000000000000000e-19"),
+ cpp_dec_float("1.734723475976807094411924481391906738281250000000000000000000000000000000000000000000000000000000000e-18"),
+ cpp_dec_float("3.469446951953614188823848962783813476562500000000000000000000000000000000000000000000000000000000000e-18"),
+ cpp_dec_float("6.938893903907228377647697925567626953125000000000000000000000000000000000000000000000000000000000000e-18"),
+ cpp_dec_float("1.387778780781445675529539585113525390625000000000000000000000000000000000000000000000000000000000000e-17"),
+ cpp_dec_float("2.775557561562891351059079170227050781250000000000000000000000000000000000000000000000000000000000000e-17"),
+ cpp_dec_float("5.551115123125782702118158340454101562500000000000000000000000000000000000000000000000000000000000000e-17"),
+ cpp_dec_float("1.110223024625156540423631668090820312500000000000000000000000000000000000000000000000000000000000000e-16"),
+ cpp_dec_float("2.220446049250313080847263336181640625000000000000000000000000000000000000000000000000000000000000000e-16"),
+ cpp_dec_float("4.440892098500626161694526672363281250000000000000000000000000000000000000000000000000000000000000000e-16"),
+ cpp_dec_float("8.881784197001252323389053344726562500000000000000000000000000000000000000000000000000000000000000000e-16"),
+ cpp_dec_float("1.776356839400250464677810668945312500000000000000000000000000000000000000000000000000000000000000000e-15"),
+ cpp_dec_float("3.552713678800500929355621337890625000000000000000000000000000000000000000000000000000000000000000000e-15"),
+ cpp_dec_float("7.105427357601001858711242675781250000000000000000000000000000000000000000000000000000000000000000000e-15"),
+ cpp_dec_float("1.421085471520200371742248535156250000000000000000000000000000000000000000000000000000000000000000000e-14"),
+ cpp_dec_float("2.842170943040400743484497070312500000000000000000000000000000000000000000000000000000000000000000000e-14"),
+ cpp_dec_float("5.684341886080801486968994140625000000000000000000000000000000000000000000000000000000000000000000000e-14"),
+ cpp_dec_float("1.136868377216160297393798828125000000000000000000000000000000000000000000000000000000000000000000000e-13"),
+ cpp_dec_float("2.273736754432320594787597656250000000000000000000000000000000000000000000000000000000000000000000000e-13"),
+ cpp_dec_float("4.547473508864641189575195312500000000000000000000000000000000000000000000000000000000000000000000000e-13"),
+ cpp_dec_float("9.094947017729282379150390625000000000000000000000000000000000000000000000000000000000000000000000000e-13"),
+ cpp_dec_float("1.818989403545856475830078125000000000000000000000000000000000000000000000000000000000000000000000000e-12"),
+ cpp_dec_float("3.637978807091712951660156250000000000000000000000000000000000000000000000000000000000000000000000000e-12"),
+ cpp_dec_float("7.275957614183425903320312500000000000000000000000000000000000000000000000000000000000000000000000000e-12"),
+ cpp_dec_float("1.455191522836685180664062500000000000000000000000000000000000000000000000000000000000000000000000000e-11"),
+ cpp_dec_float("2.910383045673370361328125000000000000000000000000000000000000000000000000000000000000000000000000000e-11"),
+ cpp_dec_float("5.820766091346740722656250000000000000000000000000000000000000000000000000000000000000000000000000000e-11"),
+ cpp_dec_float("1.164153218269348144531250000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
+ cpp_dec_float("2.328306436538696289062500000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
+ cpp_dec_float("4.656612873077392578125000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
+ cpp_dec_float("9.313225746154785156250000000000000000000000000000000000000000000000000000000000000000000000000000000e-10"),
+ cpp_dec_float("1.862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"),
+ cpp_dec_float("3.725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"),
+ cpp_dec_float("7.450580596923828125000000000000000000000000000000000000000000000000000000000000000000000000000000000e-9"),
+ cpp_dec_float("1.490116119384765625000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"),
+ cpp_dec_float("2.980232238769531250000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"),
+ cpp_dec_float("5.960464477539062500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-8"),
+ cpp_dec_float("1.192092895507812500000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
+ cpp_dec_float("2.384185791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
+ cpp_dec_float("4.768371582031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
+ cpp_dec_float("9.536743164062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-7"),
+ cpp_dec_float("1.907348632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"),
+ cpp_dec_float("3.814697265625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"),
+ cpp_dec_float("7.629394531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e-6"),
+ cpp_dec_float("0.000015258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.000030517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.000061035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.000122070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.000244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.000488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.000976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.007812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.01562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.03125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.06250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"),
+ cpp_dec_float("0.125"),
+ cpp_dec_float("0.25"),
+ cpp_dec_float("0.5"),
+ one(),
+ two(),
+ cpp_dec_float(static_cast<unsigned long long>(4)),
+ cpp_dec_float(static_cast<unsigned long long>(8)),
+ cpp_dec_float(static_cast<unsigned long long>(16)),
+ cpp_dec_float(static_cast<unsigned long long>(32)),
+ cpp_dec_float(static_cast<unsigned long long>(64)),
+ cpp_dec_float(static_cast<unsigned long long>(128)),
+ cpp_dec_float(static_cast<unsigned long long>(256)),
+ cpp_dec_float(static_cast<unsigned long long>(512)),
+ cpp_dec_float(static_cast<unsigned long long>(1024)),
+ cpp_dec_float(static_cast<unsigned long long>(2048)),
+ cpp_dec_float(static_cast<unsigned long long>(4096)),
+ cpp_dec_float(static_cast<unsigned long long>(8192)),
+ cpp_dec_float(static_cast<unsigned long long>(16384)),
+ cpp_dec_float(static_cast<unsigned long long>(32768)),
+ cpp_dec_float(static_cast<unsigned long long>(65536)),
+ cpp_dec_float(static_cast<unsigned long long>(131072)),
+ cpp_dec_float(static_cast<unsigned long long>(262144)),
+ cpp_dec_float(static_cast<unsigned long long>(524288)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 20u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 21u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 22u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 23u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 24u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 25u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 26u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 27u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 28u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 29u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 30u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uL << 31u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 32u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 33u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 34u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 35u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 36u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 37u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 38u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 39u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 40u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 41u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 42u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 43u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 44u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 45u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 46u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 47u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 48u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 49u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 50u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 51u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 52u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 53u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 54u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 55u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 56u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 57u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 58u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 59u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 60u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 61u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 62u)),
+ cpp_dec_float(static_cast<boost::uint64_t>(1uLL << 63u)),
+ cpp_dec_float("1.844674407370955161600000000000000000000000000000000000000000000000000000000000000000000000000000000e19"),
+ cpp_dec_float("3.689348814741910323200000000000000000000000000000000000000000000000000000000000000000000000000000000e19"),
+ cpp_dec_float("7.378697629483820646400000000000000000000000000000000000000000000000000000000000000000000000000000000e19"),
+ cpp_dec_float("1.475739525896764129280000000000000000000000000000000000000000000000000000000000000000000000000000000e20"),
+ cpp_dec_float("2.951479051793528258560000000000000000000000000000000000000000000000000000000000000000000000000000000e20"),
+ cpp_dec_float("5.902958103587056517120000000000000000000000000000000000000000000000000000000000000000000000000000000e20"),
+ cpp_dec_float("1.180591620717411303424000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
+ cpp_dec_float("2.361183241434822606848000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
+ cpp_dec_float("4.722366482869645213696000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
+ cpp_dec_float("9.444732965739290427392000000000000000000000000000000000000000000000000000000000000000000000000000000e21"),
+ cpp_dec_float("1.888946593147858085478400000000000000000000000000000000000000000000000000000000000000000000000000000e22"),
+ cpp_dec_float("3.777893186295716170956800000000000000000000000000000000000000000000000000000000000000000000000000000e22"),
+ cpp_dec_float("7.555786372591432341913600000000000000000000000000000000000000000000000000000000000000000000000000000e22"),
+ cpp_dec_float("1.511157274518286468382720000000000000000000000000000000000000000000000000000000000000000000000000000e23"),
+ cpp_dec_float("3.022314549036572936765440000000000000000000000000000000000000000000000000000000000000000000000000000e23"),
+ cpp_dec_float("6.044629098073145873530880000000000000000000000000000000000000000000000000000000000000000000000000000e23"),
+ cpp_dec_float("1.208925819614629174706176000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
+ cpp_dec_float("2.417851639229258349412352000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
+ cpp_dec_float("4.835703278458516698824704000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
+ cpp_dec_float("9.671406556917033397649408000000000000000000000000000000000000000000000000000000000000000000000000000e24"),
+ cpp_dec_float("1.934281311383406679529881600000000000000000000000000000000000000000000000000000000000000000000000000e25"),
+ cpp_dec_float("3.868562622766813359059763200000000000000000000000000000000000000000000000000000000000000000000000000e25"),
+ cpp_dec_float("7.737125245533626718119526400000000000000000000000000000000000000000000000000000000000000000000000000e25"),
+ cpp_dec_float("1.547425049106725343623905280000000000000000000000000000000000000000000000000000000000000000000000000e26"),
+ cpp_dec_float("3.094850098213450687247810560000000000000000000000000000000000000000000000000000000000000000000000000e26"),
+ cpp_dec_float("6.189700196426901374495621120000000000000000000000000000000000000000000000000000000000000000000000000e26"),
+ cpp_dec_float("1.237940039285380274899124224000000000000000000000000000000000000000000000000000000000000000000000000e27"),
+ cpp_dec_float("2.475880078570760549798248448000000000000000000000000000000000000000000000000000000000000000000000000e27"),
+ cpp_dec_float("4.951760157141521099596496896000000000000000000000000000000000000000000000000000000000000000000000000e27"),
+ cpp_dec_float("9.903520314283042199192993792000000000000000000000000000000000000000000000000000000000000000000000000e27"),
+ cpp_dec_float("1.980704062856608439838598758400000000000000000000000000000000000000000000000000000000000000000000000e28"),
+ cpp_dec_float("3.961408125713216879677197516800000000000000000000000000000000000000000000000000000000000000000000000e28"),
+ cpp_dec_float("7.922816251426433759354395033600000000000000000000000000000000000000000000000000000000000000000000000e28"),
+ cpp_dec_float("1.584563250285286751870879006720000000000000000000000000000000000000000000000000000000000000000000000e29"),
+ cpp_dec_float("3.169126500570573503741758013440000000000000000000000000000000000000000000000000000000000000000000000e29"),
+ cpp_dec_float("6.338253001141147007483516026880000000000000000000000000000000000000000000000000000000000000000000000e29"),
+ cpp_dec_float("1.267650600228229401496703205376000000000000000000000000000000000000000000000000000000000000000000000e30"),
+ cpp_dec_float("2.535301200456458802993406410752000000000000000000000000000000000000000000000000000000000000000000000e30"),
+ cpp_dec_float("5.070602400912917605986812821504000000000000000000000000000000000000000000000000000000000000000000000e30"),
+ cpp_dec_float("1.014120480182583521197362564300800000000000000000000000000000000000000000000000000000000000000000000e31"),
+ cpp_dec_float("2.028240960365167042394725128601600000000000000000000000000000000000000000000000000000000000000000000e31"),
+ cpp_dec_float("4.056481920730334084789450257203200000000000000000000000000000000000000000000000000000000000000000000e31"),
+ cpp_dec_float("8.112963841460668169578900514406400000000000000000000000000000000000000000000000000000000000000000000e31"),
+ cpp_dec_float("1.622592768292133633915780102881280000000000000000000000000000000000000000000000000000000000000000000e32"),
+ cpp_dec_float("3.245185536584267267831560205762560000000000000000000000000000000000000000000000000000000000000000000e32"),
+ cpp_dec_float("6.490371073168534535663120411525120000000000000000000000000000000000000000000000000000000000000000000e32"),
+ cpp_dec_float("1.298074214633706907132624082305024000000000000000000000000000000000000000000000000000000000000000000e33"),
+ cpp_dec_float("2.596148429267413814265248164610048000000000000000000000000000000000000000000000000000000000000000000e33"),
+ cpp_dec_float("5.192296858534827628530496329220096000000000000000000000000000000000000000000000000000000000000000000e33"),
+ cpp_dec_float("1.038459371706965525706099265844019200000000000000000000000000000000000000000000000000000000000000000e34"),
+ cpp_dec_float("2.076918743413931051412198531688038400000000000000000000000000000000000000000000000000000000000000000e34"),
+ cpp_dec_float("4.153837486827862102824397063376076800000000000000000000000000000000000000000000000000000000000000000e34"),
+ cpp_dec_float("8.307674973655724205648794126752153600000000000000000000000000000000000000000000000000000000000000000e34"),
+ cpp_dec_float("1.661534994731144841129758825350430720000000000000000000000000000000000000000000000000000000000000000e35"),
+ cpp_dec_float("3.323069989462289682259517650700861440000000000000000000000000000000000000000000000000000000000000000e35"),
+ cpp_dec_float("6.646139978924579364519035301401722880000000000000000000000000000000000000000000000000000000000000000e35"),
+ cpp_dec_float("1.329227995784915872903807060280344576000000000000000000000000000000000000000000000000000000000000000e36"),
+ cpp_dec_float("2.658455991569831745807614120560689152000000000000000000000000000000000000000000000000000000000000000e36"),
+ cpp_dec_float("5.316911983139663491615228241121378304000000000000000000000000000000000000000000000000000000000000000e36"),
+ cpp_dec_float("1.063382396627932698323045648224275660800000000000000000000000000000000000000000000000000000000000000e37"),
+ cpp_dec_float("2.126764793255865396646091296448551321600000000000000000000000000000000000000000000000000000000000000e37"),
+ cpp_dec_float("4.253529586511730793292182592897102643200000000000000000000000000000000000000000000000000000000000000e37"),
+ cpp_dec_float("8.507059173023461586584365185794205286400000000000000000000000000000000000000000000000000000000000000e37"),
+ cpp_dec_float("1.701411834604692317316873037158841057280000000000000000000000000000000000000000000000000000000000000e38")
    }};
 
    if((p > static_cast<boost::int64_t>(-128)) && (p < static_cast<boost::int64_t>(+128)))
@@ -2860,7 +2867,7 @@
       static const boost::int64_t min_exponent10 = boost::multiprecision::cpp_dec_float<Digits10>::cpp_dec_float_min_exp10; // Type differs from int.
       static const boost::int64_t max_exponent = boost::multiprecision::cpp_dec_float<Digits10>::cpp_dec_float_max_exp; // Type differs from int.
       static const boost::int64_t max_exponent10 = boost::multiprecision::cpp_dec_float<Digits10>::cpp_dec_float_max_exp10; // Type differs from int.
- static const int radix = boost::multiprecision::cpp_dec_float<Digits10>::mp_radix;
+ static const int radix = boost::multiprecision::cpp_dec_float<Digits10>::cpp_dec_float_radix;
       static const std::float_round_style round_style = std::round_to_nearest;
       static const bool has_infinity = true;
       static const bool has_quiet_NaN = true;

Modified: sandbox/big_number/libs/multiprecision/test/Jamfile.v2
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/Jamfile.v2 (original)
+++ sandbox/big_number/libs/multiprecision/test/Jamfile.v2 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -322,6 +322,13 @@
               <define>TEST_CPP_DEC_FLOAT
         : test_exp_cpp_dec_float ;
 
+run test_sqrt.cpp
+ : # command line
+ : # input files
+ : # requirements
+ <define>TEST_CPP_DEC_FLOAT
+ : test_sqrt_cpp_dec_float ;
+
 run test_log.cpp
         : # command line
         : # input files

Modified: sandbox/big_number/libs/multiprecision/test/math/test_bessel_i.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/math/test_bessel_i.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/math/test_bessel_i.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -81,6 +81,7 @@
    expected_results();
    //
    // Test at:
+ // 9 decimal digits: tests the least wide arbitrary precision code
    // 18 decimal digits: tests 80-bit long double approximations
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
@@ -97,6 +98,7 @@
    test_bessel(mp_number<mpfr_float_backend<35> >(), "mp_number<mpfr_float_backend<35> >");
 #endif
 #ifdef TEST_CPP_DEC_FLOAT
+ test_bessel(mp_number<cpp_dec_float<8> >(), "mp_number<cpp_dec_float<8> >");
    test_bessel(mp_number<cpp_dec_float<18> >(), "mp_number<cpp_dec_float<18> >");
    test_bessel(mp_number<cpp_dec_float<30> >(), "mp_number<cpp_dec_float<30> >");
    test_bessel(mp_number<cpp_dec_float<35> >(), "mp_number<cpp_dec_float<35> >");

Modified: sandbox/big_number/libs/multiprecision/test/math/test_zeta.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/math/test_zeta.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/math/test_zeta.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -77,6 +77,7 @@
    expected_results();
    //
    // Test at:
+ // 9 decimal digits: tests the least wide arbitrary precision code
    // 18 decimal digits: tests 80-bit long double approximations
    // 30 decimal digits: tests 128-bit long double approximations
    // 35 decimal digits: tests arbitrary precision code
@@ -92,6 +93,7 @@
    test_zeta(mp_number<mpfr_float_backend<35> >(), "mp_number<mpfr_float_backend<35> >");
 #endif
 #ifdef TEST_CPP_DEC_FLOAT
+ test_zeta(mp_number<cpp_dec_float<9> >(), "mp_number<cpp_dec_float<9> >");
    test_zeta(mp_number<cpp_dec_float<18> >(), "mp_number<cpp_dec_float<18> >");
    test_zeta(mp_number<cpp_dec_float<30> >(), "mp_number<cpp_dec_float<30> >");
    test_zeta(mp_number<cpp_dec_float<35> >(), "mp_number<cpp_dec_float<35> >");

Modified: sandbox/big_number/libs/multiprecision/test/test_asin.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_asin.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_asin.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -107,6 +107,9 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
    return boost::report_errors();
 }

Modified: sandbox/big_number/libs/multiprecision/test/test_atan.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_atan.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_atan.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -253,6 +253,9 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
    return boost::report_errors();
 }

Modified: sandbox/big_number/libs/multiprecision/test/test_exp.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_exp.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_exp.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -189,6 +189,9 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
    return boost::report_errors();
 }

Modified: sandbox/big_number/libs/multiprecision/test/test_log.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_log.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_log.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -217,6 +217,9 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
    return boost::report_errors();
 }

Modified: sandbox/big_number/libs/multiprecision/test/test_pow.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_pow.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_pow.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -592,6 +592,9 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
    return boost::report_errors();
 }

Modified: sandbox/big_number/libs/multiprecision/test/test_sin.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_sin.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_sin.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -301,6 +301,9 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
    return boost::report_errors();
 }

Modified: sandbox/big_number/libs/multiprecision/test/test_sinh.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_sinh.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_sinh.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -225,6 +225,9 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
 #endif
    return boost::report_errors();
 }

Modified: sandbox/big_number/libs/multiprecision/test/test_sqrt.cpp
==============================================================================
--- sandbox/big_number/libs/multiprecision/test/test_sqrt.cpp (original)
+++ sandbox/big_number/libs/multiprecision/test/test_sqrt.cpp 2012-04-20 16:05:49 EDT (Fri, 20 Apr 2012)
@@ -50,109 +50,109 @@
    static const boost::array<const char*, 101u> data =
    {{
            "0",
- "1.7724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021",
- "2.506628274631000502415765284811045253006986740609938316629923576342293654607841974946595838378057266116009972665203879644866323618126736180957855655966147931913435480458123731137327804313019938802647150234465504898425802329413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739697252377702538748247848633488642597506589513095738763427251926880402",
- "3.0699801238394654654386548746677945821221293132529234536092078633942877416889511494096190816646754176075937074244926190270345429405099416216417975877667492169521054332143197658279274969526803993603118331066475990710709664118358901594985707262626428113026982211562266383695623138538180531502756293265592878111781185072888638355377253555018107077854544789544383440520575813285321747411416665951698336554",
- "3.5449077018110320545963349666822903655950989122447742564276155797058225691820643627499013134770893308324536472485651413324723057314488452050501874192055741369240753973062102456998503460579016524578641907585359256003492780307029594410334003803704680371708939489898252806278435510518124328108386650018127968152274669549503068673359795787317036728175909023303234775201181347868635826656197096924963698041",
- "3.9633272976060110133450287651201830315223597563961947927072580621967387180265716572287741878596340312327405647932953536228865576823564748759947646553751734998345995939694212511640273087471173966245241872854466233365203399138209787201764302154653389399844478265349330231414848625437655715466042970013389483751348124861944502103329498799507208968519689075130370544887031405163197191213743249921794351351",
- "4.3416075273496059561780877637447746072326533687072755618572739666222092317177743715006976894086930825786781544103546196765147228208117261527925650444366222660658062788515204204290333579229705891625284205192508929083683171545403426350581368076912529151526695869265253040752801155830676216390514320781159868843187117008896251829228661529973809619044473853320316190549204385101682005396209108634347068051",
- "4.6894720998347514072224884956178300284641581320824106981633983758453256799744598320502835518976559264849872655758786968460389643339445673551269229241587961003379434250163073293499620997874074698516457801989721178630024470871191608919926005831108426583129390228179129584616970283973090935125037470398636450816554023533350528106738423929159432353981681442386558251657700009494385592281294126884159744657",
- "5.0132565492620010048315305696220905060139734812198766332598471526845873092156839498931916767561145322320199453304077592897326472362534723619157113119322958638268709609162474622746556086260398776052943004689310097968516046588277255593373672260673516476883623121569801912000827503005505833029224516877237298413981218533281823760314793945047554050774964956972669772851950131790261914775268545038537608041",
- "5.3173615527165480818945024500234355483926483683671613846414233695587338537730965441248519702156339962486804708728477119987084585971732678075752811288083612053861130959593153685497755190868524786867962861378038884005239170460544391615501005705557020557563409234847379209417653265777186492162579975027191952228412004324254603010039693680975555092263863534954852162801772021802953739984295645387445547062",
- "5.6049912163979286993112824338688008938543237752107832649583533936522833776518879743363843375245853739417146705744562990455542075539831517566644946677745451618612727648966621311978378350382925082779759505143787044093893128068035895930171543641983336476166511254286056162309665822553855728700099730566135263229310482770603702313599779589939672325828370865928422053430400072831171741334547285379289682272",
- "5.8785643816741282350544208778970709719984349210386743751731421071573245581781685524668778017649261234929950374883647452602146761146149358621791392549585140581629668270696079138391334037573962811189827061481326675520008356479940776678802748553233235202402722469819906081593819717286567095640228930465862438974894553668787148856578760128886389981154414656617912505436134549129966633314429654846358015259",
- "6.1399602476789309308773097493355891642442586265058469072184157267885754833779022988192381633293508352151874148489852380540690858810198832432835951755334984339042108664286395316558549939053607987206236662132951981421419328236717803189971414525252856226053964423124532767391246277076361063005512586531185756223562370145777276710754507110036214155709089579088766881041151626570643494822833331903396673108",
- "6.3906732428334428261259345606683697744186991536295350856572952536792334275205803679271798801956028881370696845677932311660934936022581339690170211061979607805733455201951479794666965209869986063436354009130926493418080814534089804341799659379279227089093453978416225274321462755382516029668891204905799575745973313377842838152883214737404214320108342272339141901742347633007754961396966894396055218335",
- "6.6319150439565422209346322551709504425716735849288353552017602534239577421171265746820083094212110964436394134010761548512808504941585541646833262349861354253649509838599508444233906260858397863860491814334791305676062694775880372125594128993954478298062410594772628739424601593453063666245276274089103412069272086098919187261711687627099337914569206834456380008016156884529727902326858088262113926506",
- "6.8646842464782674501407002511771796402482345158456677029870019960868679981055033418327138403618402473871307535713830436350072970119200914833099051433782215491766416984101933198510637348024255711982258019646531673420782186308197017640254188794990907965118086055013577841433086632978528558423768612444566483278359963402485448887021894326224663275495307768561423891711354763179723690983043995316901267288",
- "7.0898154036220641091926699333645807311901978244895485128552311594116451383641287254998026269541786616649072944971302826649446114628976904101003748384111482738481507946124204913997006921158033049157283815170718512006985560614059188820668007607409360743417878979796505612556871021036248656216773300036255936304549339099006137346719591574634073456351818046606469550402362695737271653312394193849927396082",
- "7.3080144438162192957641041416982527245725757227305100451197343989892588739821761414808182301620094920283430190134112374199876901202971502696155007476535432232511740870601931279580970011543206100142223236655886609010356942017275197137478321035055972286226075962614582069104333896744606536872975969818688237536119023271082556121464860312141980207823280639488597150891408230800059272527978401067077953752",
- "7.5198848238930015072472958544331357590209602218298149498897707290268809638235259248397875151341717983480299179956116389345989708543802085428735669678984437957403064413743711934119834129390598164079414507033965146952774069882415883390060508391010274715325434682354702868001241254508258749543836775315855947620971827799922735640472190917571331076162447435459004659277925197685392872162902817557806412061",
- "7.7259472181866523240047447857321216411382058048896371981452984461525717139136608383759839184128073783247516939318227254188667186252920148976230121738172757350696910761931890703374371352358496474852223543486038624030825959222662530865956553207195355499692117829480399491662056117052329890340838528765941430191040119361471649248115254864172681901246179411702783591299133670884083665071028145395467905989",
- "7.9266545952120220266900575302403660630447195127923895854145161243934774360531433144575483757192680624654811295865907072457731153647129497519895293107503469996691991879388425023280546174942347932490483745708932466730406798276419574403528604309306778799688956530698660462829697250875311430932085940026778967502696249723889004206658997599014417937039378150260741089774062810326394382427486499843588702701",
- "8.1224039375904999377505608579034490537406469390188453967144182984533857877290325940614418824321939803516927684051300838316226942055451781105993601208197552034439458355062514914010489070985895267530389722733907460105781807411858969857115513607918067972038272323523153845863300953401051857105777813389049407583848705460609239380620914585791645607237224057116980335542916058764975650602331697086068450513",
- "8.3135454758469596794056637871226727528862453946735918624095026138842010906353046929837281458679232254339472365667835656180555764317605853990925880640952695214325626531682928857436719230013491132666257954067248287299135662202926101799336433744666850543864886828346127739925910374766049639016834422078705626669128492094502607019895812459974265416556762885336564093974655530945349099945854007412027682568",
- "8.5003900517896968140560669406685714433987187446432157683182522591265374787311356353957620692173960349646676819100596310150960821656523158016643597684118372232800409169139557083780710669356964332570202113507421938631568719639718297731072485795933970567341061565566173805049809290766392136448216369341299035269967401098236132846311584581915310373661351551853853444420939639104451552704753437006616697649",
- "8.6832150546992119123561755274895492144653067374145511237145479332444184634355487430013953788173861651573563088207092393530294456416234523055851300888732445321316125577030408408580667158459411783250568410385017858167366343090806852701162736153825058303053391738530506081505602311661352432781028641562319737686374234017792503658457323059947619238088947706640632381098408770203364010792418217268694136103",
- "8.8622692545275801364908374167057259139877472806119356410690389492645564229551609068747532836927233270811341181214128533311807643286221130126254685480139353423101884932655256142496258651447541311446604768963398140008731950767573986025835009509261700929272348724745632015696088776295310820270966625045319920380686673873757671683399489468292591820439772558258086938002953369671589566640492742312409245103",
- "9.0377767727099026972694942617286283519638707297067360423044656369897256312879279757777821069900749950044557425089876204493377875035177412255299561756483293212989442985024715332632332359674718551451382911466759962124284189582809463459910475239066062631635959736116080550697706078586467289296679727180578661286024444872547183386534308509666500269688916003034333222621461052151120014437539157953639737316",
- "9.2099403715183963963159646240033837463663879397587703608276235901828632250668534482288572449940262528227811222734778570811036288215298248649253927633002476508563162996429592974837824908580411980809354993199427972132128992355076704784957121787879284339080946634686799151086869415614541594508268879796778634335343555218665915066131760665054321233563634368633150321561727439855965242234249997855095009663",
- "9.3789441996695028144449769912356600569283162641648213963267967516906513599489196641005671037953118529699745311517573936920779286678891347102538458483175922006758868500326146586999241995748149397032915603979442357260048941742383217839852011662216853166258780456358259169233940567946181870250074940797272901633108047066701056213476847858318864707963362884773116503315400018988771184562588253768319489314",
- "9.5449561001664121805331805088802752995271020253115319957577421074579216968677586712228633689301398077088311039352276247681835887608812952471054772558240075235037900668496782095699528477874731344527911180393401955463971510372217637805322797423365420146482689917834696038570131901274302300283422182521267833006285359393142295438279095927378336768120882908112575029657358394527378572761652822503523073037",
- "9.7081295627784962702001300843202309014239162997075295338190725567740867768360828377797213369985222605738422125153205809614310720383763405854578937000465002140881359434675879559012762493638090947752116234678266669492794549428222971705363614488937056614823310418806119084118208768665243016864006604622872546517235887590814184637647435563763625009597343962143998069332678679995949595625752510047376769469",
- "9.8686053858325691182072112788747533886058057201411380476476456712628079750259677966540684132469441944845346447517503807626845356172247759078119619345186680215080975949071260888809391129195428784313017526586710196446975545314396408422675567403935100395356341294811788475428908479858626488242639666149638195038312462497821769798554375186844561183275752651214811690182399175358793738641461618652775991586",
- "10.026513098524002009663061139244181012027946962439753266519694305369174618431367899786383353512229064464039890660815518579465294472506944723831422623864591727653741921832494924549311217252079755210588600937862019593703209317655451118674734452134703295376724624313960382400165500601101166605844903375447459682796243706656364752062958789009510810154992991394533954570390026358052382955053709007707521608",
- "10.181972184624311615821119525392646566614334777981507304797991128872845411935855045687447106020270650309180533858862699802452616670765042577313665825807440090307057847512919113426271458183092072699581551465382478938467355504032255882264015569014213825098166114446059843169833192986444108942840506996523623715072210566481161204920674164962676130998460012958025127031857745585310129294054842583903606686",
- "10.335093140463368369194743647270744470970869361548018260412395037033434954444302167923137950092164921880086359392676052875666101107812632184449266829146247839347650312553659121907050973521042894776187579282867330188754139851333707822660813843642659379040498993205802303976963038480061139480627996652519324110663045988145350403266422896739974552818525729859458145898707780132492595810710069483709616997",
- "10.485978393819184450541593598855581216998391038666955618731153780797160148941518448029432453424375096293506458743106555413233965573260145046667734677176640468352558693946707494977637683951611790027770744751949296502577300781357035084119423389099318378785160701550868259776821786756050171108775480133925239818616956336860985197400338717780301525607287576543821416712628079932173339130152141281524936833",
- "10.634723105433096163789004900046871096785296736734322769282846739117467707546193088249703940431267992497360941745695423997416917194346535615150562257616722410772226191918630737099551038173704957373592572275607776801047834092108878323100201141111404111512681846969475841883530653155437298432515995005438390445682400864850920602007938736195111018452772706990970432560354404360590747996859129077489109412",
- "10.781415870970860097347086002569754013483313106913200202187513520048043712278512261111348167752270787807827044005214735609272769552792030217118319247865527486947266834539351039872232355517952920779295855320877662434434089302868383880854490418955953060861828833022956166078549446407677882309027526266764943581836604667447009735143063508187804312221807902016203318428080812848859262617506901631056404484",
- "10.926139338138249418394948518774535514239264300129320003780439933689850327924622206216861373106327795446382986541097387057719208036647206296404050944003327874361582341281080807890889880787061319999797409840564399938369028699154596465019693581401702995072256439155901828510666479433850274478604710483110368760249425996181639834293503287006547476391343675449556976797862780800361545757368573258815323922",
- "11.06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602611864735807868417839407991190718628442039357569977371968270131812518244771818655226966561256042843867368054126790999954427565212628829680859010057375985048181200629605336234528792323216018627284394365650824130654190684379749960413601595348763566769123659605593998962030711530297996631109",
- "11.209982432795857398622564867737601787708647550421566529916706787304566755303775948672768675049170747883429341148912598091108415107966303513328989335549090323722545529793324262395675670076585016555951901028757408818778625613607179186034308728396667295233302250857211232461933164510771145740019946113227052645862096554120740462719955917987934465165674173185684410686080014566234348266909457075857936454",
- "11.349242212464298392610285658298501528539506746683292704338035654856239080485360828460205074304281603179304760097806255228463147327169830108042093067800293527086021375553337641095043483168312926670841786279105684958531871509131651122477280457930695269239120342802270691155290589721502201125592305692096859835744595168676715800717585850328384113754784770216906888175704141625668202687511966586138689496",
- "11.486813807613115307809355167215211082379289672043820620858981542835886683139127150291615174043283349892373335303488265357426140211488562306351746628698313560931134742861605848764176458004039113239912373535418892499572608431667264556464452240410101014511349682690566153385156486931102628456780783577079308426737658296507891772476075136809898570922049321898908119541008410725370277134653232606047953378",
- "11.622757164475265300727734810950869136366250850775675675103670116706112045368165235882961201344951218672069233183763229866495319155659488490374792371109115979803795182321120105254011624290383337645277922708894963432033544765028110116592451203025661365050867782024140543770476276220678204795976767514166142764541148954132005264256215811527038353628432725649155000008199699094629246514703895814051248301",
- "11.757128763348256470108841755794141943996869842077348750346284214314649116356337104933755603529852246985990074976729490520429352229229871724358278509917028116325933654139215827678266807514792562237965412296265335104001671295988155335760549710646647040480544493963981216318763943457313419128045786093172487794978910733757429771315752025777277996230882931323582501087226909825993326662885930969271603052",
- "11.889981892818033040035086295360549094567079269188584378121774186590216154079714971686322563578902093698221694379886060868659673047069424627984293966125520499503798781908263753492081926241352189873572561856339870009561019741462936160529290646396016819953343479604799069424454587631296714639812891004016845125404437458583350630998849639852162690555906722539111163466109421548959157364122974976538305405",
- "12.021366896702325047512148370523129868500863831336365554094968238961326486689613290630609864218702661853221321521170144826739118836804766785357157269477553635675326417440397275525273224383182704417613920902492439425058136861846204626155795604149515361113916782624367244364805538377594330304168849066367137313615505351036054026784342300533235365305626284568959522499820909662710078078441813899168007885",
- "12.151331396958947321546025714556865120149751887789792242805026251328834724212197338975462680992513495564542856143237780070708286761588671182939823052704607214915211775783314118543447776586990218385020548327676785144266827587041679291236998809169833652034346885774675107188363717375427120958548330331469713644263714560973379556087401639283796742412962466979669807549620252885888038363577488350118588327",
- "12.279920495357861861754619498671178328488517253011693814436831453577150966755804597638476326658701670430374829697970476108138171762039766486567190351066996867808421732857279063311709987810721597441247332426590396284283865647343560637994282905050571245210792884624906553478249255415272212601102517306237151244712474029155455342150901422007242831141817915817753376208230325314128698964566666380679334622",
- "12.407176956338612191087172383388016279582846192856709897496654528970378992137225269624654597169812657913587765369977994663653070060070958217675655967219509479234263890571735859949476211202655783602524667654875739601222473107460358043616901331296638130098128821464388482197452428681343514837935327506344788853296134342326074035675928525560962854861568158156132171320413471754022539329668983923737294314",
- "12.53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332601939822433161809063368090478927827983073965956717740229061865568663902156509969401323575117232752449212901164706931389834341806516837911922090578039245047800020687575137645825730612921930932460349530463332045594007869848626188851269374123924316744321298753294756547869381713625963440201",
- "12.657852319136902268774845164792088421135161808965517945523128473136824363883193009269209734457043707990147945768735771850922659087939277511584226597559704972434156306141869703126860783026363074957510823322218307776858151286948305635221192680870601025159853336795122235254709338570514335130167369800379884747089903762281584689350599843615480943120877060478385159492967618565239777860563171974700594693",
- "12.781346485666885652251869121336739548837398307259070171314590507358466855041160735854359760391205776274139369135586462332186987204516267938034042212395921561146691040390295958933393041973997212687270801826185298683616162906817960868359931875855845417818690795683245054864292551076503205933778240981159915149194662675568567630576642947480842864021668454467828380348469526601550992279393378879211043667",
- "12.903658808270584524837154363200375169745690840774169241078436884878608872508906572537587380452008766699694274634572683484063997575550636271724653470644222116629862120750427362283465850548658876022606030340287534831876059275988640705535030144354363210242251009786303368432070884750488539702567688880560860857563258835290820838217726051097677070824752411130297718422198873037383148768947802251879541624",
- "13.024822582048817868534263291234323821697960106121826685571821899866627695153323114502093068226079247736034463231063859029544168462435178458377695133309866798197418836554561261287100073768911767487585261557752678725104951463621027905174410423073758745458008760779575912225840346749202864917154296234347960652956135102668875548768598458992142885713342155996094857164761315530504601618862732590304120415",
- "13.144869567532369703435413653931342518067740699025339623141355353215828472920177249101100071067765021905490369373865624919713235361781704313989935557374066820403290956743429603874630415006274130921897795214176147246606564445416505741569346364219413607323060794720326291947944072987907139328701736835753824779102737278004452916595869434574114960991640537914399673850290672639531054905749913587677194565",
- "13.263830087913084441869264510341900885143347169857670710403520506847915484234253149364016618842422192887278826802152309702561700988317108329366652469972270850729901967719901688846781252171679572772098362866958261135212538955176074425118825798790895659612482118954525747884920318690612733249055254817820682413854417219783837452342337525419867582913841366891276001603231376905945580465371617652422785301",
- "13.381733118494712177838769415668363136693460917853586922473464683953085883088277884543132016555752708286716738574100724123397234966834133579930312055894987491473163259667229253648684025236934307557806266139484672929088612080633523093147067612558483695818827536275063195935514841373590920865965312578548954529988065057157198978981673627647254889933136041368681534023007231776113961710869320159667705337",
- "13.49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174297398771305025250783532430038321980650780572061258675589431807213585169525934929261000167914426347007424971894853755903478955153674190248106782011276139620636507795882584271293035478532473175580070278864979183505217356484769621601133034831695071383225633005792357284236385529593207735858",
- "13.614476360176244437992652165124010849348942994806267539289974901165636798182245517885383466885359131822710017177747823047886229391043506105903448210261769449935362361092960808325221972886007181477749623755496282578986043666471300738088582325762070505557101653785908332333215528357372693553823245805882631589902970439410267849152146509417834583229229656869363779274739391530153058374399344402589683807",
- "13.729368492956534900281400502354359280496469031691335405974003992173735996211006683665427680723680494774261507142766087270014594023840182966619810286756443098353283396820386639702127469604851142396451603929306334684156437261639403528050837758998181593023617211002715568286617326595705711684753722488913296655671992680497089777404378865244932655099061553712284778342270952635944738196608799063380253458",
- "13.843307114594308080228438262394272564345963431637029583240249081158469052183791491684039537760243230438634632151602246770081706304258619208947181121555949109643060376549010534247946473402803168501401798859700886609956343474750915165635990740345802222770885528894449519285586683416492340458031775111481023344097481374008848545235590455121882858118351182839281932280042314361125165296526825458755105679",
- "13.956315578352589716302829873401945109198453712022825800945047218826731843806713506320236853413543088508394629854930633075647798955617836866562243675418009347632488093795950654785453808337001941625657577694831670791784231090389461985759139354822791165710146844931160825962396468466501611937704664704804958138610109693667041306322225916233920219127362826337256387581504195730954720065862316612737195428",
- "14.068416299504254221667465486853490085392474396247232094490195127535977039923379496150850655692967779454961796727636090538116893001833702065380768772476388301013830275048921988049886299362222409554937340596916353589007341261357482675977801749332527974938817068453738875385091085191927280537511241119590935244966207060005158432021527178747829706194504432715967475497310002848315677684388238065247923397",
- "14.179630807244128218385339866729161462380395648979097025710462318823290276728257450999605253908357323329814588994260565329889222925795380820200749676822296547696301589224840982799401384231606609831456763034143702401397112122811837764133601521481872148683575795959301122511374204207249731243354660007251187260909867819801227469343918314926814691270363609321293910080472539147454330662478838769985479216",
- "14.289979792964598888046537025443929046349268690964636578475665109896668898160471038052184926128242082008071899344418492114005094607229573377783255206983187149713770987548494300509284453832960172186602825751752512740011206822965310731878663221408732182835419428674418921388428247682017853292902641094633654925031641157363239954497643638130492825559275734408219193654081845577502824457995610506588347991",
- "14.399483155201312771128205693735119100150409368172849193283383259397943499400343097146699820101799211280532901097982868866065091616972220786072353233159181246251291666898296600872888597521470039336674892211278156066944280526085074727923215099315369244314973758177163795161905224659231453738958954759692535888585135313785224088858851114397375930143280080631232806768837383757811100735506790734241356142",
- "14.508160041525463782196810772461415937984681525001596663279698630294663935908428439756213479497787337122567348801168744730052437263877739149127104404701300967284676515346229296805236190281514801622180654355551641687098356104648569744546852559008969056173614451568235018709148732753388030273661774352691760355549492167313040490929262056910773064824444033384277728019069474988708219182391801225541693935",
- "14.61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802682247483997538024059430053923100149530708644650234817412038625591619400230864122002844464733117732180207138840345503942749566420701119445724521519252291641382086677934892130737459519396373764750722380465421651122429297206242839604156465612789771943017828164616001185450559568021341559075",
- "14.723107453852795047660891850891348521019392896043801015617971628447783989965629640672866077356179147930039264054884436242337612281568551505460575065987584693479589826744627929483999892320528426925051155319040406737336570522942634239674703047310686338476335923532963117635039796288802156148141351666029297701497040980317238592980791463337224993212730297458845130688595199892451695017449401650874288673",
- "14.829412859290334246310862079120981116215413675054277728460153169122428030531791551314608952543420254520474051699795429624440231166188714141339453291154149160307170860994018007001626101791576255751027842245708752403881346737835127200458159845732446774737303087761617897753731524877979274694284246989924515961238107617606034599749358785428854546203389668405763983263427124792153857226338962692134292775",
- "14.934961613773077251874220527850221390835466676976882941215420887391409941569982643090524050005551945256610875794604586439205076677328137831885915476923937188476319884303388028434778637885660437004576928003169458451279164932299027997584048683596586922839913541602495362116464353240069317035849303355081215425573060479512202737316638230608336142262048918028633468554185638406802946342865126132844574834",
- "15.039769647786003014494591708866271518041920443659629899779541458053761927647051849679575030268343596696059835991223277869197941708760417085747133935796887591480612882748742386823966825878119632815882901406793029390554813976483176678012101678202054943065086936470940573600248250901651749908767355063171189524194365559984547128094438183514266215232489487091800931855585039537078574432580563511561282412",
- "15.143852340539209919669694152668075754802130564520529114229055107020254596987080606065177179266558949005546167801108989466486322639120015544612100116126475848822295714630667404278002543054087765126012369520774988292980482378607240819831183403574109472290470399416907492752726605411715253325510753261994252828188462682810154109677323956353529409565238339361711344464981722604499214446881247473198801415",
- "15.247224546311525337004063635408328366688778670871498563977766898883017695500718397562791377885264468934146929755054408018559707733171577715334636002100724249512539221477485126428071589422606639367264374525385748313792960737408667516619228196176535880477098918773859144321945753279661701266364778960943177407574056743200803896101394393730713481442086031230604416350429704383528396355475201590099114842",
- "15.349900619197327327193274373338972910610646566264617268046039316971438708444755747048095408323377088037968537122463095135172714702549708108208987938833746084760527166071598829139637484763401996801559165533237995355354832059179450797492853631313214056513491105781133191847811569269090265751378146632796439055890592536444319177688626777509053538927272394772191720260287906642660873705708332975849168277",
- "15.451894436373304648009489571464243282276411609779274396290596892305143427827321676751967836825614756649503387863645450837733437250584029795246024347634551470139382152386378140674874270471699294970444708697207724806165191844532506173191310641439071099938423565896079898332411223410465978068167705753188286038208023872294329849623050972834536380249235882340556718259826734176816733014205629079093581198",
- "15.553219419991929097391447827110150978276147342755611087132612856263542587794892243906527633373900129242231785993922632274254453378155136866947691413591367716787056987199223748707467009025071039158554274945537967635091771197351723187066327453183887178046363960719814297174200677165073465692725493619076089149843317017809607596662107883796994364174947841232638766495324678472146142625602614264235678696",
- "15.653888557799428533661532247337596699165609502143573736324609963676016536620219650233947025955941767418394468430088744792011863372700125171657152344359691884844467537973207254356056413344833677019845894722403336263492187594473529648820105313588218738589863121077164638145443372177511689907229285786639401142720480840361807890924894118341348723302140201727278896670612158646957973089749997574886849052",
- "15.753914422567924620983011231186756248927500048298297966046797894473026288195693602724718689673345950533773458261077009361447048732755177208182393190558955000510862906901264875534878251422852119708834699869325135138115458649625715331447841946651213506247785763655954618727631238085210998597640478337632316374699558747521521322958958007061686783767533791960628390158818930229551073161600125867700021792",
- "15.85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917318141449154623072942589950397905862150069399933839837587768500465610923498846958649809674914178649334608135965528391488070572086186135575993779130613973209256593945017506228618641718800535579350053924994477780084133179951980288358740787563005214821795481256206527887648549729996871774054",
- "15.952084658149644245683507350070306645177945105101484153924270108676201561319289632374555910646901988746041412618543135996125375791519803422725843386425083616158339287877946105649326557260557436060388858413411665201571751138163317484650301711667106167269022770454213762825295979733155947648773992508157585668523601297276380903011908104292666527679159060486455648840531606540886121995288693616233664118",
- "16.050252259524242304765819675794450638017457570575983927825323032144525082963948191096147193145311656453873849743947855717510860973988659112083956949050053482287530484973632648820968563125979705559716208799062595086459726936476696439381910220384322311324311842667158228425675297979222265812106596748979173989790155646435957100594433524698909367347330792212795303074381195611252785521380020853492164213",
- "16.147823080773235880405791115635997557864326968336419500556329380232598367900898497414264871456444239647173004031647690209887509450260015358377350981847404025422287378732373648981765201137038640626625054151148020200007297959878815562787393121096595035600314225225829183114125474497018547223659528472930900422571056329570935652356761026639723378971526771480442539666833071774260326796995470405776697508",
- "16.244807875180999875501121715806898107481293878037690793428836596906771575458065188122883764864387960703385536810260167663245388411090356221198720241639510406887891671012502982802097814197179053506077944546781492021156361482371793971423102721583613594407654464704630769172660190680210371421155562677809881516769741092121847876124182917158329121447444811423396067108583211752995130120466339417213690103",
- "16.341217076923383960696369420161248669121212808135654273983491452937095658109553619994922766756319666975188172033084786774938321749356282450853819283481043653079525140374828081598688868309044496356854434283025399835051607515358702243412387084009896448573365043827048092425743953483386894323518311923913690941609208424884900176315736258863356896904842838787088633319141807219561302676306271570497938951",
- "16.437060814169977953327247404361277316133609673377048855107248395882567096603010277067169202635116275806042691595212970108586780272931810640625169517986388546454661584514822804714353912243137592516024763283438958227839402433048048710441109095172462035564435115216917054500940736255985371596025417460999236751644500293733791545234403402763313780467186900924301219121627362814381042265364554244922063244",
- "16.532348921502715844688082576333627653976665425427208876480987568125771090198651469125133728158959771903048097921398391233385160724013876315451069276292964513405939027110844786864417344898464954584607502706435338641340198705784007825954758491636479758251565454590803621730664169376188515867591916106130400067381048724859197544495864321744604824010272768413212368063633927635680949445491291877351894002",
- "16.627090951693919358811327574245345505772490789347183724819005227768402181270609385967456291735846450867894473133567131236111152863521170798185176128190539042865125306336585771487343846002698226533251590813449657459827132440585220359867286748933370108772977365669225547985182074953209927803366884415741125333825698418900521403979162491994853083311352577067312818794931106189069819989170801482405536514",
- "16.721296186883706959605742705233010783899326523984270864686085184270332637146646055028529386107385333643018392715062510774480808240365813021854787737722340862660933836784188253900670608552564136025173808090739064412712504259523027988063714336820233104689334204836546487559659633964043151984340548060532718923362128881432934135325567300871046043987974739750202594174747157312786841203825015000569906569",
- "16.814973649193786097933847301606402681562971325632349794875060180956850132955663923009153012573756121825144011723368897136662622661949455269993484003323635485583818294689986393593513505114877524833927851543136113228167938420410768779051463092595000942849953376285816848692899746766156718610029919169840578968793144831181110694079933876981901697748511259778526616029120021849351522400364185613786904682",
- "16.908132110811980070323724133825443669074486306220411933324368366059977522675356589320971338976776616316134235802112798127138113465084701628640560443298729802233609863856357626793535493930184649436981665533778324622620988007501131586355391858595913504065552289654660238871963950906549509361444433014511210945609775277269846879360970012281095853461600076871591771412527553822562541374853347368516919083",
- "17.00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382011926203019216433130463160332871953682367444656008183382791141675614213387139286651404042270148438772631374392794365954621449715918679411346821231311323476100996185815327842728964327386825980705399348021964722656926231691638306207473227031037077068888418792782089031054095068740132333953",
- "17.092925928109873230856890966518170609049635890295121605225309418908275818470576879572890960685410581830840991105430126130887790543881945170122581670877506416385845881122034595711744339948691879348516227414909772352427723381307136312192527194398703992339257139025461873121242339773525646882099071218455368070360012094043767404721710936020967834426862977103157516068354293085070758241766981055235066209",
- "17.184577662469350439927855242766012175901435587217348622500720382402437284043691040754973131531272064166131201551424433897942349835349079351126685371244284352588634150544638769966985677717022600144009093735325965072805119643341927076098445506587163233137151789343227901578709257933753169161253949701854384420333694583107005741557086141652266134114205529376278344127778702038153204605578398292401917015",
- "17.275743170440754085190445015394979038018668745865422068491523038650327582540706316060451728873454611950564439169497072829566902102398394981985975990083088007962977970505915486567012863555181572053681584109963952561485141768953808491468086742419682163408958624144213019203883451244657001188829080210013359418255598633772348738641653443346826322446562330527464133013054079541191939171126793437194110759",
- "17.366430109398423824712351054979098428930613474829102247429095866488836926871097486002790757634772330314712617641418478706058891283246904611170260177746489064263225115406081681716133431691882356650113682077003571633473268618161370540232547230765011660610678347706101216301120462332270486556205728312463947537274846803558500731691464611989523847617789541328126476219681754040672802158483643453738827221",
- "17.456645937814341319169222501542608627403113623558293524363238531385820187770170403648403252074964213113377845095534227202560251082915822197277767058606166170134732818652676480521208063952545598229201593834632528912430284433244772566961770292191780850052527418760053662080114781916361358783723872887199722599102508052518044253446686455582486241466233995573362181026486277618737441990128524043149017597",
- "17.546397922417003516910356993677316771048907184269568216409465034396055582254893824626170868646400862812069808656427157514064265326887153266704989591763035523394048363206866117961294630191139571618530051641258534288980616305897039457680785291235730766909268092549430669200289626051927041560228580907033054444893426486648638316110177880766643917771237734940434420498182546126591670171343990763488162814",
- "17.635693145022384705163262633691212915995304763116023125519426321471973674534505657400633405294778370478985112465094235780644028343844807586537417764875542174488900481208823741517400211272188843356948118444398002656002506943982233003640824565969970560720816740945971824478145915185970128692068679139758731692468366100636144656973628038665916994346324396985373751630840364738989989994328896453907404578",
- "17.724538509055160272981674833411451827975494561223871282138077898529112845910321813749506567385446654162268236242825706662361528657244226025250937096027870684620376986531051228499251730289508262289320953792679628001746390153514797205167001901852340185854469744949126403139217755259062164054193325009063984076137334774751534336679897893658518364087954511651617387600590673934317913328098548462481849021",
+ "1.772453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665416226823624282570666236152865724422602525093709602787068462037698653105122849925173028950826228932095379267962800174639015351479720516700190185234018585446974494912640313921775525906216405419332500906398407613733477475153433667989789365851836408795451165161738760059067393431791332809854846248184902054654852195613251561647467515042738761056107996127107210060372044483672365296613708094323498831668424213845709609120420427785778068694766570005218305685125413396636944654181510716693883321942929357062268865224420542149948049920756486398874838505930640218214029285811233064978945203621149078962287389403245978198513134871266512506293260044656382109675026812496930595420461560761952217391525070207792758099054332900662223067614469661248188743069978835205061464443854185307973574257179185635959749959952263849242203889103966406447293972841345043002140564233433039261756134176336320017037654163476320669276541812
83576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136",
+ "2.506628274631000502415765284811045253006986740609938316629923576342293654607841974946595838378057266116009972665203879644866323618126736180957855655966147931913435480458123731137327804313019938802647150234465504898425802329413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739697252377702538748247848633488642597506589513095738763427251926880402028571859249736308099784525385500999641019298258645588137169634674801528974523304735834747756198960891889314977186485484804693652160029795239196018238091657904112979752977128848801667547005586301968241421642338363617519213056151359841709828370363423435580976874244875261780109223242848839195367251539745828256303365118628087902035519300881456040264877714156500483767232750941368064247174816351844713073831681919536988437233401656055005550630298233858652495611258966343623110394388674844019702154248446926734325728761164522433801156627031635317630180312268256176688917760955023889604244679905217005817708689941
82958846287294933254842394882655811767896697230383860684402997328870793925904767307522570843",
+ "3.069980123839465465438654874667794582122129313252923453609207863394287741688951149409619081664675417607593707424492619027034542940509941621641797587766749216952105433214319765827927496952680399360311833106647599071070966411835890159498570726262642811302698221156226638369562313853818053150275629326559287811178118507288863835537725355501810707785454478954438344052057581328532174741141666595169833655419886208566420544674986435548720297171703982140714719427912531185144876388113046700593075411827983574431817858431190892995690083188672848165533599463107780107006753124936339865774980990965870066108443783851885180857165489100951218831585029557126125899414086605423737949775705281852470738247416716128935065143424102013622220590074982279451773529580467581481417562029946736005608207138482875747993390700547521169091362517654693242076854907577107819715532278084070260355954942777768742739361767926741397588677758250771833385666255564269109714659111910493525889012129170908878395488600591009374784658178448251473
95110789153650851340493729565322385491250242078198566481445683133486898404370694024388072677",
+ "3.544907701811032054596334966682290365595098912244774256427615579705822569182064362749901313477089330832453647248565141332472305731448845205050187419205574136924075397306210245699850346057901652457864190758535925600349278030702959441033400380370468037170893948989825280627843551051812432810838665001812796815227466954950306867335979578731703672817590902330323477520118134786863582665619709692496369804109309704391226503123294935030085477522112215992254214420120744088967344730593227416188646997663336848427691419218240840855571556137389533140010436611370250826793273889308363021433387766643885858714124537730448841084299896099841512972797749677011861280436428058571622466129957890407242298157924574778806491956397026269742533025012586520089312764219350053624993861190840923121523904434783050140415585516198108665801324446135228939322496377486139957670410122928887708370615947148514358371271919499919904527698484407778207932812894587945682690086004281128466866078523512268352672640034075308326952641338553083625
67152498065380901697064026838487197946174238759896587746022252512331763776957195575192752273",
+ "3.963327297606011013345028765120183031522359756396194792707258062196738718026571657228774187859634031232740564793295353622886557682356474875994764655375173499834599593969421251164027308747117396624524187285446623336520339913820978720176430215465338939984447826534933023141484862543765571546604297001338948375134812486194450210332949879950720896851968907513037054488703140516319719121374324992179435135051074593285790342344719690343804442794831757569043401689356941466469697584086129159126939515041437262763257270890949574283761287774907470114836530950383264987999102974703524986389225489515342852629121662334901292322975881271541229899325825495432074303817839673452212517177881807067061976080637338877262055096962949181289042827302988866084909313397466247695148371950421828093909848865384698787904327567607409678520069816273427183738680899308998344707630738790971751243408987918188508349518941876068427592513868658159977131885721960244821519078912587138691242470054107864903322942684464557829119149427525682778
24622418634516620092362780994044583559067632108995042187023154200764184950878131638370936876",
+ "4.341607527349605956178087763744774607232653368707275561857273966622209231717774371500697689408693082578678154410354619676514722820811726152792565044436622266065806278851520420429033357922970589162528420519250892908368317154540342635058136807691252915152669586926525304075280115583067621639051432078115986884318711700889625182922866152997380961904447385332031619054920438510168200539620910863434706805141563306565541082086798890014854830335454153018177024733780435083125592021701157281828979903376996237619861714166150211581797621237660122690215345636609799728649066534417253162418813747169004805982766408403946997189846396498970582746671501529485161428010742600381085904013324487303611881293586527039274468597106210674579906183780177038917307243966662998197900723976889726864594305030268568617360692180654205283471068669725809150297536212553045875619857173076299325404106392103024828828478737270158016349017558325198405440967589772942310470355567549928970118887532179530801975376104487266527469921216850682574
40261763964980703424121083058605934982281210054435774069392790646709404966217005552197344493",
+ "4.689472099834751407222488495617830028464158132082410698163398375845325679974459832050283551897655926484987265575878696846038964333944567355126922924158796100337943425016307329349962099787407469851645780198972117863002447087119160891992600583110842658312939022817912958461697028397309093512503747039863645081655402353335052810673842392915943235398168144238655825165770000949438559228129412688415974465720008486457025600884940725079480458043649641534676307345096637210260507628873164663314414495950849718626684932559332656112256296775957757979662724468900475313135440591536873620173016545371152831605752982568571117700848026227595075127484138684946782930247375765776345590129370024055646932375647826614785005754174570488647701027663871389568022229489874520860485470987547866487930236229419625691860409440092814879540820493358264132704696850032009628987349003720451819569835585032562652113915937212938414193806530064154077061451317005721941675550076456319276168011577932447904670831521031732409438237691376065446
44820547634530641496507929783339735192083140914072272339899107017006649210880028740845785609",
+ "5.013256549262001004831530569622090506013973481219876633259847152684587309215683949893191676756114532232019945330407759289732647236253472361915711311932295863826870960916247462274655608626039877605294300468931009796851604658827725559337367226067351647688362312156980191200082750300550583302922451687723729841398121853328182376031479394504755405077496495697266977285195013179026191477526854503853760804057143718499472616199569050771001999282038596517291176274339269349603057949046609471669495512397921783778629954372970969609387304320059590478392036476183315808225959505954257697603335094011172603936482843284676727235038426112302719683419656740726846871161953748489750523560218446485697678390734503079491656512606730237256175804071038601762912080529755428313000967534465501882736128494349632703689426147663363839073976874466803312110011101260596467717304991222517932687246220788777349688039404308496893853468651457522329044867602313254063270635260360624536512353377835521910047779208489359810434011635417379883
65917692574589866509684789765311623535793394460767721368805994657741587851809534615045141685",
+ "5.317361552716548081894502450023435548392648368367161384641423369558733853773096544124851970215633996248680470872847711998708458597173267807575281128808361205386113095959315368549775519086852478686796286137803888400523917046054439161550100570555702055756340923484737920941765326577718649216257997502719195222841200432425460301003969368097555509226386353495485216280177202180295373998429564538744554706163964556586839754684942402545128216283168323988381321630181116133451017095889841124282970496495005272641537128827361261283357334206084299710015654917055376240189910833962544532150081649965828788071186806595673261626449844149762269459196624515517791920654642087857433699194936835610863447236886862168209737934595539404613799537518879780133969146329025080437490791786261384682285856652174575210623378274297162998701986669202843408983744566229209936505615184393331562555923920722771537556907879249879856791547726611667311899219341881918524035129006421692700299117785268402529008960051112962490428962007829625438
50728747098071352545596040257730796919261358139844881619033378768497645665435793362789128409",
+ "5.604991216397928699311282433868800893854323775210783264958353393652283377651887974336384337524585373941714670574456299045554207553983151756664494667774545161861272764896662131197837835038292508277975950514378704409389312806803589593017154364198333647616651125428605616230966582255385572870009973056613526322931048277060370231359977958993967232582837086592842205343040007283117174133454728537928968227244991228669471217370009441025094907712691977835841703499351278874986471195624116959008838471245076137814328042298940584446762905340367384743425303609276321018361801459458139516432508856878761440982621913524318181369691375338635878731397251025936067547977237736105936368836652092717596396314653816189530218129820670028497964332409893643531923629742161551142263224303406717193124922233694876310480576657578611950969256955511078476219635444011155551999175778020087177514232372890366734754311863635435563808728039284827173871963074804746849699430124991287602451134963126098545171903117047972898305606516785790597
56085781560282375298034806741180400732788584921019507521738918616603376508365622727087150932",
+ "5.878564381674128235054420877897070971998434921038674375173142107157324558178168552466877801764926123492995037488364745260214676114614935862179139254958514058162966827069607913839133403757396281118982706148132667552000835647994077667880274855323323520240272246981990608159381971728656709564022893046586243897489455366878714885657876012888638998115441465661791250543613454912996663331442965484635801525913202036474853834026485653965660358909538725305439873007008779166615209625954106666274458730037117877224528598565692604944723751289365337901547150397344470843545157877380623504326188974390096843208503955952138759852480819611238851794206681602224351043487381727937873967374812650165803869869931011606738216500683771823507302550057547576046835105243578968618797066177613179082606633426738482985300505831919859196753908775329810222381296016270162916323309267798096312930705603758044444559585964075949558584750818511919962452688228707763616578874670045313322633956112911200892294810687892296950181877236860243136
40325575962035428327239557079268995825494033666401736558372076816062703768818475224366442780",
+ "6.139960247678930930877309749335589164244258626505846907218415726788575483377902298819238163329350835215187414848985238054069085881019883243283595175533498433904210866428639531655854993905360798720623666213295198142141932823671780318997141452525285622605396442312453276739124627707636106300551258653118575622356237014577727671075450711003621415570908957908876688104115162657064349482283333190339667310839772417132841089349972871097440594343407964281429438855825062370289752776226093401186150823655967148863635716862381785991380166377345696331067198926215560214013506249872679731549961981931740132216887567703770361714330978201902437663170059114252251798828173210847475899551410563704941476494833432257870130286848204027244441180149964558903547059160935162962835124059893472011216414276965751495986781401095042338182725035309386484153709815154215639431064556168140520711909885555537485478723535853482795177355516501543666771332511128538219429318223820987051778024258341817756790977201182018749569316356896502947
90221578307301702680987459130644770982500484156397132962891366266973796808741388048776145354",
+ "6.390673242833442826125934560668369774418699153629535085657295253679233427520580367927179880195602888137069684567793231166093493602258133969017021106197960780573345520195147979466696520986998606343635400913092649341808081453408980434179965937927922708909345397841622527432146275538251602966889120490579957574597331337784283815288321473740421432010834227233914190174234763300775496139696689439605521833467707889928563487552015849581847585689434976854127764646374528510231329482221371765008775870161694995946163642391215708372766049488067855953825452491900236830142141866981904282198406822362807845586466344665076582332813482152015320774974225634990586766311313228412800868263708414608987150111375120386858643920795269125535231770192724407555107042799468726164555553135906562578403914044338479246734822995056896897698223478939688640461863586741054296439120210906056109063096277007934151946284123507835906914733244675816372535792902468407592622807957863946668292770986363837395865741945094056819923530990956562886
66217128758044223382834658781601679058686559406948665993762673723079305381020139309264407402",
+ "6.631915043956542220934632255170950442571673584928835355201760253423957742117126574682008309421211096443639413401076154851280850494158554164683326234986135425364950983859950844423390626085839786386049181433479130567606269477588037212559412899395447829806241059477262873942460159345306366624527627408910341206927208609891918726171168762709933791456920683445638000801615688452972790232685808826211392650560017094159263576011437674999846600522920501568520984657162799535038050001224833659813480494486691456740052374249027583311842926672857338318387363854793779688936472084735930306427218087345510341837420490174630133279840175002704153489030443575290068032308365767634514031418850421635578803158322384709938898193886899629978282614469216187882297883391581608246845718104292725561199899569144180829641648953258889552230562175050315353266945435639957716548603771410872986520993710428886229307003650917468837912442306497411084734102076600265234170937356637777135628474301844332989255577856028034699437465939774179105
71201562354064143775475359422531818578919533441219169564634992179085747739421396934533170253",
+ "6.864684246478267450140700251177179640248234515845667702987001996086867998105503341832713840361840247387130753571383043635007297011920091483309905143378221549176641698410193319851063734802425571198225801964653167342078218630819701764025418879499090796511808605501357784143308663297852855842376861244456648327835996340248544888702189432622466327549530776856142389171135476317972369098304399531690126728773032326258103700722968750778764220224805542613651128456243786488268270157985122645318431271578096642305431247215083427925826428012276495983610948573621994372299197201839952318086636154647775498088405644586299761630642587683996340977494191030193275580462043922190636533399015709698746428320226690186799969625487347974382613137379162794311441292927681306625841347569629169242647251257801374516984419933156315103662620431046038578133110151591044112076565871598926830079904781753173394074142537525475668114391039705323166154148499405188828740137363595013988235606970953175864411847080516083299993781774524558434
24936412317738990534790002839870054268627101977849744783551897006721190846394315014179836658",
+ "7.089815403622064109192669933364580731190197824489548512855231159411645138364128725499802626954178661664907294497130282664944611462897690410100374838411148273848150794612420491399700692115803304915728381517071851200698556061405918882066800760740936074341787897979650561255687102103624865621677330003625593630454933909900613734671959157463407345635181804660646955040236269573727165331239419384992739608218619408782453006246589870060170955044224431984508428840241488177934689461186454832377293995326673696855382838436481681711143112274779066280020873222740501653586547778616726042866775533287771717428249075460897682168599792199683025945595499354023722560872856117143244932259915780814484596315849149557612983912794052539485066050025173040178625528438700107249987722381681846243047808869566100280831171032396217331602648892270457878644992754972279915340820245857775416741231894297028716742543838999839809055396968815556415865625789175891365380172008562256933732157047024536705345280068150616653905282677106167251
34304996130761803394128053676974395892348477519793175492044505024663527553914391150385504545",
+ "7.308014443816219295764104141698252724572575722730510045119734398989258873982176141480818230162009492028343019013411237419987690120297150269615500747653543223251174087060193127958097001154320610014222323665588660901035694201727519713747832103505597228622607596261458206910433389674460653687297596981868823753611902327108255612146486031214198020782328063948859715089140823080005927252797840106707795375212095689973924153950105187354003208163960549905507374250866615544195183249713996665393228092635799151582395352506500344494337289505854030213129044692019068685727554985277682005661054369489870834464138965107639082860333071483679442949289948148511826372423697000479609055510155508917037780838203462441338734511842664471038366708473955010013674792708988757724038814345638772480627135596403728827660061675718996106602599967231723046695947551570145834990998992151815096734307236576364795819406529589384430192416632004006793857867603298834230155464823542188055803245519320495284933764255373201096967811353750774748
91741199783559527857010245972108769520093587637938249980386334004821761518122012885593787752",
+ "7.519884823893001507247295854433135759020960221829814949889770729026880963823525924839787515134171798348029917995611638934598970854380208542873566967898443795740306441374371193411983412939059816407941450703396514695277406988241588339006050839101027471532543468235470286800124125450825874954383677531585594762097182779992273564047219091757133107616244743545900465927792519768539287216290281755780641206085715577749208924299353576156502998923057894775936764411508904024404586923569914207504243268596882675667944931559456454414080956480089385717588054714274973712338939258931386546405002641016758905904724264927015090852557639168454079525129485111090270306742930622734625785340327669728546517586101754619237484768910095355884263706106557902644368120794633142469501451301698252824104192741524449055534139221495045758610965311700204968165016651890894701575957486833776899030869331183166024532059106462745340780202977186283493567301403469881094905952890540936804768530066753282865071668812734039715651017453126069825
48876538861884799764527184647967435303690091691151582053208991986612381777714301922567712528",
+ "7.725947218186652324004744785732121641138205804889637198145298446152571713913660838375983918412807378324751693931822725418866718625292014897623012173817275735069691076193189070337437135235849647485222354348603862403082595922266253086595655320719535549969211782948039949166205611705232989034083852876594143019104011936147164924811525486417268190124617941170278359129913367088408366507102814539546790598867970704534479401993796008798457646788512726152502569621139000003646474524107789726483757079431339269391950153812014264879544984629930560647448707153597300636752179520270285575421037009131136781489590577345106587715207919568798810167527811417745409743582649439599125435432318723487455953160097792511246738008692048927031576162258272956534936193719589576776525004828524082846716211359863942781882850884656202898466070591297850506074593575977888131709413947264085333489258053698157177098917107860251657014190782265625723289814859337485675401385626410275035083061970191931988048172701777955774822666949434622073
25431350513542160949582976461379550638607760760045294712529920901600994240565773585313185966",
+ "7.926654595212022026690057530240366063044719512792389585414516124393477436053143314457548375719268062465481129586590707245773115364712949751989529310750346999669199187938842502328054617494234793249048374570893246673040679827641957440352860430930677879968895653069866046282969725087531143093208594002677896750269624972388900420665899759901441793703937815026074108977406281032639438242748649984358870270102149186571580684689439380687608885589663515138086803378713882932939395168172258318253879030082874525526514541781899148567522575549814940229673061900766529975998205949407049972778450979030685705258243324669802584645951762543082459798651650990864148607635679346904425034355763614134123952161274677754524110193925898362578085654605977732169818626794932495390296743900843656187819697730769397575808655135214819357040139632546854367477361798617996689415261477581943502486817975836377016699037883752136855185027737316319954263771443920489643038157825174277382484940108215729806645885368929115658238298855051365556
49244837269033240184725561988089167118135264217990084374046308401528369901756263276741873753",
+ "8.122403937590499937750560857903449053740646939018845396714418298453385787729032594061441882432193980351692768405130083831622694205545178110599360120819755203443945835506251491401048907098589526753038972273390746010578180741185896985711551360791806797203827232352315384586330095340105185710577781338904940758384870546060923938062091458579164560723722405711698033554291605876497565060233169708606845051327069548859241453481341696327385931809362663929647657571456175887138080607984343369800458838602421492896523168912555072075320339098179670221560201350087891722238275134178670303665975303306455807687795898715998300152475162726847464578784441236155909735363031305002320727334807852984507429413760242221959550736529566482402439194311595766502786607795639886808615746142655000719028280988081120541307369353011711883776895188084215891135503245660364996849896248961957594858880116881060143391560947567921577346659086745387151496023428624150951161938029495606617224093435405010080204886261145184305405160303034107545
50714099923563850234789351977675338732716128448507828986158960243138593921163553099984790877",
+ "8.313545475846959679405663787122672752886245394673591862409502613884201090635304692983728145867923225433947236566783565618055576431760585399092588064095269521432562653168292885743671923001349113266625795406724828729913566220292610179933643374466685054386488682834612773992591037476604963901683442207870562666912849209450260701989581245997426541655676288533656409397465553094534909994585400741202768256842476851537407025826744673038781265647423706254979478195526427639899334680081339937526116035227502231447118295525950438532001846078065013420692975144829197828630019133535864689964788016834035413332002509997527314498037936075151509806634373411333813059112831610782493410372695105620179168947144175897920912160179121104141658923318272727265528759862952292050995628273080562383704551916319640628288367312173003235516838493084793666525122624258815561984115028515773539984262129611468868545990366028119708622357431124546983897276053252328720497789777836941919726001553854220712568053810158646892579139059463583862
36370406339271062529911829230871245337410607604318231151206871615890518289557823950960924210",
+ "8.500390051789696814056066940668571443398718744643215768318252259126537478731135635395762069217396034964667681910059631015096082165652315801664359768411837223280040916913955708378071066935696433257020211350742193863156871963971829773107248579593397056734106156556617380504980929076639213644821636934129903526996740109823613284631158458191531037366135155185385344442093963910445155270475343700661669764944840279054024627247782191013492427044193464726675500317651017497896035750744618092157312128877381262644157741774697004395657150446259792890268007013520929291274099161297945272110689563005318157480652004932983657344100993336621783568815458906918824018466753467959636111250595790968078420088242314216160800541194886763387392040016651751813214258455719679904524867748664553221974092004813850434511403157301880982171491738082922104391358283858444966946287030284780954659835400688672702203273836263673730837988762949467161762849555045659822968295447513351087744078230297188528004762125742580392098962279344010443
33736396538381519446030490401670705477490565602459130058989097840050168516571928831986962913",
+ "8.683215054699211912356175527489549214465306737414551123714547933244418463435548743001395378817386165157356308820709239353029445641623452305585130088873244532131612557703040840858066715845941178325056841038501785816736634309080685270116273615382505830305339173853050608150560231166135243278102864156231973768637423401779250365845732305994761923808894770664063238109840877020336401079241821726869413610283126613131082164173597780029709660670908306036354049467560870166251184043402314563657959806753992475239723428332300423163595242475320245380430691273219599457298133068834506324837627494338009611965532816807893994379692792997941165493343003058970322856021485200762171808026648974607223762587173054078548937194212421349159812367560354077834614487933325996395801447953779453729188610060537137234721384361308410566942137339451618300595072425106091751239714346152598650808212784206049657656957474540316032698035116650396810881935179545884620940711135099857940237775064359061603950752208974533054939842433701365148
80523527929961406848242166117211869964562420108871548138785581293418809932434011104394688986",
+ "8.862269254527580136490837416705725913987747280611935641069038949264556422955160906874753283692723327081134118121412853331180764328622113012625468548013935342310188493265525614249625865144754131144660476896339814000873195076757398602583500950926170092927234872474563201569608877629531082027096662504531992038068667387375767168339948946829259182043977255825808693800295336967158956664049274231240924510273274260978066257808237337575213693805280539980635536050301860222418361826483068540471617494158342121069228548045602102138928890343473832850026091528425627066983184723270907553583469416609714646785311344326122102710749740249603782431994374192529653201091070146429056165324894726018105745394811436947016229890992565674356332562531466300223281910548375134062484652977102307803809761086957625351038963790495271664503311115338072348306240943715349894176025307322219270926539867871285895928179798749799761319246211019445519832032236469864206725215010702821167165196308780670881681600085188270817381603346382709064
17881245163452254242660067096217994865435596899741469365055631280829409442392988937981880682",
+ "9.037776772709902697269494261728628351963870729706736042304465636989725631287927975777782106990074995004455742508987620449337787503517741225529956175648329321298944298502471533263233235967471855145138291146675996212428418958280946345991047523906606263163595973611608055069770607858646728929667972718057866128602444487254718338653430850966650026968891600303433322262146105215112001443753915795363973731569802514730814265350671766150861878899828512602441453483391147941144810766550038994388799334570787758129758375033149345471039802967644705258614386208965717852402488879077788235132543376503410069927289658344324439488387188495051160317042470059664351630134641726409876333154181802579804161265105362691268868623775984026090936380963423168791094419312560044151581003471816484345006069909253578931919478000326228200870683197346817961465743851343745005362600871143641203281743633075058111924462275738699759315387649943971866248714388768225522011305563067546972967347415693429779803099318976176972577300579458055700
21974106384510091603635687409774141632668637120038927426728226929784072977105651339473101367",
+ "9.209940371518396396315964624003383746366387939758770360827623590182863225066853448228857244994026252822781122273477857081103628821529824864925392763300247650856316299642959297483782490858041198080935499319942797213212899235507670478495712178787928433908094663468679915108686941561454159450826887979677863433534355521866591506613176066505432123356363436863315032156172743985596524223424999785509500966259658625699261634024959306646160891515111946422144158283737593555434629164339140101779226235483950723295453575293572678987070249566018544496600798389323340321020259374809019597324942972897610198325331351555655542571496467302853656494755088671378377698242259816271213849327115845557412214742250148386805195430272306040866661770224946838355320588741402744444252686089840208016824621415448627243980172101642563507274087552964079726230564722731323459146596834252210781067864828333306228218085303780224192766033274752315500156998766692807329143977335731480577667036387512726635186465801773028124353974535344754421
85332367460952554021481188695967156473750726234595699444337049400460695213112082073164218031",
+ "9.378944199669502814444976991235660056928316264164821396326796751690651359948919664100567103795311852969974531151757393692077928667889134710253845848317592200675886850032614658699924199574814939703291560397944235726004894174238321783985201166221685316625878045635825916923394056794618187025007494079727290163310804706670105621347684785831886470796336288477311650331540001898877118456258825376831948931440016972914051201769881450158960916087299283069352614690193274420521015257746329326628828991901699437253369865118665312224512593551915515959325448937800950626270881183073747240346033090742305663211505965137142235401696052455190150254968277369893565860494751531552691180258740048111293864751295653229570011508349140977295402055327742779136044458979749041720970941975095732975860472458839251383720818880185629759081640986716528265409393700064019257974698007440903639139671170065125304227831874425876828387613060128308154122902634011443883351100152912638552336023155864895809341663042063464818876475382752130892
89641095269061282993015859566679470384166281828144544679798214034013298421760057481691571217",
+ "9.544956100166412180533180508880275299527102025311531995757742107457921696867758671222863368930139807708831103935227624768183588760881295247105477255824007523503790066849678209569952847787473134452791118039340195546397151037221763780532279742336542014648268991783469603857013190127430230028342218252126783300628535939314229543827909592737833676812088290811257502965735839452737857276165282250352307303670434895732286464483658075463116864414244977474458180353669841138677817030256977739574902310253741079871599207960654235039622965900634705798725052638417332465481525919416513330139126146381338833351239203730709750042523052135462541819902842068021417404229013131999647867409119159951154274397946428259146053002838151757429595828780110118235662530346502827557308424975436251686015564629085676442859149416302292859000043495928747589909654091497676114558990997633192151071664061916219675646857109277648126304220885687113521072394822563154202759322433797321040224381193148246260374735174838293585675427905102993552
89069031782291584296420055747908391149240325877115257851162524812619999740512151814664737655",
+ "9.708129562778496270200130084320230901423916299707529533819072556774086776836082837779721336998522260573842212515320580961431072038376340585457893700046500214088135943467587955901276249363809094775211623467826666949279454942822297170536361448893705661482331041880611908411820876866524301686400660462287254651723588759081418463764743556376362500959734396214399806933267867999594959562575251004737676946854089344610846928999749930286869302192917824475137861523956926045003833724857385420656479094073182144403510682216564700651180400450184108001675012793475971495190221865638374199662812298751885305018149453420534803686943784602237356112895945936464728623871639566275094122785266707007664025047938268396777652810764273409013537681737481844776386242156477721781918728115433342589152654271319783943628107039760937688854286308499321023915624624246633550026009298713880022612152659692948284173068450171340198448762074365241535178102793292741653012039834285198529729843977907901477077794277600256393550019329666085976
49497333189984495365421369654196836993842047830874262598283161232047618963368717192374581237",
+ "9.868605385832569118207211278874753388605805720141138047647645671262807975025967796654068413246944194484534644751750380762684535617224775907811961934518668021508097594907126088880939112919542878431301752658671019644697554531439640842267556740393510039535634129481178847542890847985862648824263966614963819503831246249782176979855437518684456118327575265121481169018239917535879373864146161865277599158611825759839608675445114321641620555762245486171616062505007996486021738804071532619527241426380117413279472534376471969297575609580754205457875757577610805998306623214447817705618804478208330721405744697974295815587182451985023806765023272699255258737361365514480950908077296684716386140471725984188304163903919320455187859625676153476178058614303007644791489417425207033663172431408619958534885239216238775147539812205978599173978208469731077066611504112071447928588333624090215461091044853050076963443004628416550886410411391339386328030728114387513715599008027009047422894941886125872104153383990198321094
59618353269954649298194490921810882187710461971651611477483705188781040460993037832290727754",
+ "10.02651309852400200966306113924418101202794696243975326651969430536917461843136789978638335351222906446403989066081551857946529447250694472383142262386459172765374192183249492454931121725207975521058860093786201959370320931765545111867473445213470329537672462431396038240016550060110116660584490337544745968279624370665636475206295878900951081015499299139453395457039002635805238295505370900770752160811428743699894523239913810154200399856407719303458235254867853869920611589809321894333899102479584356755725990874594193921877460864011918095678407295236663161645191901190851539520667018802234520787296568656935345447007685222460543936683931348145369374232390749697950104712043689297139535678146900615898331302521346047451235160814207720352582416105951085662600193506893100376547225698869926540737885229532672767814795374893360662422002220252119293543460998244503586537449244157755469937607880861699378770693730291504465808973520462650812654127052072124907302470675567104382009555841697871962086802327083475976
73183538514917973301936957953062324707158678892153544273761198931548317570361906923009028337",
+ "10.18197218462431161582111952539264656661433477798150730479799112887284541193585504568744710602027065030918053385886269980245261667076504257731366582580744009030705784751291911342627145818309207269958155146538247893846735550403225588226401556901421382509816611444605984316983319298644410894284050699652362371507221056648116120492067416496267613099846001295802512703185774558531012929405484258390360668611212286904207161199234447058342337999617922712747426102259089707957510816150389815352486484583118850957998281456006637404831354956568062254629437720373149139240148681670626519484370817979204979676559962198528327427452943779073523911067935653730820083869318370772198045330252052454290162693059248683000591314659903675131106177681559770755829173928282004816397191716469969378434355154143978340736819395878383027968011872213139079626678699929893199092119643613931889903840406229026159770286937352754297639873594747005396032887210556466440167686477491621930386551342810426880117234827854719241054986401481271266
52745316007086053077591814555887669601195725983108276147651242913586147914229810924624624361",
+ "10.33509314046336836919474364727074447097086936154801826041239503703343495444430216792313795009216492188008635939267605287566610110781263218444926682914624783934765031255365912190705097352104289477618757928286733018875413985133370782266081384364265937904049899320580230397696303848006113948062799665251932411066304598814535040326642289673997455281852572985945814589870778013249259581071006948370961699686903679468330337467543525962626390456288254347910152037591102798956853753772549592673842424289921795900795386547884347033315150821182595534128873915336988502480316623660106699295297841947954890788202356165193098734942955407343499323605761824776850649071386323686796046758823839357115061618266351131539979127132658770504772739973287802642165801348955328143120266712901095685353165877569405031166011144289044765149669340128901489922290209850826312367393328301847731412361500863030250545994420208853041512285674097254867461146855326114288439706965537230548707109195242552389285417383564506965163020341379570251
79252274911492305284875580251537498242752152958407117066303014561567387290966125697410459079",
+ "10.48597839381918445054159359885558121699839103866695561873115378079716014894151844802943245342437509629350645874310655541323396557326014504666773467717664046835255869394670749497763768395161179002777074475194929650257730078135703508411942338909931837878516070155086825977682178675605017110877548013392523981861695633686098519740033871778030152560728757654382141671262807993217333913015214128152493683281015514469187844881815772234544875206479340575277107101873154073838422410348123044146182124267642897255144436976256583209348301195525523494546131463187273074405392141832753642825772708897325178188037431978350759728267716895599842116984503134480533741046835268423057535101931480495293614988112596239063439563828982769227736720998745593802744569045263826558678211846342790874244317655324148707006461325256354361928205603677796616649274289887334689319498064249942530524654073149016792526858563767763444768642270193442319769623489678173112355076142033884059552659513093775137830905502877227531287472617542070145
15315881341170594023794216162541770211605362973081229737656368414853828067103315720270750873",
+ "10.63472310543309616378900490004687109678529673673432276928284673911746770754619308824970394043126799249736094174569542399741691719434653561515056225761672241077222619191863073709955103817370495737359257227560777680104783409210887832310020114111140411151268184696947584188353065315543729843251599500543839044568240086485092060200793873619511101845277270699097043256035440436059074799685912907748910941232792911317367950936988480509025643256633664797676264326036223226690203419177968224856594099299001054528307425765472252256671466841216859942003130983411075248037982166792508906430016329993165757614237361319134652325289968829952453891839324903103558384130928417571486739838987367122172689447377372433641947586919107880922759907503775956026793829265805016087498158357252276936457171330434915042124675654859432599740397333840568681796748913245841987301123036878666312511184784144554307511381575849975971358309545322333462379843868376383704807025801284338540059823557053680505801792010222592498085792401565925087
70145749419614270509119208051546159383852271627968976323806675753699529133087158672557825682",
+ "10.78141587097086009734708600256975401348331310691320020218751352004804371227851226111134816775227078780782704400521473560927276955279203021711831924786552748694726683453935103987223235551795292077929585532087766243443408930286838388085449041895595306086182883302295616607854944640767788230902752626676494358183660466744700973514306350818780431222180790201620331842808081284885926261750690163105640448433632823843516031782239844290851513467744458917062736367846223628664835579728190128927870577611087366810507573698771237991646332739041396292586462406245062001840330244835312042568549418412140156118884140805812306101669787911139055193238934878040246470950976763119793681484518126869088303530370704057823157270895417643395840936379584221387963751845754415954321339250901819490435360721787530494868722047593340590202589706993571543787512158361448363524300316590449401880234669793857062347663548718733849904110261200829712813739437999585242098062002356424595628707102825076539521175258041973090401937466364076249
35115304309270078857483676519373602411048897743124249850703751765985347181558029527375643215",
+ "10.92613933813824941839494851877453551423926430012932000378043993368985032792462220621686137310632779544638298654109738705771920803664720629640405094400332787436158234128108080789088988078706131999979740984056439993836902869915459646501969358140170299507225643915590182851066647943385027447860471048311036876024942599618163983429350328700654747639134367544955697679786278080036154575736857325881532392171660142990988585546291910139133705176540238412285863512412028772233672604948555583850580380463398980045101838551575272832896794101253785882294994169484316103456484898846580619100434750794181893074891372855455411337943418389585562456440328322309556323828519125314360835657666045942680288834053693331028618111109384750594304285763023041340181335524239948551682379650507696624812120599099221250021303175118191262363771873060853642037056249836405913224882956074246191601667464612049815974595749705199804266204143931197988255418279040611061473351147901180124572073184061838184223469130781256426460088779870079186
24713747892824771389677121777686596898164466209882065864762628266271132718624356253452793196",
+ "11.06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602611864735807868417839407991190718628442039357569977371968270131812518244771818655226966561256042843867368054126790999954427565212628829680859010057375985048181200629605336234528792323216018627284394365650824130654190684379749960413601595348763566769123659605593998962030711530297996631108961214516178448122427054402440590510703322174840665652359389481404003119992083702582636225806147331352181752217226053242205348944289607908554447601636003909390875440873630525206574803310917889220296487149768206173372396219089215832164422633321605087802615895235001294899884355106129583272445231346892946732366301525649188276362878449019281327682233343557842959286913827833746690030855099062263462780708598864445827721152121994221659868869621390843372822645956886585209282967141209097319737128594354138180424516941885220268707516298720954774335931073334153739436672212660571083674647324844614485416835120887574
59353259534085109191456436195932802460979824143610395941363551604400219577421540555259221554",
+ "11.20998243279585739862256486773760178770864755042156652991670678730456675530377594867276867504917074788342934114891259809110841510796630351332898933554909032372254552979332426239567567007658501655595190102875740881877862561360717918603430872839666729523330225085721123246193316451077114574001994611322705264586209655412074046271995591798793446516567417318568441068608001456623434826690945707585793645448998245733894243474001888205018981542538395567168340699870255774997294239124823391801767694249015227562865608459788116889352581068073476948685060721855264203672360291891627903286501771375752288196524382704863636273938275067727175746279450205187213509595447547221187273767330418543519279262930763237906043625964134005699592866481978728706384725948432310228452644860681343438624984446738975262096115331515722390193851391102215695243927088802231110399835155604017435502846474578073346950862372727087112761745607856965434774392614960949369939886024998257520490226992625219709034380623409594579661121303357158119
51217156312056475059606961348236080146557716984203901504347783723320675301673124545417430186",
+ "11.34924221246429839261028565829850152853950674668329270433803565485623908048536082846020507430428160317930476009780625522846314732716983010804209306780029352708602137555333764109504348316831292667084178627910568495853187150913165112247728045793069526923912034280227069115529058972150220112559230569209685983574459516867671580071758585032838411375478477021690688817570414162566820268751196658613868949576091063552613961351632822252598859764980397460876491868146559058232229257591718038848063493509688821966347731649610787912295324762088241562023905818633074969261970953347956140101356457217929456894108139471438942618283093796741829147884931734150913620632806868019068116591628515728481180957213133283154351669896098018101010708138645635708010672822821922535529316151238334935840408576965921875343012645841465539573107187122552925734535762052613518617009154806395833012671672700181389412908200622632179011645114557351073388708810794168829362214447522020243211441788372756574267373804449004047990107867165221642
41960362132578101367581203971478969200704781556667157536062389987737624943537002727294733986",
+ "11.48681380761311530780935516721521108237928967204382062085898154283588668313912715029161517404328334989237333530348826535742614021148856230635174662869831356093113474286160584876417645800403911323991237353541889249957260843166726455646445224041010101451134968269056615338515648693110262845678078357707930842673765829650789177247607513680989857092204932189890811954100841072537027713465323260604795337782550094563520926538581863172270400325452742978367627467481794122329294203023258558775949182564390491632584912520264020048890174624703141447126375593383945739248970458143796762994034387003403965587093698183771999228118366505820801654649556512233036532649597529872389080363888009786036985430787457469287273716821099747319154826663024578113175133679748214926591537563973687905556466023539585132069470863985202376138982046155978143710587632758246483689257621308376839090325785241761989441314121302788476937689411071581393541134484263751178379531211823843054270530925520662604588227413646211339768017598530588644
67919702658753108948232787444346415009083332605651415456404729714544798893173653905698148137",
+ "11.62275716447526530072773481095086913636625085077567567510367011670611204536816523588296120134495121867206923318376322986649531915565948849037479237110911597980379518232112010525401162429038333764527792270889496343203354476502811011659245120302566136505086778202414054377047627622067820479597676751416614276454114895413200526425621581152703835362843272564915500000819969909462924651470389581405124830134368936744396521562205542661539221011051810222278846394883253100713759134590065142975374409775632206621481489703279608191574537572051320713903369361622286860728981939578685541430742683661764862047054566957419212440626419779694468000064743266918256632890235266305498720308677384413789972705229289947563992674462978046736692223847287687037892767053612325085204587173825927031501933948255441563208633467043917897393960855194179641875849475285089617927990451378271909503834930420071761162328412608645774329616378442729292183613248916839255067022453968336721385348218606276030366340224159637734016382691248002516
84954328516467828750283529560003793822429188759689400075614871516086231035596052689743737025",
+ "11.75712876334825647010884175579414194399686984207734875034628421431464911635633710493375560352985224698599007497672949052042935222922987172435827850991702811632593365413921582767826680751479256223796541229626533510400167129598815533576054971064664704048054449396398121631876394345731341912804578609317248779497891073375742977131575202577727799623088293132358250108722690982599332666288593096927160305182640407294970766805297130793132071781907745061087974601401755833323041925190821333254891746007423575444905719713138520988944750257873067580309430079468894168709031575476124700865237794878019368641700791190427751970496163922247770358841336320444870208697476345587574793474962530033160773973986202321347643300136754364701460510011509515209367021048715793723759413235522635816521326685347696597060101166383971839350781755065962044476259203254032583264661853559619262586141120751608888911917192815189911716950163702383992490537645741552723315774934009062664526791222582240178458962137578459390036375447372048627
28065115192407085665447911415853799165098806733280347311674415363212540753763695044873288556",
+ "11.88998189281803304003508629536054909456707926918858437812177418659021615407971497168632256357890209369822169437988606086865967304706942462798429396612552049950379878190826375349208192624135218987357256185633987000956101974146293616052929064639601681995334347960479906942445458763129671463981289100401684512540443745858335063099884963985216269055590672253911116346610942154895915736412297497653830540515322377985737102703415907103141332838449527270713020506807082439940909275225838747738081854512431178828977181267284872285128386332472241034450959285114979496399730892411057495916767646854602855788736498700470387696892764381462368969797747648629622291145351902035663755153364542120118592824191201663178616529088884754386712848190896659825472794019239874308544511585126548428172954659615409636371298270282222903556020944882028155121604269792699503412289221637291525373022696375456552504855682562820528277754160597447993139565716588073446455723673776141607372741016232359470996882805339367348735744828257704833
47386725590354986027708834298213375067720289632698512656106946260229255485263439491511281063",
+ "12.02136689670232504751214837052312986850086383133636555409496823896132648668961329063060986421870266185322132152117014482673911883680476678535715726947755363567532641744039727552527322438318270441761392090249243942505813686184620462615579560414951536111391678262436724436480553837759433030416884906636713731361550535103605402678434230053323536530562628456895952249982090966271007807844181389916800788497034878941250050075452157823398703144290095581824498254905932493140520677596816586977896735786789492128098063515989644222538047943448539414907989509897582971192390959044923989555859998758576161098800420187122939861589894795065893382389093394828798066985248582431470054436552934600701653203411129264460820981085384656246114354234629894437243329488955643743226138626448401005798443198086068401359280700261534353024582305522871948624041155447295535558601357678662966453599540130758565678985594411240111771025567763360263018582152176130580112311185633147393691534084860779984754703047732056101528307593741292026
40779824926230644346880253659061205608241669503029250691241581669322113673069664040300361434",
+ "12.15133139695894732154602571455686512014975188778979224280502625132883472421219733897546268099251349556454285614323778007070828676158867118293982305270460721491521177578331411854344777658699021838502054832767678514426682758704167929123699880916983365203434688577467510718836371737542712095854833033146971364426371456097337955608740163928379674241296246697966980754962025288588803836357748835011858832688042186399484899915971616203645266390369823525056123195444413597782408765043581053437890150818801719938013311347604426584322335748123081958045015953676085106919459572057863977735411977989459753312172008667686147987683693523122933731008701450405688596707241603728937835289805703769457372421228613519568263478618016377660430006262058239282802446398679840996185866407137398875771748254756139635180504107294435519088191142656896775774781456832809345907154553781387422606941480055603744307408142392049907269109628401489039546573416788919784423150982438955222001581537906671233629326466396721463913000603340219603
29885543548050873714607049607780426796959929658969497274971918388832149882433776112378434610",
+ "12.27992049535786186175461949867117832848851725301169381443683145357715096675580459763847632665870167043037482969797047610813817176203976648656719035106699686780842173285727906331170998781072159744124733242659039628428386564734356063799428290505057124521079288462490655347824925541527221260110251730623715124471247402915545534215090142200724283114181791581775337620823032531412869896456666638067933462167954483426568217869994574219488118868681592856285887771165012474057950555245218680237230164731193429772727143372476357198276033275469139266213439785243112042802701249974535946309992396386348026443377513540754072342866195640380487532634011822850450359765634642169495179910282112740988295298966686451574026057369640805448888236029992911780709411832187032592567024811978694402243282855393150299197356280219008467636545007061877296830741963030843127886212911233628104142381977111107497095744707170696559035471103300308733354266502225707643885863644764197410355604851668363551358195440236403749913863271379300589
58044315661460340536197491826128954196500096831279426592578273253394759361748277609755229071",
+ "12.40717695633861219108717238338801627958284619285670989749665452897037899213722526962465459716981265791358776536997799466365307006007095821767565596721950947923426389057173585994947621120265578360252466765487573960122247310746035804361690133129663813009812882146438848219745242868134351483793532750634478885329613434232607403567592852556096285486156815815613217132041347175402253932966898392373729431438258396536929276093153227260529917132739275597288975047042260431138570655707629595666026449182167896949691996726384294299450044648086336599003652813979587789377645861257927057501685718325360050549943588205657094379504963634944529540479212386954151448152749820500067863145485261642534804355273601172582272184738959194409886558754405282031259467476772518768747851416794323092533366552174067549145454930669338033030463556147330128762873732120148985184643543025110697929715581501980025429945171824971966584694469542722372776484513105780988941530101498394963403127483229293923435424011926357914433424468493579268
98503374322883315593972409393470519281160983565963805711107788379316117321935018451317463295",
+ "12.53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332601939822433161809063368090478927827983073965956717740229061865568663902156509969401323575117232752449212901164706931389834341806516837911922090578039245047800020687575137645825730612921930932460349530463332045594007869848626188851269374123924316744321298753294756547869381713625963440201014285929624868154049892262692750499820509649129322794068584817337400764487261652367917373878099480445944657488593242742402346826080014897619598009119045828952056489876488564424400833773502793150984120710821169181808759606528075679920854914185181711717790488437122437630890054611621424419597683625769872914128151682559314043951017759650440728020132438857078250241883616375470684032123587408175922356536915840959768494218616700828027502775315149116929326247805629483171811555197194337422009851077124223463367162864380582261216900578313515817658815090156134128088344458880477511944802122339952608502908854344970
91479423143647466627421197441327905883948348615191930342201498664435396962952383653761285421",
+ "12.65785231913690226877484516479208842113516180896551794552312847313682436388319300926920973445704370799014794576873577185092265908793927751158422659755970497243415630614186970312686078302636307495751082332221830777685815128694830563522119268087060102515985333679512223525470933857051433513016736980037988474708990376228158468935059984361548094312087706047838515949296761856523977786056317197470059469309575130956969333479838593163396440808643562700661907570234335987801918127258488261613422081701820632089649582960273511358381213779639246500536952390004819435883716431941302571205329381351640210729887804968678551358059027669252690963588744330097949644045051240937443450969049764754263766152941761384959279794554776963843197505134073389039974935635373516401901220182221963348251069361720495885844622924861291176840216539555484430289960987871363281226459599684778388038953414647362208786019180036309194115840463480147381627337417112440463087335217568237398273002383916118185521743696970432801352303780380366697
64857912765848567411839492389221128518450325850349211951118365174902595493189143091128924607",
+ "12.78134648566688565225186912133673954883739830725907017131459050735846685504116073585435976039120577627413936913558646233218698720451626793803404221239592156114669104039029595893339304197399721268727080182618529868361616290681796086835993187585584541781869079568324505486429255107650320593377824098115991514919466267556856763057664294748084286402166845446782838034846952660155099227939337887921104366693541577985712697510403169916369517137886995370825552929274905702046265896444274353001755174032338999189232728478243141674553209897613571190765090498380047366028428373396380856439681364472561569117293268933015316466562696430403064154994845126998117353262262645682560173652741682921797430022275024077371728784159053825107046354038544881511021408559893745232911110627181312515680782808867695849346964599011379379539644695787937728092372717348210859287824042181211221812619255401586830389256824701567181382946648935163274507158580493681518524561591572789333658554197272767479173148389018811363984706198191312577
33243425751608844676566931756320335811737311881389733198752534744615861076204027861852881480",
+ "12.90365880827058452483715436320037516974569084077416924107843688487860887250890657253758738045200876669969427463457268348406399757555063627172465347064422211662986212075042736228346585054865887602260603034028753483187605927598864070553503014435436321024225100978630336843207088475048853970256768888056086085756325883529082083821772605109767707082475241113029771842219887303738314876894780225187954162437433687918707794028759904325763022067415593548740084337043018964185033220372429794136826932509471912953938811653076054080582068745125200082889985168435895305558182799936800558754662218058423396654347591587137708169620511479312081168088245952955143750458999704719817040780705970354750208989651458512099544274601571522686634080820851250943261398008156559800816967545097829989282402702342485248451037561933555288769372257712088027095291903733965854759745862413298218208378015694493668335202271394459104464360208100589393185943503452708167512382377261358386086895695205231224502444044549131089322112692478187898
16060744177821446724166244434311897023559474757455995497570838056986157112960941696803729504",
+ "13.02482258204881786853426329123432382169796010612182668557182189986662769515332311450209306822607924773603446323106385902954416846243517845837769513330986679819741883655456126128710007376891176748758526155775267872510495146362102790517441042307375874545800876077957591222584034674920286491715429623434796065295613510266887554876859845899214288571334215599609485716476131553050460161886273259030412041542468991969662324626039667004456449100636245905453107420134130524937677606510347184548693971013098871285958514249845063474539286371298036807064603690982939918594719960325175948725644124150701441794829922521184099156953918949691174824001450458845548428403222780114325771203997346191083564388075958111782340579131863202373971855134053111675192173189998899459370217193066918059378291509080570585208207654196261585041320600917742745089260863765913762685957151922889797621231917630907448648543621181047404904705267497559521632290276931882693141106670264978691035666259653859240592612831346179958240976365055204772
32078529189494211027236324917581780494684363016330732220817837194012821489865101665659203348",
+ "13.14486956753236970343541365393134251806774069902533962314135535321582847292017724910110007106776502190549036937386562491971323536178170431398993555737406682040329095674342960387463041500627413092189779521417614724660656444541650574156934636421941360732306079472032629194794407298790713932870173683575382477910273727800445291659586943457411496099164053791439967385029067263953105490574991358767719456477262533892928496614594330715708268337030645975283724766693252383798072569957075094969368732803774266809684905442041448506524186671028588727808876772633384143362185542995038482273596033714830527140373820605244469895851258681945396672886993425905299333417168436938704562285429190943338194967448524420998427032903790500584837465819993033824224707030688694845132875073630163629251639183962452284767697799320017789781783331515974459573451630095228713159765916290053554424326265421538374817171904766862924549013736145410097404057397563453229597078184265676645291414007869566740791083403897839569160399812856131304
22619726646882192158229279130067633381058950064006933912115038270746168224845260024281286513",
+ "13.26383008791308444186926451034190088514334716985767071040352050684791548423425314936401661884242219288727882680215230970256170098831710832936665246997227085072990196771990168884678125217167957277209836286695826113521253895517607442511882579879089565961248211895452574788492031869061273324905525481782068241385441721978383745234233752541986758291384136689127600160323137690594558046537161765242278530112003418831852715202287534999969320104584100313704196931432559907007610000244966731962696098897338291348010474849805516662368585334571467663677472770958755937787294416947186061285443617469102068367484098034926026655968035000540830697806088715058013606461673153526902806283770084327115760631664476941987779638777379925995656522893843237576459576678316321649369143620858545112239979913828836165928329790651777910446112435010063070653389087127991543309720754282174597304198742085777245861400730183493767582488461299482216946820415320053046834187471327555427125694860368866597851115571205606939887493187954835821
14240312470812828755095071884506363715783906688243833912926998435817149547884279386906634051",
+ "13.38173311849471217783876941566836313669346091785358692247346468395308588308827788454313201655575270828671673857410072412339723496683413357993031205589498749147316325966722925364868402523693430755780626613948467292908861208063352309314706761255848369581882753627506319593551484137359092086596531257854895452998806505715719897898167362764725488993313604136868153402300723177611396171086932015966770533714117182414227787145721407312644583535361244253971430673039952406355677104149187255173997115831250309338859005930416245494939092702790618010442668135415114760593600709531324147158970997930641876189049134461796954448236275729757186164355304122318976268212115916301204568548884712965255453558475368526187559378467056398276457807541106810697391627030860295592156441212947098891205003053216719818592205284188105610916424597380433278363290074023904185431400430488554421971072229520901708357324585314447977525687657568854812802985319504248291115117362367030609785133937195872673345162125097182475351601032062249471
96863863264871876290808068433102976710291998849009357718081807090905471789659277124839575212",
+ "13.49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174297398771305025250783532430038321980650780572061258675589431807213585169525934929261000167914426347007424971894853755903478955153674190248106782011276139620636507795882584271293035478532473175580070278864979183505217356484769621601133034831695071383225633005792357284236385529593207735857968960517276605196352157995333895943494170414646790400784380994798902973755005117819911133460832064939782772237810609006092032382863064678711413969912307680886626321242702574644805860883168506903830233453093924927329897058250169195260225633629540822661819044140711396310589500127135405270491024779388790519007695241209195793120189383116035582530922720748707660791377165552549839432005832487197851735137729170806267262357399957757317012638690105446456777272920233948508868267456914638219835183858025314484505119940140786877628479485234412797370797504210039336914992553959543932829542866281190502794427232647464
13216878905804503870657461514746916596067609999603045774298320322180133249625717533859092149",
+ "13.61447636017624443799265216512401084934894299480626753928997490116563679818224551788538346688535913182271001717774782304788622939104350610590344821026176944993536236109296080832522197288600718147774962375549628257898604366647130073808858232576207050555710165378590833233321552835737269355382324580588263158990297043941026784915214650941783458322922965686936377927473939153015305837439934440258968380651188973430433284529166312360178144495429281174226269020258597942203297305066291244338155263216177183414159314156838378308437700744904811763484223621628618126613468498739188142247053840243556914248643677483191716814138966596355166784418526084408341441627612489585679824790013815859060638812043516287515996652092920942814465228095391918411054208919508999122084721229842947316620741951628133923067070052831513296326226227232866458155274911170054041468167410852034663350758021657443475678929953231235298154544142427811883285673656535439130862632857947364855468771911378570666647126917460050421437226352234007660
12268118857311779477233465292274708583508374133748593182509627918787117455241091542819813359",
+ "13.72936849295653490028140050235435928049646903169133540597400399217373599621100668366542768072368049477426150714276608727001459402384018296661981028675644309835328339682038663970212746960485114239645160392930633468415643726163940352805083775899818159302361721100271556828661732659570571168475372248891329665567199268049708977740437886524493265509906155371228477834227095263594473819660879906338025345754606465251620740144593750155752844044961108522730225691248757297653654031597024529063686254315619328461086249443016685585165285602455299196722189714724398874459839440367990463617327230929555099617681128917259952326128517536799268195498838206038655116092408784438127306679803141939749285664045338037359993925097469594876522627475832558862288258585536261325168269513925833848529450251560274903396883986631263020732524086209207715626622030318208822415313174319785366015980956350634678814828507505095133622878207941064633230829699881037765748027472719002797647121394190635172882369416103216659998756354904911686
84987282463547798106958000567974010853725420395569948956710379401344238169278863002835967332",
+ "13.84330711459430808022843826239427256434596343163702958324024908115846905218379149168403953776024323043863463215160224677008170630425861920894718112155594910964306037654901053424794647340280316850140179885970088660995634347475091516563599074034580222277088552889444951928558668341649234045803177511148102334409748137400884854523559045512188285811835118283928193228004231436112516529652682545875510567850589619620303079522508579293840764178527086889107294803343857102613222956273806465875264005940880170121047936689238597044814655127252311433130468400315328485177532281025692458608236517664214224374237425189319256792403381803984660426558841996282679982903717155029667432596773859979953511512443869782774838236634207574918440346079042660684698188304960936189765536209496962217985053391067202453671688774053766452690532746179090801722730968092753024525711984003471180065500230138020323862964952371164325039478611185745073480193156876860502926332174764055534086326950737443883418212177818541908381687278591240177
86167368413748894627539001773837225674001211236781270826204317868935713403376698315709386501",
+ "13.95631557835258971630282987340194510919845371202282580094504721882673184380671350632023685341354308850839462985493063307564779895561783686656224367541800934763248809379595065478545380833700194162565757769483167079178423109038946198575913935482279116571014684493116082596239646846650161193770466470480495813861010969366704130632222591623392021912736282633725638758150419573095472006586231661273719542842175639211322388884632558497329427876301898062856927370784546312226164597824671553778064211074026568002515720530709984110997600601795473162169024780185639904761974104843173483572733317722588914072205973207565864449598202034364427646666498966826100156853057871231959404523504619735072119332528694151223558605645228729638308418293149001685678097012293128075708483730797960185887033271167778371362724911505692174869251145943080369456212457918480469863494929329295713286897980940814423934177152108133491855723332776193441609655945584350114305068536710062765226119259915007896854362883504323386778405991882163065
52667639876278614865474090999682755277088033035543967117665417559338997296158961230538684255",
+ "14.06841629950425422166746548685349008539247439624723209449019512753597703992337949615085065569296777945496179672763609053811689300183370206538076877247638830101383027504892198804988629936222240955493734059691635358900734126135748267597780174933252797493881706845373887538509108519192728053751124111959093524496620706000515843202152717874782970619450443271596747549731000284831567768438823806524792339716002545937107680265482217523844137413094892460402892203528991163078152288661949398994324348785254915588005479767799796833676889032787327393898817340670142593940632177461062086051904963611345849481725894770571335310254407868278522538245241605484034879074212729732903677038811007216694079712694347984435501726252371146594310308299161416870406668846962356258145641296264359946379070868825887707558122832027844463862246148007479239811409055009602888696204701116135545870950675509768795634174781163881524258141959019246223118435395101716582502665022936895782850403473379734371401249456309519722831471307412819633
93446164290359192448952378935001920557624942274221681701969732105101994763264008622253735683",
+ "14.17963080724412821838533986672916146238039564897909702571046231882329027672825745099960525390835732332981458899426056532988922292579538082020074967682229654769630158922484098279940138423160660983145676303414370240139711212281183776413360152148187214868357579595930112251137420420724973124335466000725118726090986781980122746934391831492681469127036360932129391008047253914745433066247883876998547921643723881756490601249317974012034191008844886396901685768048297635586937892237290966475458799065334739371076567687296336342228622454955813256004174644548100330717309555723345208573355106657554343485649815092179536433719958439936605189119099870804744512174571223428648986451983156162896919263169829911522596782558810507897013210005034608035725105687740021449997544476336369248609561773913220056166234206479243466320529778454091575728998550994455983068164049171555083348246378859405743348508767799967961811079393763111283173125157835178273076034401712451386746431409404907341069056013630123330781056535421233450
26860999226152360678825610735394879178469695503958635098408901004932705510782878230077100909",
+ "14.28997979296459888804653702544392904634926869096463657847566510989666889816047103805218492612824208200807189934441849211400509460722957337778325520698318714971377098754849430050928445383296017218660282575175251274001120682296531073187866322140873218283541942867441892138842824768201785329290264109463365492503164115736323995449764363813049282555927573440821919365408184557750282445799561050658834799137991080213211138697839529041825282802420513794542186655614487275840306266156361788227069268141624991313693320231552528560878616477577038824204200841492423452662161492602419415672158806617243992933862626362742659425045630291118048882205942518210069067818497676335890287690114955173006798161566987609176820798906658460071549234273868491939202950601784719549013691860350290695809606758845697515212125313214263470357169932875696683494335725262313637072100756719371198938454032341798253052163641164720434303274476226734435624916075141861700869507327264135992366084539201825976207902036043414992526033234292758668
21091530657037950087409657380807571921060480257877831704466578263052537696771142883837667113",
+ "14.39948315520131277112820569373511910015040936817284919328338325939794349940034309714669982010179921128053290109798286886606509161697222078607235323315918124625129166689829660087288859752147003933667489221127815606694428052608507472792321509931536924431497375817716379516190522465923145373895895475969253588858513531378522408885885111439737593014328008063123280676883738375781110073550679073424135614151170981062295931141207954750945988909529364126564206695106250190846042377474846410364006100812718577510081089794319572563586353654987276519369764561118830654831486179864654577924664022738152172418171635013524058231114970543612438864826865779612237806740094857149212577688424056007405168166382738269909396170651595585469725453074572705008969489554824260269472811344104877166388016518766986086938761043978203866632276648887540284063054272337673017800663324839404678633871661587019533515183324001891787021530490212610242993434789825439052507894020033988744307293935614643675411938844022806653078509188185441928
56877565661864230591257923543269259287766045586392906627455350388206936516877511705006505488",
+ "14.50816004152546378219681077246141593798468152500159666327969863029466393590842843975621347949778733712256734880116874473005243726387773914912710440470130096728467651534622929680523619028151480162218065435555164168709835610464856974454685255900896905617361445156823501870914873275338803027366177435269176035554949216731304049092926205691077306482444403338427772801906947498870821918239180122554169393472286054995635753330822994538026064270720783619520925661541669047488565235314732043739116184833733045490766185657081799792103168208722998823487446689384142819300602025355194389256573544094075297564108260438685306874556752613722848695866004982147365174371028601306252637376484286445886684379744212838387931458106081779374485182868193239505093540819627981214068133860521833613873752371424298145803286437549147827201252199371458646004642445914975808671345455936527239236000555554379682227718396583255034882038602387754960188754092198206578678774895324293084200731272885194584705155858241622330025892426538278172
78322155993680288963941768325132608929167231803325441134141466079523533004874074960297398614",
+ "14.61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802682247483997538024059430053923100149530708644650234817412038625591619400230864122002844464733117732180207138840345503942749566420701119445724521519252291641382086677934892130737459519396373764750722380465421651122429297206242839604156465612789771943017828164616001185450559568021341559075042419137994784830790021037470800641632792109981101474850173323108839036649942799333078645618527159830316479070501300068898867457901170806042625808938403813737145510997055536401132210873897974166892827793021527816572066614296735888589857989629702365274484739400095921811102031101783407556167640692488267746902368532894207673341694791002002734958541797751544807762869127754496125427119280745765532012335143799221320519993446344609339189510314029166998199798430363019346861447315272959163881305917876886038483326400801358771573520659766846031092964708437611160649103864099056986752851074640219393562270750154949
78348239956711905571402049194421753904018717527587649996077266800964352303624402577118757550",
+ "14.72310745385279504766089185089134852101939289604380101561797162844778398996562964067286607735617914793003926405488443624233761228156855150546057506598758469347958982674462792948399989232052842692505115531904040673733657052294263423967470304731068633847633592353296311763503979628880215614814135166602929770149704098031723859298079146333722499321273029745884513068859519989245169501744940165087428867295768941041952038913106715648614000646525649054061598716233214374762868798722590835188362087233421773643712566506667939482950987504351245662098868420028801433168473241994296972852090035314737197419040144837580493103970907195337280972605414505002613170803463553824668323960468495876399394612397816582907281133300958411084227515233863139984481949815396728572898890902996946448124497135034510356711013635873519330417879357261647748928980310206200754940541917507482381753028426011564522432941243664762946884916664890198483611232587261820911911163248062071339304120685833231896886873084356930042274107787944810337
87991938082837748996778982096020946799825701362360467247804846582233346459021849435486394414",
+ "14.82941285929033424631086207912098111621541367505427772846015316912242803053179155131460895254342025452047405169979542962444023116618871414133945329115414916030717086099401800700162610179157625575102784224570875240388134673783512720045815984573244677473730308776161789775373152487797927469428424698992451596123810761760603459974935878542885454620338966840576398326342712479215385722633896269213429277517577186815835368399385357510926584315966241368671970103083177491810056374230908765438732982388501139182968170416902093696335794253265047512238389470476266068839550904857902884290216102171012521895487425785390772533673290825141180637654271919602068523663679301269923460621685876272261739146897230397245550640281333892280179876805212825241459567659532460865510977960477821487919988519512214198833198179939990532787525069625110656788302572184017485685007473335918820585974830025314636541771817202031778429171327072925562912898928433970457039281701616517987742023852668580246284812929084291071587456264775322548
97607152843489836358490936853541807395474017791353789095258403694863885903856428866385139618",
+ "14.93496161377307725187422052785022139083546667697688294121542088739140994156998264309052405000555194525661087579460458643920507667732813783188591547692393718847631988430338802843477863788566043700457692800316945845127916493229902799758404868359658692283991354160249536211646435324006931703584930335508121542557306047951220273731663823060833614226204891802863346855418563840680294634286512613284457483425609261395647744217257760538209176055637762569518325998718751851831329370723608514865972030517659843373639865454597454012755054881924487319387535255981118440980649105551997964492491978647277492862929963387183056309986199087442863236022246496860534497489875838747853274999488139126021378392722024886833639307069280866052629226172236336642479996086825127070093486958302899604555914283633558585863320366526968761451343141460040769870871038229703993585142555366491745322757603915846856181350796798406345157117821483266924820110334770062880362281520789658133705357416007550679043280392719259627589757029363794485
09324264036066209770450856159966672496255612322665295729865499903170425957082810506551820498",
+ "15.03976964778600301449459170886627151804192044365962989977954145805376192764705184967957503026834359669605983599122327786919794170876041708574713393579688759148061288274874238682396682587811963281588290140679302939055481397648317667801210167820205494306508693647094057360024825090165174990876735506317118952419436555998454712809443818351426621523248948709180093185558503953707857443258056351156128241217143115549841784859870715231300599784611578955187352882301780804880917384713982841500848653719376535133588986311891290882816191296017877143517610942854994742467787851786277309281000528203351781180944852985403018170511527833690815905025897022218054061348586124546925157068065533945709303517220350923847496953782019071176852741221311580528873624158926628493900290260339650564820838548304889811106827844299009151722193062340040993633003330378178940315191497366755379806173866236633204906411821292549068156040595437256698713460280693976218981190578108187360953706013350656573014333762546807943130203490625213965
09775307772376959952905436929593487060738018338230316410641798397322476355542860384513542506",
+ "15.14385234053920991966969415266807575480213056452052911422905510702025459698708060606517717926655894900554616780110898946648632263912001554461210011612647584882229571463066740427800254305408776512601236952077498829298048237860724081983118340357410947229047039941690749275272660541171525332551075326199425282818846268281015410967732395635352940956523833936171134446498172260449921444688124747319880141463935160081949861215514173175031182425188237146846067343254433996455969599338554537073362313670890978963459780269225877622153702413999677944000419040567204358693785227803999838822542340308965537170600984050709694325886072279904505957516003915824891200495488887871308879176561632725149529198909071326267168454971331124669508431470566342925469164861785219922556915042449219861250008095309974252007166156256576740110240112508586965917460915276445356890999404778721775736732866924093220896523904672438015961880751407336509971423702018418779161199940094487486532266350481818192562817847828808746229753408455231082
22703652277923638344521781640569055426282343260980758922970221905010015543051560514662433274",
+ "15.24722454631152533700406363540832836668877867087149856397776689888301769550071839756279137788526446893414692975505440801855970773317157771533463600210072424951253922147748512642807158942260663936726437452538574831379296073740866751661922819617653588047709891877385914432194575327966170126636477896094317740757405674320080389610139439373071348144208603123060441635042970438352839635547520159009911484177391583942890660185727222171105933528470892017457189383575497279579797054875614676809409505789651080929717459518322615984915936124295687187224118755704117325073639651106695846421666701930687646002479282783406510328725265635014690695426271710438184507509693937299212668506570682062365718315772099190773112060151986368839158709871413187170462340820512206817583633523497617273507495988023587758608908537853407602590574338235051665936526548903583331907987678472505960605133126513618442716575215100450558777669969253142998338427668306669616541507478645365644298585552729224151106497338576746826202235614532482756
94304210618254529601023775975491296511721889498789622849848564452286751061016082497088131584",
+ "15.34990061919732732719327437333897291061064656626461726804603931697143870844475574704809540832337708803796853712246309513517271470254970810820898793883374608476052716607159882913963748476340199680155916553323799535535483205917945079749285363131321405651349110578113319184781156926909026575137814663279643905589059253644431917768862677750905353892727239477219172026028790664266087370570833297584916827709943104283210272337493217774360148585851991070357359713956265592572438194056523350296537705913991787215908929215595446497845041594336424082766799731553890053503376562468169932887490495482935033054221891925942590428582744550475609415792514778563062949707043302711868974887852640926235369123708358064467532571712051006811110295037491139725886764790233790740708781014973368002804103569241437873996695350273760584545681258827346621038427453788553909857766139042035130177977471388884371369680883963370698794338879125385916692833127782134554857329555955246762944506064585454439197744300295504687392329089224125736
97555394576825425670246864782661192745625121039099283240722841566743449202185347012194036339",
+ "15.45189443637330464800948957146424328227641160977927439629059689230514342782732167675196783682561475664950338786364545083773343725058402979524602434763455147013938215238637814067487427047169929497044470869720772480616519184453250617319131064143907109993842356589607989833241122341046597806816770575318828603820802387229432984962305097283453638024923588234055671825982673417681673301420562907909358119773594140906895880398759201759691529357702545230500513924227800000729294904821557945296751415886267853878390030762402852975908996925986112129489741430719460127350435904054057115084207401826227356297918115469021317543041583913759762033505562283549081948716529887919825087086463744697491190632019558502249347601738409785406315232451654591306987238743917915355305000965704816569343242271972788556376570176931240579693214118259570101214918715195577626341882789452817066697851610739631435419783421572050331402838156453125144657962971867497135080277125282055007016612394038386397609634540355591154964533389886924414
65086270102708432189916595292275910127721552152009058942505984180320198848113154717062637193",
+ "15.55321941999192909739144782711015097827614734275561108713261285626354258779489224390652763337390012924223178599392263227425445337815513686694769141359136771678705698719922374870746700902507103915855427494553796763509177119735172318706632745318388717804636396071981429717420067716507346569272549361907608914984331701780960759666210788379699436417494784123263876649532467847214614262560261426423567869595447693339832249471811382969450308403345496531190003162601430779565082104195224733625621944121808152121627999276423233789456179322398042107210357356615536982294069682226106648121536795406977768450281230429565501103635074443577106598632509746907133713721289895672440460523221758788680977781383458439713188069794354810651720441843368532668705056591677929881329485834679774049686949592214866562402434177463896242645226895021592428811378112069336604061688548536252650976490998546303424557033847753797601296373698845183174060750147531254360064870266761582995334503547779080972050265640926184168130424510753578650
75958584347010560603909401672674530473016380690156057342486458799820056849296157803970758151",
+ "15.65388855779942853366153224733759669916560950214357373632460996367601653662021965023394702595594176741839446843008874479201186337270012517165715234435969188484446753797320725435605641334483367701984589472240333626349218759447352964882010531358821873858986312107716463814544337217751168990722928578663940114272048084036180789092489411834134872330214020172727889667061215864695797308974999757488684905185513373188086528162208842501940975011345813625894511913353708151127146128378966077524665796810019694844027758343133704221942010644299237586651893694878881289689541461485788205518899516201711660548827087591739343817814513384592917371231987629672720093300151901352510717558061524730369897437443017367511644505873188937842075149988790269135481079578225849962967311059799825937582313297762346695595714952465449667216598161651416853608210414427686558742617664716148797232796951296051314347742771546599383081164661229526254295267074331552134554674985486718797561579726900423966347230023267835350351687004569713244
92035298595293576869795744389366846556161860716979752870417581809090754427851499367674362389",
+ "15.75391442256792462098301123118675624892750004829829796604679789447302628819569360272471868967334595053377345826107700936144704873275517720818239319055895500051086290690126487553487825142285211970883469986932513513811545864962571533144784194665121350624778576365595461872763123808521099859764047833763231637469955874752152132295895800706168678376753379196062839015881893022955107316160012586770002179187982505646963254809089666293899977697178899093037980704092275482916677673014930997238667494669988232322479664690303083310850731059136460058851366968847250980400657040274444697650944706009301468457795305311619380752349156226785458193446676093506742116491452599639744991324581515109722958145872345894773824777243613185427525462819376470087280521742170507865980395170098526771361145289822422523736179540200447354439129571857084038717586527625322155926585856957400938710594227338995879356430967142585139378048316737755513909575969110312959639043266369865876148291997484003782842704898211192580925935591324001327
57457303025648114989713809051372859786312670557557455024113430415444733469786577609605818156",
+ "15.85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917318141449154623072942589950397905862150069399933839837587768500465610923498846958649809674914178649334608135965528391488070572086186135575993779130613973209256593945017506228618641718800535579350053924994477780084133179951980288358740787563005214821795481256206527887648549729996871774054020429837314316136937887876137521777117932703027617360675742776586587879033634451663650775806016574905105302908356379829713504515109962988045934612380153305995199641189881409994555690195806137141051648664933960516929190352508616491959730330198172829721527135869380885006871152722826824790432254935550904822038785179672515617130921195546433963725358986499078059348780168731237563939546153879515161731027042963871408027926509370873495472359723599337883052295516388700497363595167275403339807576750427371037005547463263990852754288784097928607631565034855476496988021643145961329177073785823131647659771010273111
29848967453806648036945112397617833423627052843598016874809261680305673980351252655348374751",
+ "15.95208465814964424568350735007030664517794510510148415392427010867620156131928963237455591064690198874604141261854313599612537579151980342272584338642508361615833928787794610564932655726055743606038885841341166520157175113816331748465030171166710616726902277045421376282529597973315594764877399250815758566852360129727638090301190810429266652767915906048645564884053160654088612199528869361623366411849189366976051926405482720763538464884950497196514396489054334840035305128766952337284891148948501581792461138648208378385007200261825289913004696475116612872056973250188763359645024494989748636421356041978701978487934953244928680837758987354655337576196392626357230109758481050683259034171066058650462921380378661821384139861255663934040190743898707524131247237535878415404685756995652372563187013482289148899610596000760853022695123369868762980951684555317999468766777176216831461267072363774963957037464317983500193569765802564575557210538701926507810089735335580520758702688015333888747128688602348887631
55218624129421405763678812077319239075778407441953464485710013630549293699630738008836738523",
+ "16.05025225952424230476581967579445063801745757057598392782532303214452508296394819109614719314531165645387384974394785571751086097398865911208395694905005348228753048497363264882096856312597970555971620879906259508645972693647669643938191022038432231132431184266715822842567529797922226581210659674897917398979015564643595710059443352469890936734733079221279530307438119561125278552138002085349216421314013663281047590812925084492813534275326257249550740145540551673754104613465119578668580233711998649712861846423925113787523245476427880644200658196997373234047899381301143041570025063182477667872766245184320561057053286227500002064352751064506829645743018924727156790212663685861627649985859076214815328612990233297092150024030017230155438725911212229302175380677395937396046982576826094286548745554916024949198297152159790194005675911709341427511772565459817857246183923346603453956765185125317094843728669586135937711433527252577464459190681351860093977592786332691277194261913659454331940699958546955227
73330552489914970861258642696680947645047295192118341734641074275298677776747132725952692040",
+ "16.14782308077323588040579111563599755786432696833641950055632938023259836790089849741426487145644423964717300403164769020988750945026001535837735098184740402542228737873237364898176520113703864062662505415114802020000729795987881556278739312109659503560031422522582918311412547449701854722365952847293090042257105632957093565235676102663972337897152677148044253966683307177426032679699547040577669750764306273344435975984221647297338652341764551469202509253986790228572588031047824686904384745842986010582586958714086925875849485634448926178997457265437147974136843577455553290380565935727339899241532984660605591535138121776482910341696141775122832577559590879396695057203232425596689324990035428188476516910925129879522571776341878492222788574311122388241033351982891051191220093802724989658263497387095721997225454195213025212852540704870732899098513441389393609228915943890798674981438735847506235896491015310175649787081383906207353215137791487121541764745832085443305036516547169049071160426825781694641
07303714557388993154579350605533888231564568424188460142954331592433579506586890005695885131",
+ "16.24480787518099987550112171580689810748129387803769079342883659690677157545806518812288376486438796070338553681026016766324538841109035622119872024163951040688789167101250298280209781419717905350607794454678149202115636148237179397142310272158361359440765446470463076917266019068021037142115556267780988151676974109212184787612418291715832912144744481142339606710858321175299513012046633941721369010265413909771848290696268339265477186361872532785929531514291235177427616121596868673960091767720484298579304633782511014415064067819635934044312040270017578344447655026835734060733195060661291161537559179743199660030495032545369492915756888247231181947072606261000464145466961570596901485882752048444391910147305913296480487838862319153300557321559127977361723149228531000143805656197616224108261473870602342376755379037616843178227100649132072999369979249792391518971776023376212028678312189513584315469331817349077430299204685724830190232387605899121323444818687081002016040977252229036861081032060606821509
10142819984712770046957870395535067746543225689701565797231792048627718784232710619996958175",
+ "16.34121707692338396069636942016124866912121280813565427398349145293709565810955361999492276675631966697518817203308478677493832174935628245085381928348104365307952514037482808159868886830904449635685443428302539983505160751535870224341238708400989644857336504382704809242574395348338689432351831192391369094160920842488490017631573625886335689690484283878708863331914180721956130267630627157049793895136063186217663006135123419698982009383197024086575900124747897770071234678087682821358729991504901491101582770065032507249536618376215748401154833727828603032776472840471190640075335936483965943301230811026050149908834726858350453898757674256721135416053388486101284647726625739776177612134146905204802624086500178384314079620179001403240462531433161454707379633551770058513792481470353704333878334205533218884603911675583800626621132548041074489759559782273411164960767432062609521063651438274431351372671450151865325457551330662803363843456776543678470318732027444699362642381132404471175113609630004121454
00308169673233984915808549522819952866570114619293558801485679439444177553637843192666077022",
+ "16.43706081416997795332724740436127731613360967337704885510724839588256709660301027706716920263511627580604269159521297010858678027293181064062516951798638854645466158451482280471435391224313759251602476328343895822783940243304804871044110909517246203556443511521691705450094073625598537159602541746099923675164450029373379154523440340276331378046718690092430121912162736281438104226536455424492206324415028892913802555973799751059060104942990914360989253933914535003834250287798473952128182160899378291670918429847540803019995292089657855709015635110252378383222491405925531239415135405574064870626306788015568609077090136631827364616288347630747686249367500147689742864175331804453487381693514418866572014239386210619459839270619584093742470979438655628519727171222049672349099021652074048125976725530858167685375883506501395958572118219106089374421875186725847140440223824153837356439914209076081954006734868431999108799008295988812790408613159310945240283809782411833767718064625910075521683077901203993489
41306657109189741410463773559051033330925696056841916167522766228211393262242421521807262490",
+ "16.53234892150271584468808257633362765397666542542720887648098756812577109019865146912513372815895977190304809792139839123338516072401387631545106927629296451340593902711084478686441734489846495458460750270643533864134019870578400782595475849163647975825156545459080362173066416937618851586759191610613040006738104872485919754449586432174460482401027276841321236806363392763568094944549129187735189400166805350885162531237646708822024592828125657576164026455796387793342047227289876244671806088807723190275347135557891501752876115853250485684984674877238081790902573484381238070778495942377250028571653189165877331190549012380125852966471067451432654901900137406596502598637190192893494885683592995623345304289829680333768925980056852396230588687426204483702267904303477121286435587580149396727254095868932212456472442002318252509358674516014749977636737333483638620737005027933547190221619314584359203783305571826054400698789796383815493531146294500343419314271507615778493428391212952847379932683518815234905
32278330519022627550209271545051013287036978208888323804801374289519895876593198148288412392",
+ "16.62709095169391935881132757424534550577249078934718372481900522776840218127060938596745629173584645086789447313356713123611115286352117079818517612819053904286512530633658577148734384600269822653325159081344965745982713244058522035986728674893337010877297736566922554798518207495320992780336688441574112533382569841890052140397916249199485308331135257706731281879493110618906981998917080148240553651368495370307481405165348934607756253129484741250995895639105285527979866936016267987505223207045500446289423659105190087706400369215613002684138595028965839565726003826707172937992957603366807082666400501999505462899607587215030301961326874682266762611822566322156498682074539021124035833789428835179584182432035824220828331784663654545453105751972590458410199125654616112476740910383263928125657673462434600647103367698616958733305024524851763112396823005703154707996852425922293773709198073205623941724471486224909396779455210650465744099557955567388383945200310770844142513610762031729378515827811892716772
47274081267854212505982365846174249067482121520863646230241374323178103657911564790192184842",
+ "16.72129618688370695960574270523301078389932652398427086468608518427033263714664605502852938610738533364301839271506251077448080824036581302185478773772234086266093383678418825390067060855256413602517380809073906441271250425952302798806371433682023310468933420483654648755965963396404315198434054806053271892336212888143293413532556730087104604398797473975020259417474715731278684120382501500056990656906198986448799678589019300288887173174230099156332254756563149912462471793006559480364583874208458552888773015559467107578570818886147081960392210161443842093476008989675723483549976895363244249255501673676491249565480980794071046731337380192232672382838659857649617368357186471686002533466703250187299368869143896491473615852601449383505023627793870538219267828397070716119806390557408187537989120613412600954503831202660852800044843091350110985740172858601564105830195628747668161419020236325321275480714977270389848963534543261170601523685140281774706215820593703064181235305547772525901928428818940485354
35254976906742189935635359698594705800588739642243011198473083262224352068070947521888133964",
+ "16.81497364919378609793384730160640268156297132563234979487506018095685013295566392300915301257375612182514401172336889713666262266194945526999348400332363548558381829468998639359351350511487752483392785154313611322816793842041076877905146309259500094284995337628581684869289974676615671861002991916984057896879314483118111069407993387698190169774851125977852661602912002184935152240036418561378690468173497368600841365211002832307528472313807593350752511049805383662495941358687235087702651541373522841344298412689682175334028871602110215423027591082782896305508540437837441854929752657063628432294786574057295454410907412601590763619419175307780820264393171320831780910650995627815278918894396144856859065438946201008549389299722968093059577088922648465342678967291022015157937476670108462893144172997273583585290777086653323542865890633203346665599752733406026153254269711867110020426293559090630669142618411785448152161588922441424054909829037497386280735340488937829563551570935114391869491681955035737179
26825734468084712589410442022354120219836575476305852256521675584981012952509686818126145279",
+ "16.90813211081198007032372413382544366907448630622041193332436836605997752267535658932097133897677661631613423580211279812713811346508470162864056044329872980223360986385635762679353549393018464943698166553377832462262098800750113158635539185859591350406555228965466023887196395090654950936144443301451121094560977527726984687936097001228109585346160007687159177141252755382256254137485334736851691908323316171132465798945044943072843123321659452338910168494909281213828530369603845975920811117218356304753405174479333393627043279667865419657816420134624036215129026472192307884486557301997622410684473494638388755013963498403276899197373325953020120418024954677065312670729997139014033932230676073826397709621036693046551438625840520382842087638320299317538110220411220251003048489530453633275442058767603047567205359381981069819287432029622127438310146225515263195925531935805733294417086249352816037629899494568737125457914278614901099683149103682345596298411241328072205953213186850221151118204714918451704
12521830502033004342105561816928208532788908700951934092518100776316736470776442731692226738",
+ "17.00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382011926203019216433130463160332871953682367444656008183382791141675614213387139286651404042270148438772631374392794365954621449715918679411346821231311323476100996185815327842728964327386825980705399348021964722656926231691638306207473227031037077068888418792782089031054095068740132333952988968055810804925449556438202698485408838692945335100063530203499579207150148923618431462425775476252528831548354939400879131430089251958578053601402704185858254819832259589054422137912601063631496130400986596731468820198667324356713763091781383764803693350693591927222250119158193615684017648462843232160108238977352677478408003330350362642851691143935980904973549732910644394818400962770086902280631460376196434298347616584420878271656771688993389257406056956190931967080137734540440654767252734746167597752589893432352569911009131964593659089502670217548815646059437705600952425148516078419792455868802088
66747279307676303889206098080334141095498113120491826011797819568010033703314385766397392583",
+ "17.09292592810987323085689096651817060904963589029512160522530941890827581847057687957289096068541058183084099110543012613088779054388194517012258167087750641638584588112203459571174433994869187934851622741490977235242772338130713631219252719439870399233925713902546187312124233977352564688209907121845536807036001209404376740472171093602096783442686297710315751606835429308507075824176698105523506620931482562755978775376214511250812195885566870194191204793174298231721075902831434464972484909706497681524647258067071300593117619086056480061291527946582872899857562205446491748874654789978098377713131164294540504493368770099222821347139993755487426782400720886201185312021574067550087244967813610766067586111699433465749964814066749657297355011066259559855409268996938163410473274371592780903405589832473483486221803637415474230114164781266504850473473781859212295398344189839426666809919634261080944929735879434939868081039471274190307753181049835593365176998748676424309902672573069083187757125451657909808
70833770357342634597715966182879292691159156387989718754333799048530940386842225448232251458",
+ "17.18457766246935043992785524276601217590143558721734862250072038240243728404369104075497313153127206416613120155142443389794234983534907935112668537124428435258863415054463876996698567771702260014400909373532596507280511964334192707609844550658716323313715178934322790157870925793375316916125394970185438442033369458310700574155708614165226613411420552937627834412777870203815320460557839829240191701480713368521679679427236596575241748038038039050873083844167844312848197703631950538209683015788688018100805416788106078664048022962254626217866031896324030391766084708411646597175932622589327599007461208669569266795853976963827264691364563839934903367794137369271107131219921824583328211625491361609763694095238834899003692021402227310892213604633870168252615523994160092153590012539555779368290219487082466763411129428707766952714079747755829024772268157218657330521451516085604137605721730154394609072521340332566913707494955691989541375214539235566327743763335690724049589698218174870226607314213542458512
72428708325787898296874181411803997899332362008586913072670711064770984500148015011826261837",
+ "17.27574317044075408519044501539497903801866874586542206849152303865032758254070631606045172887345461195056443916949707282956690210239839498198597599008308800796297797050591548656701286355518157205368158410996395256148514176895380849146808674241968216340895862414421301920388345124465700118882908021001335941825559863377234873864165344334682632244656233052746413301305407954119193917112679343719411075932055505816464244974847901904743007217856295232488479721365526420481614471295205861078758816135513699041130556863801804697908467062086918938555935114207509735305111652835556275978877458871346276341455174160507481588008905144255546393213778709239098551215008789833833958874786572272239625096274365009043724920986705896758832146741568344564546633629308822836248451274657312757143497813140306028828713295267107662946721364742691621028213744079386598581847409178101298680584663781085004996557090839032490466743665091911537614300759514114394697547734092828745081347286099138295745009105032090810502287054171329009
39410588699788540167873020190018123072161219964179184690554184874930100756126982018853834025",
+ "17.36643010939842382471235105497909842893061347482910224742909586648883692687109748600279075763477233031471261764141847870605889128324690461117026017774648906426322511540608168171613343169188235665011368207700357163347326861816137054023254723076501166061067834770610121630112046233227048655620572831246394753727484680355850073169146461198952384761778954132812647621968175404067280215848364345373882722056625322626216432834719556005941932134181661207270809893512174033250236808680462912731591961350798495047944685666460084632719048495064049076086138254643919891459626613766901264967525498867601922393106563361578798875938558599588233098668600611794064571204297040152434361605329794921444752517434610815709787438842484269831962473512070815566922897586665199279160289590755890745837722012107427446944276872261682113388427467890323660119014485021218350247942869230519730161642556841209931531391494908063206539607023330079362176387035909176924188142227019971588047555012871812320790150441794906610987968486740273029
76104705585992281369648433223442373992912484021774309627757116258683761986486802220878937797",
+ "17.45664593781434131916922250154260862740311362355829352436323853138582018777017040364840325207496421311337784509553422720256025108291582219727776705860616617013473281865267648052120806395254559822920159383463252891243028443324477256696177029219178085005252741876005366208011478191636135878372387288719972259910250805251804425344668645558248624146623399557336218102648627761873744199012852404314901759744493783179273983815197099195099336895631163356902042655340276065607648754495314059679986393562317028704877827981150266596920078252597231467524696126987673314639017800624935196892252781092833783102743895596790388341706802065172595372704041754322486338937019030778680346941979846980184543999953487126914769449384627016539068038771835516883716514105574766819649729508833168899463060255424942641156454498988931184842265139215006734905565928251502546811897715578341587114896448671651031650175735990862052492187674972876543939051355606812955429323522594907639071880608678437014020827047250792658866831765194915843
08173914664681606671056250177292407244890772315688524722948557271250549147036005452988137053",
+ "17.54639792241700351691035699367731677104890718426956821640946503439605558225489382462617086864640086281206980865642715751406426532688715326670498959176303552339404836320686611796129463019113957161853005164125853428898061630589703945768078529123573076690926809254943066920028962605192704156022858090703305444489342648664863831611017788076664391777123773494043442049818254612659167017134399076348816281420000301474815415669849167769850699748713508781051911696018744272361070282166313315084323429339272624322520484030539839363285556512020856667437212766664160532879085827083990194161167282903910411377768995149636854532263449139305951889196879859254396404906683811971412683246076456269994187436757076077822079779412355583039661531424863510617019228185414399909550338637062925658957644973022371446291299151682177343675891906063381159238503885441208763701056746927881276440536177276072072390813791507973912848714028010132815165703660809638922144722341126218587779323682242432668516722722971275933651904072396082959
28071192401106453278389676417859068237527688061268702479082098130209555748133337115265799590",
+ "17.63569314502238470516326263369121291599530476311602312551942632147197367453450565740063340529477837047898511246509423578064402834384480758653741776487554217448890048120882374151740021127218884335694811844439800265600250694398223300364082456596997056072081674094597182447814591518597012869206867913975873169246836610063614465697362803866591699434632439698537375163084036473898998999432889645390740457773960610942456150207945696189698107672861617591631961902102633749984562887786231999882337619011135363167358579569707781483417125386809601370464145119203341253063547363214187051297856692317029052962551186785641627955744245883371655538262004480667305313046214518381362190212443795049741160960979303482021464950205131547052190765017264272814050531573073690585639119853283953724781990028021544895590151749575957759026172632598943066714388804881048874896992780339428893879211681127413333367875789222784867575425245553575988735806468612329084973662401013593996790186833873360267688443206367689085054563171058072940
92097672788610628498171867123780698747648210099920520967511623044818811130645542567309932834",
+ "17.72453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665416226823624282570666236152865724422602525093709602787068462037698653105122849925173028950826228932095379267962800174639015351479720516700190185234018585446974494912640313921775525906216405419332500906398407613733477475153433667989789365851836408795451165161738760059067393431791332809854846248184902054654852195613251561647467515042738761056107996127107210060372044483672365296613708094323498831668424213845709609120420427785778068694766570005218305685125413396636944654181510716693883321942929357062268865224420542149948049920756486398874838505930640218214029285811233064978945203621149078962287389403245978198513134871266512506293260044656382109675026812496930595420461560761952217391525070207792758099054332900662223067614469661248188743069978835205061464443854185307973574257179185635959749959952263849242203889103966406447293972841345043002140564233433039261756134176336320017037654163476320669276541812
83576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136",
    }};
 
- T pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609";
+ T pi = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572
0106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152";
 
    unsigned max_err = 0;
    for(unsigned k = 0; k < data.size(); k++)
@@ -195,6 +195,12 @@
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<60> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<59> > >();
    test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<58> > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<18> > >();
+ // Check up to 1000 multiprecision digits.
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<500> > >();
+ test<boost::multiprecision::mp_number<boost::multiprecision::cpp_dec_float<1000> > >();
 #endif
    return boost::report_errors();
 }


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