Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r85257 - sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test
From: john_at_[hidden]
Date: 2013-08-10 04:55:15


Author: johnmaddock
Date: 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013)
New Revision: 85257
URL: http://svn.boost.org/trac/boost/changeset/85257

Log:
Add more tests - they don't all pass yet!

Added:
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_acos.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_asin.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_atan.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_cos.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_cosh.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_exp.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_fpclassify.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_log.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_pow.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sin.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sinh.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sqrt.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_tan.cpp (contents, props changed)
   sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_tanh.cpp (contents, props changed)

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_acos.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_acos.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,144 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ //
+ // Test with some exact binary values as input - this tests our code
+ // rather than the test data:
+ //
+ static const boost::array<boost::array<T, 2>, 13> exact_data =
+ {{
+ {{ 0.5, static_cast<T>("1.04719755119659774615421446109316762806572313312503527365831486410260546876206966620934494178070568932738269550442743555") }},
+ {{ 0.25, static_cast<T>("1.31811607165281796574566425464604046984639096659071471685354851741333314266208327690226867044304393238598144034722708676") }},
+ {{0.75, static_cast<T>("0.722734247813415611178377352641333362025218486424440267626754132583707381914630264964827610939101303690078815991333621490") }},
+ {{1 - std::ldexp(1.0, -20), static_cast<T>("0.00138106804176241718210883847756746694048570648553426714212025111150044290934710742282266738617709904634187850607042604204") }},
+ {{std::ldexp(1.0, -20), static_cast<T>("1.57079537312058021283676140197495835299636605165647561806789944133748780804448843729970624018104090863783682329820313127") }},
+ {{1, static_cast<T>("0") }},
+
+ {{0, static_cast<T>("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332") }},
+
+ {{ -0.5, static_cast<T>("2.09439510239319549230842892218633525613144626625007054731662972820521093752413933241868988356141137865476539100885487110") }},
+ {{ -0.25, static_cast<T>("1.82347658193697527271697912863346241435077843278439110412139607489448326362412572172576615489907313559616664616605521989") }},
+ {{-0.75, static_cast<T>("2.41885840577637762728426603063816952217195091295066555334819045972410902437157873366320721440301576429206927052194868516") }},
+ {{-1 + std::ldexp(1.0, -20), static_cast<T>("3.14021158554803082128053454480193541725668369288957155383282434119631596337686189120521215795593996893580620800721188061") }},
+ {{-std::ldexp(1.0, -20), static_cast<T>("1.57079728046921302562588198130454453120080334771863020290704515097032859824172056132832858516107615934431126321507917538") }},
+ {{-1, static_cast<T>("3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230665") }},
+ }};
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < exact_data.size(); k++)
+ {
+ T val = acos(exact_data[k][0]);
+ T e = relative_error(val, exact_data[k][1]);
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 20);
+ BOOST_TEST(asin(T(0)) == 0);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_asin.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_asin.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,143 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ //
+ // Test with some exact binary values as input - this tests our code
+ // rather than the test data:
+ //
+ static const boost::array<boost::array<T, 2>, 6> exact_data =
+ {{
+ {{ 0.5, static_cast<T>("0.523598775598298873077107230546583814032861566562517636829157432051302734381034833104672470890352844663691347752213717775") }},
+ {{ 0.25, static_cast<T>("0.252680255142078653485657436993710972252193733096838193633923778740575060481021222411748742228014601605092602909414066566") }},
+ {{0.75, static_cast<T>("0.848062078981481008052944338998418080073366213263112642860718163570200821228474234349189801731957230300995227265307531834") }},
+ {{std::ldexp(1.0, -20), static_cast<T>("9.53674316406394560289664793089102218648031077292419572854816420395098616062014311172490017625353237219958438022056661501e-7") }},
+ {{ 1 - std::ldexp(1.0, -20), static_cast<T>("1.56941525875313420204921285316218397515809899320201864334535204504240776023375739189119474528488143494473216475057072728") }},
+ {{ 1, static_cast<T>("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064") }},
+ }};
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < exact_data.size(); k++)
+ {
+ T val = asin(exact_data[k][0]);
+ T e = relative_error(val, exact_data[k][1]);
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = asin(-exact_data[k][0]);
+ e = relative_error(val, T(-exact_data[k][1]));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 20);
+ BOOST_TEST(asin(T(0)) == 0);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_atan.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_atan.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,297 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+#ifdef BOOST_MSVC
+#pragma warning(disable:4127)
+#endif
+
+template <class T>
+T atan2_def(T y, T x)
+{
+ T t;
+ t.backend() = boost::multiprecision::default_ops::get_constant_pi<typename T::backend_type>();
+ T t2;
+ if(x)
+ t2 = atan(y / x);
+ else
+ t2 = y.sign() * t / 2;
+ return t2 + (t / 2) * (1 - x.sign()) * T(y.sign() + 0.5).sign();
+}
+
+template <class T>
+struct is_mpfr_type : public boost::mpl::false_ {};
+
+#ifdef TEST_MPFR_50
+template <unsigned Digits10>
+struct is_mpfr_type<boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<Digits10> > > : public boost::mpl::true_{};
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 51u> data =
+ {{
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-101",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666667e-97",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666667e-93",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666667e-89",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666667e-85",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666667e-81",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-77",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-73",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e-69",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238e-65",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238e-61",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238e-57",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238e-53",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666668666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238095238096349206349206349e-49",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349e-45",
+ "9.999999999999999999999999999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349206349206349206349206349e-41",
+ "9.99999999999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920634920634920634920634920544011544011544011544011544011544011544e-37",
+ "9.999999999999999999999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666666666666666666686666666666666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095238095238206349206349206349206349206349206349206349206349206349206349206340115440115440115440115440115440115440115440115440115440115440116209346209346209e-33",
+ "9.999999999999999999999999999999999999999999999999999999966666666666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666666666665238095238095238095238095238095238095238095238095238095249206349206349206349206349206349206349206349206349206349115440115440115440115440115440115440115440115440115440116209346209346209346209346209346209346209346209346209346202679543e-29",
+ "9.99999999999999999999999999999999999999999999999666666666666666666666666666666666666666666666666866666666666666666666666666666666666666666666666523809523809523809523809523809523809523809523809634920634920634920634920634920634920634920634920544011544011544011544011544011544011544011544011620934620934620934620934620934620934620934620934554267954267954267954267954267954267954267954268013091483679719e-25",
+ "9.999999999999999999999999999999999999999666666666666666666666666666666666666666686666666666666666666666666666666666666665238095238095238095238095238095238095238206349206349206349206349206349206349206340115440115440115440115440115440115440116209346209346209346209346209346209346209279542679542679542679542679542679542679548561895620719150130914836797189738366208428128459088211410192834341441152586663e-21",
+ "9.999999999999999999999999999999966666666666666666666666666666666866666666666666666666666666666665238095238095238095238095238095249206349206349206349206349206349115440115440115440115440115440116209346209346209346209346209346202679542679542679542679542679542738366208954444248561895620719149604599047323505527839893164970569113274066834438351466215243304983108499463325146458811824271509689681318218133e-17",
+ "9.999999999999999999999996666666666666666666666668666666666666666666666665238095238095238095238096349206349206349206349205440115440115440115440116209346209346209346209345542679542679542679542680130914836797189738366208428128459088211410192834817631628777139613052925311641589740930163598087002528653948764327011735444703713649735994600714288656350334489593033695272837185114343249547095046272603174268e-13",
+ "9.999999999999999666666666666666686666666666666665238095238095238206349206349206340115440115440116209346209346209279542679542679548561895620719149604599047323505575458940784018179051162265592202726621494746410579611835097095566286199717626418813764642659343446728207455753397291482030056516178836684094391777365260695851470017381944166954115569576329193296454393446430574957840819236721213626802085619e-9",
+ "0.00009999999966666666866666665238095249206349115440116209346202679542738366208428128463850116128619335776637836253560167434464812879197215298894881707269927081030999737549925482008672363799937606915962379247584324159094536421375755997513179578610677454920512897850953612762990732913046921088456079984429888220262137400213929962691532176198436788640624698990926490105259050461938357510947570244880435664081",
+ "0.78539816339744830961566084581987572104929234984377645524373614807695410157155224965700870633552926699553702162832057666177346115238764555793133985203212027936257102567548463027638991115573723873259549110720274391648336153211891205844669579131780047728641214173086508715261358166205334840181506228531843114675165157889704372038023024070731352292884109197314759000283263263720511663034603673798537790236",
+ "1.5706963267952299525626550249873704896065212085331517483940102693584808194810202180293789115097723406333076648941055516492022741759833189628737308869915412879148320539754700057326930986734751013960313584219296445913757777000240665569182597868494941800236191544832206381775972559949762275927455637707925634113006817837919481411335451596526426779712759369563859151046126747697908496855825977735219514481",
+ "1.5707963167948966192313220249730847754318980330208862438222342009158129649367552929648110725556184185509578339104318071142673796252326115673007840833450909541260947278453938016119958041324233151995987794877839930865561434524027270213271053829179745357590596408023867275770197075707094053216000680544580256094089113804288267449089904640326828789035666143699659867092108718279796583028512542392495421779",
+ "1.5707963267938966192313216916397514424319180330208862438208054294872415364764378326474936031472490101815502336217205184029120016698547471043186681600526965471042074304163483259318452680435202095109230279463923963492870040904012032740805456738144599352893425202988524603439218707929425378295371082108281620406379082813613862672159901100496534463976107550806601465567059619048829495421806391510160463001",
+ "1.5707963267948965192313216916397514420985846996878862438208056294872415364764378306473507460043918673244073765899887723711659699238229101634817272120007484952330785592874771970616254211570733230640365810600043257395046296021443620234312981206088055277773974880349347475097997796620171523611445056144296707974573126845590321623615288317089359131170138395627805178532322154433252386274406088878525130896",
+ "1.5707963267948966192213216916397514420985846996875529104874726294872415364764378326473507460043918673044073765899744866568802556381086244491974416088261453206299039561128740224575416159622681282588417758651991386266175167241223840014532761425201608391327088433455208280958809539778973505942839152244275827508237604782514078980809178018719474972957865632271450490908284680846718670522639450168825443945",
+ "1.5707963267948966192313206916397514420985846996875529104874722961539082034764378326473507460043918673244073765899744866566802556381086244491960130373975738920584753846844454510289702985019506679413814584048816783091570881436029034819727566620006803196521893628268096302936831517800951527920861130266253182819592915368594665061395258604800061112367475630116742454513973110064559653064241192080164878504",
+ "1.5707963267948966192313216915397514420985846996875529104874722961539082031431044993143507460043918673244073765899744866568802556381086244491940130373975738920584753846843025938861131556448078107985386012620245354520143421118568717359410106302546485736203322199696666822417350998320432047401380610785733702300121487566396862863593060802602258914565277827918940256045031718123167711672299800138772937113",
+ "1.5707963267948966192313216916397414420985846996875529104874722961539082031431044993140174126710588673244073765899744866568802556381086244491960130373975738920584553846843025938861131556448078107985243155477388211663000563975725860216552963445403628593347290453664920790671319252288686015654237753642876559442969539514448810915541112750654206966513329776061797398902251498342947931452519580358553156893",
+ "1.5707963267948966192313216916397514410985846996875529104874722961539082031431044993140174126710585339910740435899744866568802556381086244491960130373975738920584753846843025938861129556448078107985243155477388211663000563975711574502267249159689342879063004739379206504957033538002971729941063150468273384839794936339845636311255398464939921252227615490256602593707446303537753126257714385553358352607",
+ "1.5707963267948966192313216916397514420984846996875529104874722961539082031431044993140174126710585339910740432566411533238802556381086244491960130373975738920584753846843025938861131556448078107985243135477388211663000563975711574502267249159689342879061576167950635076385604966574543158512491721896844813411223507768417064883795081004622460934767298029939142275136017732109181697686285814124786923127",
+ "1.5707963267948966192313216916397514420985846896875529104874722961539082031431044993140174126710585339910740432566411533235469223047756244491960130373975738920584753846843025938861131556448078107985243155477388211663000563775711574502267249159689342879061576167950635076385604966574400301369634579039701956268380650625559922026652223861765318077624440887081999419104271700363149951654539782378755175984",
+ "1.5707963267948966192313216916397514420985846996865529104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626800373975738920584753846843025938861131556448078107985243155477388211663000563975711574502267249157689342879061576167950635076385604966574400301369634579039701956268366364911274207740937938147481032363338726601367713704818557414648864237368825496664469462809",
+ "1.5707963267948966192313216916397514420985846996875528104874722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405590584753846843025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167930635076385604966574400301369634579039701956268366364911274207740937938147479603791910155172796285133390128843220292808797396925235898034238",
+ "1.5707963267948966192313216916397514420985846996875529104774722961539082031431044993140174126710585339910740432566411533235469223047752911158626797040642405587251420513513025938861131556448078107985243155477388211663000563975711574502267249159689342879061576167950635076385604966574200301369634579039701956268366364911274207740937938147479603791910155172796285133389985986077435665940254068093055177095",
+ "1.570796326794896619231321691639751442098584699687552910487471296153908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552780155644807810798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903969995626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296053908203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477798524315547738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127418774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153898203143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214738821166300056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960359191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908202143104499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832967056397571157450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513138998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908203143004499314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824450226724915968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566592025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908203143104489314017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582968934287906157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499313017412671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954573157616795063507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017312671058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730507638560496657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412661058533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163657440030136963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671057533991074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803963457903970195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ "1.570796326794896619231321691639751442098584699687552910487472296153908203143104499314017412671058533891074043256641153323546922304775291115862679704064240558725142051350969260552779822311474477465190982214405487832966723064237824116893391582635600954572824283461730174305227163324106696803630124570637195626836636491127420774093793814747960379191015517279628513338998598607743566594025406809304089138",
+ }};
+
+ T arg = static_cast<T>("1e-100");
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ T val = atan(arg);
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = atan(-arg);
+ e = relative_error(val, T(-T(data[k])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ arg *= 10000;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 10);
+ BOOST_TEST(atan(T(0)) == 0);
+
+ //
+ // And again, but test all the phases of atan2:
+ //
+ arg = static_cast<T>("1e-100");
+ unsigned err;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ T val = atan2(arg, 1);
+ T e = relative_error(val, atan2_def(arg, T(1)));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = atan2(-arg, 1);
+ e = relative_error(val, atan2_def(T(-arg), T(1)));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = atan2(arg, -1);
+ e = relative_error(val, atan2_def(arg, T(-1)));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = atan2(-arg, -1);
+ e = relative_error(val, atan2_def(T(-arg), T(-1)));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ arg *= 10000;
+ }
+ //
+ // special cases:
+ //
+ err = relative_error(T(atan2(T(0), T(1))), atan2_def(T(0), T(1))).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ if(!boost::multiprecision::is_interval_number<T>::value)
+ {
+ // We don't test this with intervals as [-0,0] leads to strange behaviour in atan2...
+ err = relative_error(T(atan2(T(0), T(-1))), atan2_def(T(0), T(-1))).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+
+ T pi;
+ pi.backend() = boost::multiprecision::default_ops::get_constant_pi<typename T::backend_type>();
+
+ err = relative_error(T(atan2(T(1), T(0))), T(pi / 2)).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+
+ err = relative_error(T(atan2(T(-1), T(0))), T(pi / -2)).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+
+ T mv = (std::numeric_limits<T>::max)();
+ err = relative_error(T(atan2(mv, T(1))), T(pi / 2)).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ err = relative_error(T(atan2(-mv, T(1))), T(pi / -2)).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+
+ if(std::numeric_limits<T>::has_infinity)
+ {
+ mv = (std::numeric_limits<T>::infinity)();
+ err = relative_error(T(atan2(mv, T(1))), T(pi / 2)).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ err = relative_error(T(atan2(-mv, T(1))), T(pi / -2)).template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 2000);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_cos.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_cos.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,348 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 101u> data =
+ {{
+ "-2.37609908807915949996042688873953402912174184373388399043229539427530802169622688886435380890546981798452174137747437590e-1",
+ "8.03406366226813589517543567844755380935198206635917017883860879215939165740799963435747185200486086864198723786516760875e-1",
+ "8.60219386510802105228997694366289682807721120146423711696179175800635220710279361583231346318224971127450760223168489952e-1",
+ "-1.36768951513839774357595871594675554406872039078811749027554673949684004409484639336417431285061889554892096426752261915e-1",
+ "-9.66210139195431691033548069227792927999642647449593184440815029076272297050360196975341458076547426373476590671462150981e-1",
+ "-6.12007278553856790723803948280976098970972124581361775428331444376106018942231526074915731012122426588769327127413045994e-1",
+ "4.91927698740873688392439262912409276430264703350691359723802294639643655296838880236042651349290074585311025856549893171e-1",
+ "9.93232596718899824059271235487971663771012607519717340071654721877802691370866768064059943491135925674950430467047724563e-1",
+ "2.77789911520199551017947550534057049374212876971194676010301098598339529915403722848373365985645657342475739669568931563e-1",
+ "-7.77955945956221239101360662190442739163791527953499629555756394261998892874934847131138921705713935365505245406994428077e-1",
+ "-8.80676278306736581575818642341143682410874043182925227659938804267878718513212454821032629378618345485453587099696563832e-1",
+ "9.54652155963865007116798560589970996367213754762169439269792747771200843006278637115722685610960738675814993576019945344e-2",
+ "9.54658201427917718824191302196929158303422390793460018465335986921801519149657723689322277773550748806000948225466432438e-1",
+ "6.44358700620889799575033272322899136331490664925359198096632560532437137894857803619177106562399406351419810452110265174e-1",
+ "-4.55304635273050571206400777159475409897339683148730716647371922365967582339285347105376503917296765204188604297021364549e-1",
+ "-9.97202532932553753622481171186283382950122646390227670693679248197349800205205290898290539070732778341271049474946533154e-1",
+ "-3.17489525058325500707686194437148362752290391406825231198381521862930317513649081353670386166519524315810546189268634469e-1",
+ "7.51160186640147504067744846462384089742696250681200524524912647858645140367792164416711871535116761744380912486921554617e-1",
+ "8.99610194168373157174515848193119670768490559799348397680196213249921436405001710937402190319584272526657508442591319630e-1",
+ "-5.39963892484342940823660554048696208293700871414984387094529796385334086703752106515008832585578915389731907422242902573e-2",
+ "-9.41455348900839346761557896365239742769987576963330061702397697388879776230596944312519157729410022380228287314835345969e-1",
+ "-6.75595816763857390859268297670835380459024839344154743310231115864242050771191159334664874097564054770066166961642073448e-1",
+ "4.17894201894880415042381733708896725748531223743344790054523182948440843948904650988733732381978194392219295696279423635e-1",
+ "9.99447981389824371458566861195586395552622718284098766856978062347139060489410032781030191080200904443096549587568037683e-1",
+ "3.56640095868759075150409032448421838265699043643228482503057299699740924345262819242042067863780263400092250418388628640e-1",
+ "-7.23065426868134142613141384486526262450487633432466529798821958977732347646832059032382447792655111641456570392189752211e-1",
+ "-9.16988391192434436877664999042786024703848714036221388727578305299843547352325574309860356272561772723624753484063972217e-1",
+ "1.24341855683226931265962750806821531283439413068694552738675989282017066737438591268502070364982899342633928417210588531e-2",
+ "9.26624413643579136646620112107410908114766812511471130116341925013001661546817531064974089666536893346764523464250445838e-1",
+ "7.05664607841658050248613256866289182754229289446384595719719495272020558391145537620968819401219414243210529013148958366e-1",
+ "-3.79761093422301890838671114556341706055562482358183402807224298533060188038450560241345615647754569347252101282386222173e-1",
+ "-9.99965058979463689113370264378210962384824970050865061898892508056811665771886385589295806419278045318841717598003331419e-1",
+ "-3.95173919871548266286836251448043149039940610894391718791244019288314418437411707835924620250473697245151743147215758686e-1",
+ "6.93720251624319621941983929806434090162802383400620564454074825718151625795576680427510026452063593762417421561201654156e-1",
+ "9.32780816819880202610269817418700102084277332259524791943833699964920012022753227823298655560837271746316929623378078695e-1",
+ "2.91495208658083070508005579692813621670878962971611104453227900103973434149303469066898102622556226584993895360896300290e-2",
+ "-9.10191043170480685360743788297835112117551819731152897291272407935139876953384666161532187572493791297095784055525159185e-1",
+ "-7.34513075127503122343910106816656237074878218180284276449954797048122379869002663646507706411949095015624141821039453971e-1",
+ "3.40971254411713599427147477626159847871020791931107106418841144080445813896332252160005593096670674809345703079384115052e-1",
+ "9.98752871506016936810666998588493462933191829230756181478046320353377054175122206889047094521687205093218701141334147081e-1",
+ "4.33024359542714849537532946954507232835434973891665238942502273464321666207117525270650546741831354943253652514490075246e-1",
+ "-6.63175408268187738636594884921931867786416057472876635147295424128144233911929585327601381618059327766986981109409782838e-1",
+ "-9.46960160806563725719808910991708075372282242401645009270517113290439792088443109178772446465191984149998211903724560065e-1",
+ "-7.06828182905581345108929510344440443421290640066613022421187316650733628538705972455891575947230299102119854983197703150e-2",
+ "8.92183656127948379886438402777950080111433733329436790239129260607557296960582455582584117031260710927499215646838011844e-1",
+ "7.62091330231640362984555508176991632755732840163230620595759320390970951235395195394649584713540498911356433919369698423e-1",
+ "-3.01591765120371930643555588643712101466544136366607065361801475091335195383846047491935017919396438040414024941341524187e-1",
+ "-9.95813515236177554177387795413035497724212540625760091518605741283184405719984044075159457509720410668598540884613985023e-1",
+ "-4.70125959152223022135690700550251564040118601846181392455764893020377582359429013073566263451488554529709131439092909247e-1",
+ "6.31483718775865440843182928017874708719203714677143270278178885379757350754752477512514449375355491054871712891789652146e-1",
+ "1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "3.87481045630097871028201331640164477694000480353342897357083794605539506785023570062767753819472037935010414476627195076e-1",
+ "-6.99716878554812023132822640034166338740077082416915046841339368979161296335086955803240899441098534898926193252558848693e-1",
+ "-9.29735101124991407032113033015438177585645722877060262785796302722011806301680288369763295777635760805579255008366302180e-1",
+ "-2.07925797310208845709174899248298159909010721767168338004516304026594885686024530923209628704670627250569637267490913462e-2",
+ "9.13621640053945104047985280883096238900189007462190433514805702721127019097915088259906184736442916334750420359005079959e-1",
+ "7.28814716527795995795780587639833705107995825167970668466246348938821997240383021826681253777014938636567626203524137506e-1",
+ "-3.48817863192357573536083313907744269588018702862402502601699983054718835012048372083235768555953613790431700360695537918e-1",
+ "-9.99135337256258278958854200595331742602280601557283993231562055717063052179292021052372510863057206152466386086657442382e-1",
+ "-4.25474147219713305654097901385832164424798803616095278869643928816776198489330071073326518019520590535564717523756486665e-1",
+ "6.69409002349720857726983952566596052122726437391092096671257338244059819036586172017092390651026654050631669646310910927e-1",
+ "9.44240747589054266930136705015787520728797286842746645573763175559132491628984502333043316023599487896169049499868916865e-1",
+ "6.23417820549832676844933182722733277887833220127638406914080428946880981800946578131712749910941183940944526141109771339e-2",
+ "-8.95928229794837090592434136137683839101829890460754766346170956577979909285084363961363023377587044303560652568203578379e-1",
+ "-7.56652196635835430995109388017590459596111729342964992503572530290981857981790620732129221157071082788019187787999930361e-1",
+ "3.09551461133309219674309651201007026752336319933918953736299690287371505733386433918863300129026763968979930342098019300e-1",
+ "9.96542844308353945757715814452637400116215448012622700698887257177706625278927018059066920597035660000571997275705962011e-1",
+ "4.62731465522276407764000677957978862104808823938378826581864482071733508960062598574638347814740748458034065235894523010e-1",
+ "-6.37943500095315456672541800050589670140910744260281868746767523730582697622604545933849801882909439609368258115114388202e-1",
+ "-9.57113494461990955768932962010819183910065445494138937651443249061391692258872250121438832853873660881630205561168895590e-1",
+ "-1.03783175146302830356973378710923690121182237844646430783773333188328606275124873219756415071202025673009660963930966273e-1",
+ "8.76685468012988943166112725030293740012198666616661362437433807594683780986916439696374569274720383546275206733493672834e-1",
+ "7.83181178815072182812568575402104911406191663934571600092749188502783771503475038116599065276589122015600004250624262132e-1",
+ "-2.69749743842835294071354429049113807280228918034124159074991560056663623624511602063409428877143567459307323934051784210e-1",
+ "-9.92227004420417932443416371636723983768124774541445787394585828303853075015733744933294181104002649816119116502663362907e-1",
+ "-4.99188570507651271652464431008309802023236218596632956064119419694573621896525872847587264755853127438644874992889777436e-1",
+ "6.05374785886620830935500306718810628353011877048386199574451402773468315797082901705593423724389976967865835641164117478e-1",
+ "9.68331080574540181354402420018944004334504868848934676984951546671476956051983469715128604348963016773169794077158289730e-1",
+ "1.45045093347669933436797325432376656017480150281100519869038554695618054318368975927557872948037203212941966706926758604e-1",
+ "-8.55926631706799584065153976496431313099942493164544290051315786450857575707615522517293656706329757352795226750189755758e-1",
+ "-8.08355785820466703104647317116964786017731181599256098405978700298563758509572188640629418770593008092680980412866065299e-1",
+ "2.29481541445091823694157468006983283649885473964756916206813927875661041834620526229807744443043682778028709792615798955e-1",
+ "9.86195281084368344446227722442335005500018635181693920385626820970119467136148305491035657795704047666385553672680209923e-1",
+ "5.34782415974986828906369231191245075731384342252264783019973387059318216570499447505623911253042567598873910043381675873e-1",
+ "-5.71759181631212640256161075896307515511612057247572886814941945052483422285718810088660759708176904381865453799197101481e-1",
+ "-9.77874107069129472007009478090869879295520839405452365411822873037906082086100232576241983901051327761231156641104065497e-1",
+ "-1.86056181372276495846711248156316208757691570931906856005697361080864028851991674077024223201008430626166447144444086146e-1",
+ "8.33687619660983803179149188531271900120055171980951416163724579833511897001564116810390933587615557717585362295882429826e-1",
+ "8.32132482562487183916482822112362004641509381783438374175226355792137053285527706239574867923387554339582561002247202518e-1",
+ "-1.88816490768820368180947188938258919466912959009058295775702554895970560887437777994365295452696990115940651570073217522e-1",
+ "-9.78458105113103660973458641126689066610890753079836635611789969774219913050456840122278188955139015473252491612410972950e-1",
+ "-5.69451448580118869157805059117807250106203230622762838051154208713065707949727035884250775206017528612930773233017928006e-1",
+ "5.37154819650306918873973169624898539483418364490295996462663218848771864764982600193558748568095521886456306061269765631e-1",
+ "9.85726070946814004698231423834505649751779161578718404221294527194525251740198034173542003704080544827976936213857653517e-1",
+ "2.26745517700332138489400566746499809209783385009289423848083137846668382711005704387134606000570923556980021574851618566e-1",
+ "-8.10006890365888881023982873786181048364505748637138923322482323010218991062084191379116946709356002103893071903481540337e-1",
+ "-8.54470151393449484710948210543666267680196067632693416660536443330720708402601669617638569732848938319544250428600991723e-1",
+ "1.47824914922605209542648603104533928946885824995208478684499907657728115943168395067575842431291755277452367320596435067e-1",
+ "9.69028856602232134498324179654622883463820270279077886397861028881882684131282848087869087883519707948141915733221980948e-1",
+ "6.03135714281336943093251136556365407562473924416812270469171432809743173719168209727199952532489544254928975940518615351e-1",
+ "-5.01621542149055350065079347615664213658089623368745676779267390227688581807037821041573344917735076902116221444127518632e-1",
+ }};
+
+ boost::uintmax_t max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ static const T euler_gamma = static_cast<T>("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1");
+ T val = cos(euler_gamma * ((100 * k) - 5000));
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = cos(-euler_gamma * ((100 * k) - 5000));
+ e = relative_error(val, T(data[k]));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 5000000000ULL);
+
+ static const boost::array<const char*, 51u> near_one =
+ {{
+ "0.001103662615143147017601393734232421549156847219973314118949247990939859507971857976111288683988415478257878902917354105871236439563170045857810738102729287303674642020538722348587741395785016549139854168605590336633274890874911975139498047488076101124170425114828336211817830671418321600962996502656221412102902998671173649312277667706874059520046508702908872747388744526457997404065469953155187340837",
+ "0.0030157041572432190019717764776322147049224887913331212054173669461673516770769148735558540290915754514269097799280330158745508542936966046640795712691698490758472574837678659161855207596563250546269614348515005196657786359646020537231301121492728577410212550350070502426482802490452572415879214994201864402901595309726458026672888041860289772080407882673424767232857435141510615538430445535588448032261",
+ "0.0049277346741750694119109616231402901360500185022482787362616412856233338679208830974124749830793778323997684640684587346403570647040211088376986993615001420565608501262335822815041623056442245053684626079448221530207757672939048030945164948521320401574074802966260975904478775314730002799895049652983052125151436511589335123254582883803928373794668948878049089088843407672795237410750365571990834236348",
+ "0.0068397471757112108044544339281399968563253858411528016363900245610068161564091499398024110635089866212789583403491711476788985949178019078796740862827299289838108117219486357027460681238178010067475221327133396780718266880540272936860185783976937569903778160170225166328920201699827472893824363838439627437187765159770262282930293057633886299749088561182830982345936603553661004526800797082995898813903",
+ "0.008751734671690018552720976028788304981263251327799787402847843531098338033456389098956160956160597460869666211569183483587979772678557230743050583975270977754518475970489741156524119378847305446845331098526962579804361960647344836744631465315238254178161716870409320747176674142306881908614436607977326507761331050644035013756409444911127742401762647885817361924274132830920030936589562922803846509607",
+ "0.010663690172041286306192948782895990881227033104763005629047563262531418373465237876680529005058533981010793759446966868628480908709812402179047774888094761104238131843239037167212206469894485599085717216855637620318723457013401360290343196462723174177342294339229792213396006286331141933952648238459364417067676760977202812721209681621184724443514062993874571816382775241753902032787099435678672474841",
+ "0.012575606686811781116778815864446643746718166744927923785139233710240017201737625088406861185781739628293213436323314376708933534933748436720721568462267317026688561438144113855290140925120435317506169856461386623828941531577425811393721991195661429557079268566156800689149725770186985872449679872155877537432897653904213375816262709009448220490217917537801655330411526526290708967440087145630462068976",
+ "0.014487477226190798137230457835664944872810802211308342685055637400305474021552028493778559102552025380880477103065187688337931713540557562373991431880251553620947836940726544553647739994157300967262941976933375115946629204615918888689039777423610894099269527633757403818072000860056651445780074486612843419789636984117740884711882675016016919064788076097669389652323393864660933705259163296837955978748",
+ "0.016399294800535714798489384358524900105286836154421890562438917862501411947245037986455919696365301666112414890097246479762149456962809638588245466988584093380263545543023411087203351948681559905336010066900667101787138862856447778428938265451537422367650992162004154495705878092019403922006152498705687706013973674800621422751806347308220226407830977673540994341535381202679482907460136241543505771361",
+ "0.018311052420397544372537858201001145083914223029622271478159852925692124442640247100336262041440360412392318902558295108452513123454103504516607498763863728284797202978975409264141138861738184468257576157204552383675442780049333490201800526935793000727771598103735596829143729912656158790924063286176336412427525710457367751437348230246446466833498557166002214984255422115833828533909144072330080184872",
+ "0.020222743096546488827333191237246591760639730704704148795009602627175281013458865557238240830203973690492882935553111519759474835556686812553430134442713057622274348510526931333124437928482001301214776111358848026164688447150395879262705323533149853785508106018564787140458587165768350143018847840661371060583295055600185059031740386698369796694993301139380463919242175430688496936048982929502368583755",
+ "0.022134359839997490880406060727014362125793630864951833270601574861700025448109186301755833862830343973100181180995751924514611578149687732808840212399134735559355116816700346196685057916461444889179117142807858883574426062415931319905031345377305247124198345242221848293630112578508459623098934259229893301963120289071135120089672338617200639338087265986570094025605269870532431816151660553037324591448",
+ "0.024045895662035785157706623778569329505432699504171659064296747761761946910295074291838826981712792368282349553905175996858645967280135417577488810651594776626562252686758463813820791031580579721782251705600570838044158357396828391251385978824608388341556751951593319015721256942139947235672567093309227673005475237474351604086627391812539914665025071874865132198040631867741985556198082915821590691115",
+ "0.025957343574242448364285479040344211549214421772336408904791690210449825580868841229728937909141136116652894475476991471494524501035809956288247010861464302066154254736425460468024350571584780489213056428098560686376999562953811729945811217829999284678155635497607933780499844559793793320393174691097636750027421158473345884329284455326733063073401001936304522649050748641723222539485352644237494855455",
+ "0.027868696588519948373400137317728007608587427701668964330844960393232962659347088604492706251530487148805683505883152882204177723404307465324383408418716579280515871949790204586171885981761699066301009410176801635003961167315448162116236938093263170474354430610732127054993766008385425707409224417795873645410443727472246508894027549288331903202127478347028519320691939639175445464091747341289465807076",
+ "0.029779947717117692140641616959423088975059158964671307393654571763491553590582559015283533532986018614029995854278748039155177088839414450454409571267110720713374288363670804692289394770804051182510495900322915294613479146430103948686457060129295537542317247965142780968717375277053102667416124807987527429828758851341378395347636356414345553353015296944031211364374602764176767114282660874356057979248",
+ "0.03169108997265757234968007548831539092664261419258315028339932724609641378752993073240305448323210275610250474048387518003293691429670190316839718892647475151605557113852966925288722557261748981001717642661075734993748510506277165730472207647763678204813714194082852502621623007244214605646094787730992510318924772328958129857640953691466395972638014259980360897599169526022683004620965496473543834477",
+ "0.033602116368159512696233026049065446239504816931754722314316906991719894135599777826750609185018647633748023602662568553364455253741994701511752478506175671449029859193583332380924298164350627023797218098539441228986492601142199774579432202424360114528105854714450548265654769162069979862894518829365029262734944196495563243510942310738160350648115273816371164862001848102516957052031698646996790510953",
+ "0.035513019917067011716864665791693591701266221069066142988726516832036728613300457006403299601385922973285573124147669717618486570986860008564309641657943172757912451506572783449830586163814477502720341010870119231030511664725149033496023356743601581035789746158436049009960920433265660001864258067191594425969638702851317416487965304378219676062220223886417078628342731900948906319081697480745936074075",
+ "0.037423793633272685069230163289099410548201460485083250584815890545695501760634737348027106921155349564805321222282824709072582234185849564440670000847571561359324629877368620222775856068569278590582843550096096627510109210574429458414697641703261368397349100700647508781941466979105505468662952228018391181441110331804231754679360190526351574820397399161022517352576803713854137820941977691824804918229",
+ "0.039334430531143806170384413477273936914540782490679532559795199052084263353981243128408259086619593938946158294175465792633584421592350011455198124846778194417281005620258982615227234871780679327289232072858751285307955384102986030326321993554199425677956531006546270705693578070953933490084008156062047268010604414954653769711129551190023978078265436680151306319349753427763894284339669614362603225399",
+ "0.041244923625547845099780771389235760645292527949481044094490883777921290140650504322516472637184803214130714431279474404434513167088543202171922178874118967991301744186858054508473413647148744260057423931033177973119110921967581379650616945061418716237102199971097086754171168500651650526166023618723542873290120298640370217463634503988257867984189842393302366909916756244585593509804376197012137137735",
+ "0.043155265931878005673591620105503250213648422568500347993529171942176855000247082147052189275394127432389966427668413127665366489709229602926384588361071126297040547180622989395253518259197742053810419372452372506534313264090033740095357809571640645325965973975968081307185286025492280541542290934505383760407808393490207181258819590768103829347539943429968533891105456889889207923129412409325200337396",
+ "0.045065450466078760596989313842010956972889269629840996618541471076456145341576346037140737554087089598232657340541865108389258265511462307708855932308284610805209084413460614598570062354088931179587984702006847566162492414964136182928014974554852612762940578089297583097434972291633301329615187665009664697057933900728259220674217919826618275818024987757805509580781060051826778978395144370327934582031",
+ "0.046975470244671384601033063916347240271496301008030038885300525267985292259051299166038486168462131096926077920611254966322965395673221324506213593415263189667393727124978454125104192236004303056348320706091018781990803164595039969574510002737990997634364247271320535459089400357647302806652831431190979518269432197656547265417669309719787317687585776029758282182901563328846367691507505917911626458378",
+ "0.048885318284779485470814703449342779874157141188272539012461507790598796169844054420701400747288103863351008593834375336008952419161297787680355981672505884405645257094616683497040471721980241679616912483788844007649447969703512155758482444019770785766752697959554691538291379700303132353876869628124563105576278585509058450081192711918856522653293896204836307264696289474219755720645459588331890558889",
+ "0.050794987604154532871523976044438688478988546522275702591135165295075684834775069782087540212155311599924632216878717363279038406203747968637573994688146329296755023729170505930935028107359530042909822369245609091696704070694133386183688825674952803613566914142157159664703170379754943610785780639205752343103591085978554489192416588288410803225066825839880971435465232206429722600557780654218330146221",
+ "0.052704471221201384879102044313723519214541830844294339002006150295000261803629777930668202713875629368914012613840180174156598399096984605842000917709330893871365961242812860633022132663435078869433262371062200555333508565564704972551921154864927879748108180002977668648111714062992755985320189721615088748697314805428967770533095416911693326757965362169171309026356339280576158225848771071227224373815",
+ "0.054613762155003812122160305957618147686113745063989650607179163157398820817715079449268802189362998719256947035541552524839497119721884536865240705017403409053301625152685151644761334409897199810093505097528650897729279062117617766845257388412635800174656504897022571125534403010151970450307624961920347280823962725005822339087173498538012712497715370388872960900453285934131578336748483622553313648565",
+ "0.056522853425350019441850338124226420404372628229474954730316461224029279793449121148941830155705856364290655296696008865349058650396297667951745639266344993911111272076019522476315254920931469406381088740392436352997178777214659473302034620137440843681809428909274912969436139312159105442160243076856936138443854294531618433726198293972487505166088883354213979143973990964298454127970039847456893860203",
+ "0.058431738052758164976379864942430396555977098734986011309321413104802080798824039565461521608355122102022725461220269967251619843394860641070621951433765763369761658916816880868188275032453137184211673934079277285593935159478757148621410070196500221526968060556586710920750728824112282461003224923995158937905479480579208549847478185757177039153501786271361921802927586114942206193581554801605680183774",
+ "0.060340409058501876576879058406717550375449897922866349024612531373677724965692896763451690034750214807393086060232183962741893455630800282528706094634312497867863194252914455062127544671909424505367559503649890477570116767021509485710626043408265846213906257952113003324887350087083283630715857354116849013376841533857321740197047217435805280085872071354373524395263864933170034771001607559366437835689",
+ "0.06224885946463576546133123915706193746686049729742751789281333411875145041642253752249398319274836506892916659694331849766284472811963607782488993959669913942440995816339529777656740297867471191540909520680122909159182411803441391065468297111274482089347737322313334144161837035757661055283810143238846811496286086926075008068489724098160672664550444107807861952850135669761489736449089327971794824585",
+ "0.064157082294020937013292141108273585068933185681722806586173136512969086561151000586083228827704474922133659368208499428517560937267711287558275856325851735527047525549135602809953924346232393575354505341516408877034795144989051337120442048812961016500803766780090428411925756071299228254760633032932651170483895163866111455935100454818941073761804284777739005007991141161823471943803047351369535073521",
+ "0.066065070570350498632132342303164932774411476452581548988386145454309844170784631219900687545375669726062411278210148833761887075889382631711319762066717518842787273543143969874177059386003262516941215168234997245420735913778365997498382320917159517052861653706668051150014889560865161606396037665048820655743861710636504450723955435275019348223982732095398949832565423361714391500479155224225613768011",
+ "0.067972817318175064541548243754498015429928588516517183822313264446879635682093113384264993280408482780193047687370305892309106748875519486540879020142902362307237689684697063792225838111742241714789823601251998299331254097504567214769822096812914869886418586879378868131071702869283011709161582762527864014863950459121468893761825841337802563429112718615110803469902519051203360473993644451463303576859",
+ "0.069880315562928257463098098362562671709183706398122146969098129179472379455539984270317889382725678551314678030902515782188203802362460214070192378666311369730755912670660970378408284876465192356340335277225457776091515934608751710356445501169982098020701963512215973413220903547301855847279762573955110834619967590588317288171580291576756417265600792610005176888567344924086299458709493921684370833814",
+ "0.071787558330952207061531053207739391124226218288071373402959685303573894071937999096931283415397385296306228484128726125223568292760110763075739612174182840148193517540379302896938375357744754831885570482299802985278525692833941172622048860945698352794727105726197891701070706523197225463566498764869186174536278875440544967870368440256565084805804998877012238900798874720340885805165811704445925369809",
+ "0.07369453864952304506868897057861922170414313661538863465614770246556638808351254050794164760581857499175318127117745597595046399453737415234966090460819383278338184265518294393589316067434296307320873514873375534499000895507092920123162793722742278902956263178675873980121089525814840115300730124457959632013360479776554262210801798434607194598511786777350540581826836696200671400628870250659962729555",
+ "0.075601249546876396992772935963040077834759122887264324876826746597298507042570795315940378957369646666545616927930046677179646722187557860442506025110541968257406052679604681892086517951648112201767029044637142334937786145563391280677987040697732028896674786378870229133792190093646530752257521390201161387698590619925316803401938362974478273195688740273778224688121208296858072701246429755713258468481",
+ "0.077507684052232870319778844857360483087988665809157375994805235390695227945273826842335916971262245322463861698987988491433092759415620685754813456247989287157909601376742141647886684380473379403067343977633347655683745871434202230624968375294472571053679501320680048739346844244553807193670436672857163839591129928936603341033670518982144557944158002407590669543043048232580344768659176122645763500513",
+ "0.079413835195823539113919284592789131508074280056913456617148863190077260584186476150168101766032692499585019572300009477107342325731806003539645749720998260074894005503243715777788187754550286488316966320623707403846973934258796072434720381188302956748572794547906591019552569722211941807674118070825610462581312695693650893380241875873254675082431417454526920871842555422162216221640850141209989864308",
+ "0.081319696008915424923862092389736899811819511475112310887916890436246797704730704673729056088324784096921353721791055102563812592375189346816348952621603248827528923433998597558478366712658235656924601774921095079356565867874041683517103417362062033545480747089630436317004907748679995334911923789802669273406449877710501792905734235548100216242648355048174292232350538531258791292074224222773259366265",
+ "0.083225259523836973901629476483826882570495097409722948211156651871411915926347698443317606324912095013846386144848076019334983060323996364575622231284156371311209803383868297666027142776492604713451401116304951916037351315288808149328656282592946622481248077426878390562084748274992526750980236994304445617883874613002677387890383751048690275480465558930319669630406765794141303531112767626885032234711",
+ "0.085130518774003530041015433371012162123590338565297712899451572274044870858132401685294989726432756808251618198809497117031428754224182463768189333992610411750324249283786647605964593556580841488686189374310703328490638378071341189999989736919850819640255203388192531225871093915262442913255553964348789674386732423763999398384843950222967487918049677831350991752153610543052586794779289758903475438463",
+ "0.087035466793942804442393380943589773874807384137701777807755858606555806090045313793349743667697666495784828540247587627381581545620918795107877715086227932192756144780086856515641298195558204484728115519445514732755572178929839231921546119143469647706999890259163924570037168105911942268212237224359201159897493303064534985539474450028748960081579369980283792804593122976296597796047722827878891322393",
+ "0.088940096619320340510800454481897179643787714504988904779549430422905882044782054375828906100456879992313640144934242418129400679706865644316664458061953684856607341811667576418163339843372041295322709797007871604740491453013916791024918954258557372755707588171502529270934617054742841996068375532958173787119651672031238405892943090742861150287144368470297356054911834742041692715934237148148936307154",
+ "0.090844401286964974994199780075024285173534240616972938308566124002318176156233343333797652771250228033597767340846476094210813299723066344955542455246897302945908336756464582189829335315055318509171623072382573656172991307091055717376996812421994002305994837615827430425975713541786272473174908117299253875064746541808768776888139494200307162476704515967971265236163183394620211890252072718610942571965",
+ "0.092748373834894294768837248013614869545920040757666771889792264347367335922283987944081370356939214799510822558638935486112190359701790662792925773186897671244831971450474952036618937833706899006048469791213129922302798462311426294239282200248625552430083292818594731518350634587677158329361662244008606299358410273467156168469937529868888478684257396004386633746334360279683178784117372066095688934486",
+ "0.094652007302340089278624856973167138217258137565762699413364163993950641989798336903224059425798872308451866930780842878435503832366316245159154044350517727312654980455290163514021860802028251981954724580292247887851185639950862672925642859475325430465650514258094310141033116303195908372018392349011340787373492402788283020594141795669947097771918542864972570255253465754192708165241608041715996375567",
+ "0.09655529472977379853549858833033074225823562054271495313739665642376685099661084023094270272485976247900824483810911634635819558334630910267353320029261330296977292720266655308513559530586843550229208517388789783011887450865488554143475302590353915732321663418057567573042594801866258948380684000769091353165879953111046260532796891917772727185993569684246844052518121013717183610828519193371796413317",
+ }};
+
+ T half_pi = static_cast<T>("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064");
+
+ max_err = 0;
+ for(unsigned k = 0; k < near_one.size(); k++)
+ {
+ static const T euler_gamma = static_cast<T>("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1");
+ T val = cos(half_pi - (euler_gamma + k) / 523);
+ T e = relative_error(val, T(near_one[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = cos(-half_pi + (euler_gamma + k) / 523);
+ e = relative_error(val, T(near_one[k]));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 8000);
+#else
+ BOOST_TEST(max_err < 750);
+#endif
+
+ //
+ // Test with some exact binary values as input - this tests our code
+ // rather than the test data:
+ //
+ static const boost::array<boost::array<T, 2>, 8> exact_data =
+ {{
+ {{ 0.5, static_cast<T>("0.877582561890372716116281582603829651991645197109744052997610868315950763274213947405794184084682258355478400593109053993") }},
+ {{ 0.25, static_cast<T>("0.968912421710644784144595449494189199804134190287442831148128124288942561184523327264655202799685025510352709626116202617") }},
+ {{0.75, static_cast<T>("0.731688868873820886311838753000084543840541276050772482507683220220750082501569499540967562610201174960122884908227300721") }},
+ {{std::ldexp(1.0, -20), static_cast<T>("0.99999999999954525264911357034690133684385823577463126432241468890539365027135494672267164697779879113636143901797362388") }},
+ {{ 2, static_cast<T>("-0.416146836547142386997568229500762189766000771075544890755149973781964936124079169074531777860169140367366791365215728559") }},
+ {{ 5, static_cast<T>("0.283662185463226264466639171513557308334422592252215944930359066586151456767382702286176981668344573238827368717546699737") }},
+ {{ 10, static_cast<T>("-0.839071529076452452258863947824064834519930165133168546835953731048792586866270768400933712760422138927451054405350243624") }},
+ {{ 8.5, static_cast<T>("-0.60201190268482361534842652295699870029606776360435523539636606145572515876770619546025351418378467287262574566665150299") }}
+ }};
+ max_err = 0;
+ for(unsigned k = 0; k < exact_data.size(); k++)
+ {
+ T val = cos(exact_data[k][0]);
+ T e = relative_error(val, exact_data[k][1]);
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = cos(-exact_data[k][0]);
+ e = relative_error(val, exact_data[k][1]);
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 20);
+
+ BOOST_TEST(cos(T(0)) == 1);
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(fabs(cos(half_pi)) < 4 * std::numeric_limits<T>::epsilon());
+#else
+ BOOST_TEST(fabs(cos(half_pi)) < std::numeric_limits<T>::epsilon());
+#endif
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_cosh.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_cosh.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,182 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 51u> data =
+ {{
+ "1.0560191127459844751259038114395241283965590525302917878166464679729562764239266483419824023679041866569431842053263976225991679105269492268050148624443706785607467750929028856273183654547152707568642275917435773104050171284580773949313906303074811586096214771879801872225500237540725592288167903987152007171391207680034517664218965133028298959753155835975555361514087618679892905973726581183754237665",
+ "6.0577917650974496023981039346694689204850927958941226507775366589415588030232830758139222010716099059155799853188868489737439396141346120898610181630988217093945337280471788812956307352429914669334599644412036010014302812555700905490062030666482387008384856645533100266205122930455496234252478878949675888122615795451076521244771554025667181070733415815608287241160724578541982548132473721865287585003",
+ "383.32956577005424506758441449272199796616394738942294350035763341369127219359132618750028176886177362785452836065735889720098699937365992620246167965376788963171659530350198190156275836547285437366012371175910490835823389352716981464503672749829183569550509561579181434088407652213421105693358960196044447948190823567291153397039759820680087749250557665869797605969680417240900163183563482342795870741",
+ "180470.88335034971169904627554690213669106779370247753503772451628313223853228134148123711258586005038324156900626143047383382773083164188515409766952843294484598668304799186411411329575367546332731190431166613267871177008493921416649792646568096789971466064344922873643120446759328638447781504932928745974584136039698220604099816877847080168890581112550484205291341188894903342677757367415636409890558",
+ "6.2781497954189513287619297175142770025826052476955600323495790530946900406209789437212923381830889846578651793922971071825731424267985994598149826652782605981764572599129753631344305259620294513472869937699509893247230674850025066547664563263958672029867981296029855675095947587305949634130736118694040608573981560192569935477462121110619100122692626135788198431038121227062383110684489973794745342204e8",
+ "1.613783114750852113223226710244634574082654363427931747177970610142560035434819323665197978270795707611590961019502906079030261920109649748962125930850198625621792763842224096823299250338750953491004408731082880660125641628213970297576817341593254767125933119462446651783267917469179893016103516988279473907996009458208097272806046395206212403180775656514566222835047724943633607736647735739948551096e13",
+ "3.0651210048650948869531196671342477415226643123350617715268971834881834615138925908518703584506447138436613632341330640449725016173384960626760387649747643297918807083363913015806893683786389067836005832038060734248371426886808175554210317756018846109627572546314172492701544345965940408777570519312837860014177872754358662463423939942202520475422342889660750666147940146262635303938752019875745307992e18",
+ "4.3016893602106215864771434464025735547192956887050537014696231526954713331351791376069506688795159316625154458115179050297716224800318064110052445970764898870599885508391064218065806885129697936678362276766771902589638957537168339190488273555753876162633237990462617955892238424402124353124736879474651977422350856642986446591941163073842974714357745162365700428610167249762162775568692443158879770006e24",
+ "4.4608685929681360001024935791890661655506049487122331222491789277138083092507844933483858468341107613657448783043064935174812965310544903547535217357996429824403225005261842368679242972243707736489629610256554995236901040773902962370130989883960298987808008001651650799892267761089302132749037069497452309074389846493140222931714618697738906019885122076310868220596765753447232222740129365498326869428e31",
+ "3.4181315955816806472569357441100390029536003312981931954091744304974491527743601285017456624487264929971022746516079644284683284072159616291298593217459064246713801084801182706805865477209408120733740982340972570739267039630582468876075574706187115643861449939429503730606743466086010115127464706315791765264572070452800816054590653675962889901898843712936126341807733200610910325052666512334161414655e39",
+ "1.935294628272790810141453021278524976364077691905248015888165919062516673344977091262644262832934899971824373171672037249361491844419302323587942915162859665992916625636813244576210109931852761921719987632855596663907494303248513195744818730879742963301327852160193919379798462926667740594397712731448572837824802330973561570848397758210619453310032286208701226098998940360395267237151018055781640126e48",
+ "8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696411023621632714191313583360826598468217983223558130595633054971338824192327248896500337050246640453410159732184419096917171044075711156867804851018388576371530520943696439917673720450911725466781235347212700849702742625663288687644090935756560022610000629006347244369388824818661974220426e57",
+ "2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636307131078699799472622998437404149614292337267153201903296102921815263736653035269935857816159086496594269187082442244280898258397047045746728729079796167987895368614037770286371191530575814695859433478185016171380286325273493350193132538052551497175771289873181595171e68",
+ "5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887832891095928020095581695527354104986223411349657526888924224926675682032043363279774947976053895819671003276400297758359779703605970507328706064692923481168676751999124073697599262277247814864401196929320497117521176016017349797292609303756215e79",
+ "9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667380623792736661655695464087154725768656507603378053220212067894914686147301550764045337512361478831034999674296837635744344039906734109560908793921568633128400104314078575159786136202769893309913175064586488844295321363e91",
+ "1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120466881600981869890379917878811691555316448842731085218988710571211956972016424649758226606500603194972966032036214213759991156778846329137084961334557845326183588274571457361004704490747798678e105",
+ "1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155601275526921302332118009966650991624878227108265079219497366770219141098050965023005919495048022616553249266192057652205987267068584616625670961423579715954410508985e119",
+ "7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004829725273067921443635526965673971412049693552004259820173389681647135125678701502084190660111860351299407405357314966388044340723077086e133",
+ "3.7985363580067976240250330165300706958269826851549371732460220923459822809007918495780412109700378352703982899561570150646963751463572075768540297484136809462018052149545042828665345287117150392150513078663739946623681053685054650372595872914400423446635806806461783139586204378680585507446218544068845246753010850565341852111017728985713047360191412931479535524815646071456825031827933342626130249175e149",
+ "1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174689070525154077366030192931540897742543089509897490703511310531249977e166",
+ "3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531488383930867055908047961915279983259e183",
+ "7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201",
+ "1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221",
+ "1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241",
+ "1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262",
+ "6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283",
+ "2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306",
+ "9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329",
+ "2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354",
+ "4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379",
+ "5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405",
+ "5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432",
+ "4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460",
+ "2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489",
+ "8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518",
+ "2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549",
+ "5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580",
+ "8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612",
+ "1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646",
+ "9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679",
+ "5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714",
+ "2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750",
+ "9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786",
+ "2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824",
+ "4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862",
+ "7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901",
+ "7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941",
+ "5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982",
+ "3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024",
+ "1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067",
+ "4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110",
+ }};
+
+ T eg = static_cast<T>("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1");
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ const T x = eg + k;
+ T val = boost::multiprecision::cosh(x * x);
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = boost::multiprecision::cosh(-x * x);
+ e = relative_error(val, T(data[k]));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 2000);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_exp.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_exp.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,231 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) \
+ && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) \
+ && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFI_50
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 51u> data =
+ {{
+ "1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "9.47747587596218770242116751705184563668845029215054154915126374673142219159548534317576897266130328412495991561490384353e76",
+ "8.98225489794452370997623936390755615068333094834545092387689795875746440121970819499035111276893290879203289092353747850e153",
+ "8.51291041070124257524798251795398355552294928156627848633073113916721592074889256105483993631579761345100284245144410506e230",
+ "8.06809030516483860484254925989129017112482132468761563276276594763374886826841745433660192438855214332469192411759402790e307",
+ "7.64651312322841630493169711336894888932951818957138997327518186691187347879142222644283389432604713409023263917264358401e384",
+ "7.24696436606255985380192585665173794455118215150711210905481870053193336336731228464367470327868286988180495111406609690e461",
+ "6.86829299533155197480610865771404565313986987801060270120621935139741577246731459024227828759564450034267891072352816870e538",
+ "6.50940811722948585242669672360741252715012399316164518226061001845519670701239429603657927628755169479689062519606799624e615",
+ "6.16927583978348964454665652571294215251327375137123272041877979478545511090085756858225302357977159539777447847855503405e692",
+ "5.84691629437043896753869572004324228849833391140408095171257918435296982661233664069534601413835876272500275725690968474e769",
+ "5.54140081286660645835370762406928689330724181979654545550204201113926269281603301564114980528619942840737770415885783439e846",
+ "5.25184925229805200184933663459660562493261505058724212670923083643709964294855282715531768162298567379648573804433968486e923",
+ "4.97742745928448409225535325233998957076879979440190164347796593390995994951755710667491911026476108957070504003155645761e1000",
+ "4.71734486697204622371883518659702954552385115723942808636490157561056417525827884479573988899517566587636669779645610803e1077",
+ "4.47085221753216236037602345430121605512330975424643767098987010800161616413051148037751552110081034066081309007796182114e1154",
+ "4.23723940366531198300986713567588008777043812458400705569721660157434941774066620870256745107265536124077734836797938268e1231",
+ "4.01583342289144005397455901781647949754375366066998182220342540048111140676724909947493787596336610499122085983712119281e1308",
+ "3.80599643873362813900306284477369187319506389058898599816705625750135796510808933786432614186155972485637939057212164098e1385",
+ "3.60712394320959592074309301816510372687695286650188776957291994751966018917404878612237961367128638199290387601511358836e1462",
+ "3.41864301533745457066062991907289263038319874930395315315257927161138360206596116102724713069518697248463965164712972907e1539",
+ "3.24001067063873569456703204286462007769933831045558617578289414699244767403736057931834775727420762410328297596596814910e1616",
+ "3.07071229688386868087623659761166306563170839771162347830514606977592027644137144160294469813988158463967740978461420862e1693",
+ "2.91026017157373047094077218552378456052150304677863670611408570458991015300131731261787644801415538043027268185097710615e1770",
+ "2.75819205688636078700279174380111581147323147951670302427494196210176478494486073721584055059489736040565979466551070179e1847",
+ "2.61406986804110104534167739704643351039975992759905579635058824027507742375380077276380178376470686987855503581867681046e1924",
+ "2.47747841124391945459619002346303925269640785743990333362087223895627681769816204236257960940497519376881830373722711456e2001",
+ "2.34802418757813746316913800667907927718925648696508255347624141597281474683823345136640610924639820192825966082309575303e2078",
+ "2.22533425939475124828943430510333464605535146852848680647615867629953075390889821397228584866395924176189346073006180260e2155",
+ "2.10905517593659363154553947631071808925462553114068144748077359132255993441363479041540672158497404660986163617828972963e2232",
+ "1.99885195510122536266653916064141606295420554580140619900425370702471778604391774578696867899999534265169574306808906810e2309",
+ "1.89440711840917173277691572886942144916664047407963356271198286654087884646102070148271284410118233470318337745546895603e2386",
+ "1.79541977639739687088375911648976940254141946934175300605485966288703931992861387257771264702798405630917098672594899744e2463",
+ "1.70160476180317540861346545791118106171203487587101437710693054174454895160403997508137760007058856854991413121389834429e2540",
+ "1.61269180804119796097157014527479883521656118500417752963675677684343588976915851637637232001139108420659882326614772004e2617",
+ "1.52842477060722969066998464046690349841548269556677423378408183476489015878816585045578141383463708674469365281537792914e2694",
+ "1.44856088916530600122626623629347336702026699647293500058111037526381692645547938577338582002157148103479049071921438452e2771",
+ "1.37287008819265239873777879432333192404914357037749380145412895230166352318128978403808382142784030558123748263528360645e2848",
+ "1.30113431416759441771790128053911040907207490879890145597562380328956450092799014856149474809345424672958343296615764490e2925",
+ "1.23314690739099822369963411660419632130352733806319401863570442920347696015409870236230656305563674376063778482449716744e3002",
+ "1.16871200663155636468514484039368694043851858077879103221831997264419096417014996945143145495038265243932745953706526253e3079",
+ "1.10764398487979357804590117089134596938734185016144401218934115168561552640448889215089150481162977776214124397487013110e3156",
+ "1.04976691458528698318220729857405616816444374000182094405930946710168752954926612218474430081526312018810817657409158490e3233",
+ "9.94914060836531582868347569174220216007647278536863127198023584205669825317884219144692385409156165042162234017403353704e3309",
+ "9.42927401023380446961314339401657458785389811652244742482194123119943160577946366372207045050095290781679375214307398844e3386",
+ "8.93657169598281164656322298275337750103095739790107943666668184304335665562867744740310577868880098719252549186849812451e3463",
+ "8.46961426624835911826517103631490619655296714141872141145089865045804196205328364155921945616925875458926717336478525196e3540",
+ "8.02705648870740089929294815816002943860908317454595055392168733404583122074223427054310572378841634984243492063192095337e3617",
+ "7.60762342267101369970765191988545810374824800500875923752736467467657167098026707905341603949108433696304383346239333297e3694",
+ "7.21010674617694221027190468649359000420209460539838589305387835463807416706224777302997789297329446308541513638035437482e3771",
+ "6.83336127500041943234365059231968669406267422759442985746460610830503287734479988530512309065240678799786759250323660701e3848",
+ }};
+
+ T pi = static_cast<T>("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609");
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ T val = exp(sqrt((pi * (100 * k)) * (100 * k)));
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = exp(-sqrt((pi * (100 * k)) * (100 * k)));
+ e = relative_error(val, T(1/T(data[k])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 40000);
+#else
+ BOOST_TEST(max_err < 5000);
+#endif
+
+ static const boost::array<boost::array<T, 2>, 10> exact_data =
+ {{
+ {{ std::ldexp(1.0, -50), static_cast<T>("1.00000000000000088817841970012562676935794497867573073630970950828771105957980924149923657574337470594698012676100224953") }},
+ {{ std::ldexp(1.0, -20), static_cast<T>("1.00000095367477115374544678824955687428365188553281789775169686343569285229334215539516690752571791280462887427635269562") }},
+ {{ std::ldexp(1.0, -10), static_cast<T>("1.00097703949241653524284529261160650646585162918174419940186408264916250428896869173656853690882467186075613761065459261") }},
+ {{ 0.25, static_cast<T>("1.28402541668774148407342056806243645833628086528146308921750729687220776586723800275330641943955356890166283174967968731") }},
+ {{ 0.5, static_cast<T>("1.64872127070012814684865078781416357165377610071014801157507931164066102119421560863277652005636664300286663775630779700") }},
+ {{ 0.75, static_cast<T>("2.11700001661267466854536981983709561013449158470240342177913303081098453336401282000279156026661579821888590471901551426") }},
+ {{ 10, static_cast<T>("22026.4657948067165169579006452842443663535126185567810742354263552252028185707925751991209681645258954515555010924578367") }},
+ {{ 10.5, static_cast<T>("36315.5026742466377389120269013166179689315579671275857607480190550842856628099187749764427758174866310742771977376827512") }},
+ {{ 25, static_cast<T>("7.20048993373858725241613514661261579152235338133952787362213864472320593107782569745000325654258093194727871848859163684e10") }},
+ {{ 31.25, static_cast<T>("3.72994612957188849046766396046821396700589012875701157893019118883826370993674081486706667149871508642909416337810227575e13") }},
+ }};
+
+ max_err = 0;
+ for(unsigned k = 0; k < exact_data.size(); k++)
+ {
+ T val = exp(exact_data[k][0]);
+ T e = relative_error(val, exact_data[k][1]);
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = exp(-exact_data[k][0]);
+ e = relative_error(val, T(1/exact_data[k][1]));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 10);
+
+ BOOST_TEST(exp(T(0)) == 1);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPILER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_fpclassify.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_fpclassify.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,342 @@
+// Copyright John Maddock 2006.
+// Copyright Paul A. Bristow 2007
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <cmath>
+#include <math.h>
+#include <boost/limits.hpp>
+#include <boost/math/special_functions/fpclassify.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+# define TEST_MPFR_50
+# define TEST_MPFI_50
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#ifdef TEST_MPFR_50
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#ifdef TEST_MPFI_50
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning(disable: 4127) // conditional expression is constant
+#endif
+
+const char* method_name(const boost::math::detail::native_tag&)
+{
+ return "Native";
+}
+
+const char* method_name(const boost::math::detail::generic_tag<true>&)
+{
+ return "Generic (with numeric limits)";
+}
+
+const char* method_name(const boost::math::detail::generic_tag<false>&)
+{
+ return "Generic (without numeric limits)";
+}
+
+const char* method_name(const boost::math::detail::ieee_tag&)
+{
+ return "IEEE std";
+}
+
+const char* method_name(const boost::math::detail::ieee_copy_all_bits_tag&)
+{
+ return "IEEE std, copy all bits";
+}
+
+const char* method_name(const boost::math::detail::ieee_copy_leading_bits_tag&)
+{
+ return "IEEE std, copy leading bits";
+}
+
+template <class T>
+void test()
+{
+ typedef typename boost::math::detail::fp_traits<T>::type traits;
+
+ T t = 2;
+ T u = 2;
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ if(std::numeric_limits<T>::is_specialized)
+ {
+ t = (std::numeric_limits<T>::max)();
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ t = (std::numeric_limits<T>::min)();
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ }
+ if(std::numeric_limits<T>::has_denorm)
+ {
+ t = (std::numeric_limits<T>::min)();
+ t /= 2;
+ if(t != 0)
+ {
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_SUBNORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_SUBNORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ }
+ t = std::numeric_limits<T>::denorm_min();
+ if((t != 0) && (t < (std::numeric_limits<T>::min)()))
+ {
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_SUBNORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_SUBNORMAL);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ }
+ }
+ else
+ {
+ std::cout << "Denormalised forms not tested" << std::endl;
+ }
+ t = 0;
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_ZERO);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_ZERO);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ t /= -u; // create minus zero if it exists
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_ZERO);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_ZERO);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ // infinity:
+ if(std::numeric_limits<T>::has_infinity)
+ {
+ // At least one std::numeric_limits<T>::infinity)() returns zero
+ // (Compaq true64 cxx), hence the check.
+ t = (std::numeric_limits<T>::infinity)();
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+#if !defined(__BORLANDC__) && !(defined(__DECCXX) && !defined(_IEEE_FP))
+ // divide by zero on Borland triggers a C++ exception :-(
+ // divide by zero on Compaq CXX triggers a C style signal :-(
+ t = 2;
+ u = 0;
+ t /= u;
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+ t = -2;
+ t /= u;
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (::boost::math::fpclassify)(t + 0));
+#else
+ std::cout << "Infinities from divide by zero not tested" << std::endl;
+#endif
+ }
+ else
+ {
+ std::cout << "Infinity not tested" << std::endl;
+ }
+#ifndef __BORLANDC__
+ // NaN's:
+ // Note that Borland throws an exception if we even try to obtain a Nan
+ // by calling std::numeric_limits<T>::quiet_NaN() !!!!!!!
+ if(std::numeric_limits<T>::has_quiet_NaN)
+ {
+ t = std::numeric_limits<T>::quiet_NaN();
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NAN);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NAN);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ }
+ else
+ {
+ std::cout << "Quiet NaN's not tested" << std::endl;
+ }
+ if(std::numeric_limits<T>::has_signaling_NaN)
+ {
+ t = std::numeric_limits<T>::signaling_NaN();
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NAN);
+ BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NAN);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isfinite)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isinf)(-t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnan)(-t), true);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(t), false);
+ BOOST_CHECK_EQUAL((::boost::math::isnormal)(-t), false);
+ }
+ else
+ {
+ std::cout << "Signaling NaN's not tested" << std::endl;
+ }
+#endif
+}
+
+int main()
+{
+ BOOST_MATH_CONTROL_FP;
+ // start by printing some information:
+#ifdef isnan
+ std::cout << "Platform has isnan macro." << std::endl;
+#endif
+#ifdef fpclassify
+ std::cout << "Platform has fpclassify macro." << std::endl;
+#endif
+#ifdef BOOST_HAS_FPCLASSIFY
+ std::cout << "Platform has FP_NORMAL macro." << std::endl;
+#endif
+ std::cout << "FP_ZERO: " << (int)FP_ZERO << std::endl;
+ std::cout << "FP_NORMAL: " << (int)FP_NORMAL << std::endl;
+ std::cout << "FP_INFINITE: " << (int)FP_INFINITE << std::endl;
+ std::cout << "FP_NAN: " << (int)FP_NAN << std::endl;
+ std::cout << "FP_SUBNORMAL: " << (int)FP_SUBNORMAL << std::endl;
+
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#endif
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_log.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_log.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,257 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFR_50
+# define TEST_MPFI_50
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#ifdef TEST_MPFR_50
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#ifdef TEST_MPFI_50
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 101> data =
+ {{
+ "-2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806",
+ "10.355073440919378699690477472036470469315794905372650461119520557405966250191554948388847794306923706128373152780234988638443954821327953543032075228882306893901540038156503265416950932549208174713640840670002321534598356631953006304821201484830902632165858733357596733427094375150860310219829690440417223992885533566388118595248523193740778052893647271700612136670114224280374211626787106078693643289",
+ "11.741365414719872359995630593475834957852130639032528348910839621576752378207582766840832626901446337859064321328454096088656817987112409176281442608184950888327275070356290649885618053367245169005379545357345645235094776018156840041023694466493107510640907700621694994008944652785168884717808235919056023540605910031676977750466679901495978099025342154131430098841939052890393197699093697421676686108",
+ "12.552295188839391064403078983058501313786961042419051509346988474726615643710688192053158471717695991904853941837387256340073310064341282022830248452137946273986542713154937759697687656073485311102053666502633006429446632794099471395918827441203897096147814416727830805903830888831170139661499031930347916453836121200110772307492771615813954882033814741470466415076136175748560866462690250372712624427",
+ "13.12765917900902322346243585913156826327069465639834188399662474212182724479008698347907678965083909936781641397385483495362268256360763444317213586059490467781653518008717313901614800566992248144716374322429987750723867821114358979404591879648104388637035609754399283274014767545593886580941165664957384975221949645055255781874944374229417864853289321901220692566918330756199433299461690335766708584",
+ "13.573946210017730027239177097297058651455670148127333215055495986565964988037166389618503523561570994165268599045375753512400565200059790703280760252213714757212213525833556727462647729566258301490115414864748436290794191111843775262434063842232241185107471214859854864335150887423144285468856056851239653315249148749701603523173627966758652109489308872414194066451074827802642589890222384815709071028",
+ "13.938589284701101831675037903832444894846690407420628610481163937380536465305805316181768586604603341197033655576371082304146219991693253987043452241307224478718013872459287813264283001906622959681872321576087143975972033651747378310838673897181549722528073649569290162541997276292708638316653324605571398691171391912961431088832002969546541039753774950645926800096854799942237644831671997679785482847",
+ "14.246890620897408672445451566098178524763429935510610216690355229695078778430708804421870639655370744549370273426124295240527401708361100923871708589722651960428863955835558634640426846383161118062310502176054546468600516588908689567134867002953229862887953032595529925511011383644740837050282379317993152702704798000312156694502691021267028423979454580574052732764336948692001989411724963233511159783",
+ "14.51395339092117324610526432755496036199337959182144260442491096061930765841595850793460014941610881052330595683873016973224744403781498772061971443926277312865243350174522677227134957935047605429941424114476598970997223505479765426888886686275495180653025817201214478249415383537946915840293549927935267010481189550187682053892807264533011114305883442850485847010726074555176479027986850883182954118",
+ "14.749519451795537716462643672888549370666057639128212044001868590062813335472483708120056955187220713486931180221186191741860718823347399129280491176499608998857949407351247432513825095161942372289203657231256344909997480732110798704027258108845584594081552703009126596026870753341888414903979390651641367952487019992866762344920748102417282166652161104367292712971759633790964534907923779335451109079",
+ "14.960240475644662390024535772058360495972689995692264619118050620984863397335883147741001175137837088856196207660064061839685086120444324885420172384357780225067863432546453923434326358834374021700709153791633034800554630092122384413882780201869241166113270104158152592921242256738530713688528178980864650875690860545577283508963373084295388766350046816560200649161822618828666606722223620871032632611",
+ "15.150860829728925816270269964092673433542841210964830162793225770535551518840933315190406262273098573795238063523955485390896001670839635976377071048140363687808579387495186737492639543519534774851635101169579614712607935494886581440494071142193798729857001548284675533558490478467589884332536443679208006567281631805562767928329937083844501800478013385969649342207304490375728237042482944784544838254",
+ "15.324883579506436493570233597448883519693351814374549397498489035148221882270042436654099306811313261346823941672888447313628931256927773946985727814886420570056552118783468127543676769633344136209500636666830026098080195180498059221494203817961212365532443050015541947762494604799890429565189588245725920948145579035449699519788465993549043152027361890729572024195346130030456992216388648768722394836",
+ "15.484968991583560712862164152602532972505596882865402498065644250737301955125596006515274461619204302558285733320299957799185995441209009451408808376560872924206710117585718578727591708553957297729203457443101522435265312291388453827953066056871634785359329503731609907767433693085428240202927311226115616775436485821324503901092891486358733365244513748729928672060637178808283856096451123227237766837",
+ "15.633184933296400322886411216914351313442169047575854720677392808712745585778888867637029115450088924031428350724038141381219620588274493330817678181565157141965018413952386880843987389414299029950277357119925470077396582940505069596480801954154029286187951921181728705116872415271634077604874063371227144842898712603028462623610688275714711124501733417572553751110494225479183571648948845731888607993",
+ "15.771170674177108994750017157264759379388540187789301748807798065200414118407271774235601089093934343495795521812477515931432709195503245641975701807702026215615357450518151317247119115864533992757135781852491298348627270712291588580073932563653614422839620206266586292520948221873093053975823776289996754936187304352159896156876771015468496811587576227636095095473566772184717633945339405330371627545",
+ "15.900247714739125237305645451417508966665591345786220672552302840334525160137723176098165167253830541655084109190400464710649206788771240950251243759258268060695212680017248831015574286848979270728739089100870231114250075432989803029255029492399141798408644860336753530942734586654467728627658977642688053752033223720047083446705808444218983029996407752310091763448795485193086044050699179075227514085",
+ "16.021496956952197922992283502641894579962626483154818954043789565712934054541190510263229676242727892630672492409948339732534439120465067507199758379167701667321617794907607307728874859663168072318224068053703928672394393376652024298292046951118253912008558176064907492479298408285769067404165601995001682495873893492451380569168665052480684672167775365328449822100602627386235888117607629689989295358",
+ "16.135813783442291449575041100809653925479234724736343542177079039059170241908162244448865517513646317913575323823536275208044355623776985732503939829900060864487127004364547143183319169525031486430688761890355067541570726092642869160866842639424318480923069734468346837396224375681293323049896437786794370196393419740684520457519876260717581058279975484300455393801884203407282602155622048760192869731",
+ "16.243948224975912162101874242338089698927747514172297963501304802721456885123447742525917146000081948350317670558217990170315910524955950657647628011646020228669505156094231753926456488583104510177838897523717492728937537629972877557426292386450904986250829454391823373783104867874948543639133365724217397301073161382317429508046689262594057712721480553629716238053162259132557499326959178271755311819",
+ "16.346534812891312020017737390565972522861639520956794183631801030677318559517349930264816297286373068267542772472219372292428845683416042271115312027071601889325060155482892443418582095080544516697369324049179348198348320350032057951783059238791085449471373733253488008998200818236407442435705194113745206455080467406424910471012832247972967952311217374959559350158619575075500673005632848486334892081",
+ "16.444115140490340128500589643685615592593325439192231430163649023292793816677629077048173396104592590442505550803932707806677495894373323443853064668488945973357469342360809555842080876327526869093152265593359032627507962690981132695345232937664935403696772586286371082469152648334224734697834132478315542287352614722743239776066558016553826776123247656549922477370984130115175375533899599151832866777",
+ "16.537155171118865136534989063582757364253199496897225305411818162632163606557745471767961160436879104964882723479325928591604518246962419687548390063992529356693298596378658322800277364077966826234091623459656551097008920549618056923279473982070326894236928331513682937597704431571923632859325944958271156630648510192786810276479282782233678225160061893949554276261365074478039201200141096034185340788",
+ "16.626058695701082390621404187251773798561764113151150041596109882112467488919141098521165822165293765039118029510544981683905860141438867442019067534265891760023149100317968826679154566584457042877767867250357368225093921585968539417839705388349710086788853906351301543791493808667435475597486845630653110450254081800953162013336880338884388603160347478448669890791767227275369657780841518987171046251",
+ "16.711177924047687436041681081297469757517395732698719962499711839818824068470368594816509809165130772248099176990649818696451892735033114399817499272685517472929769530848678764490613732856699010061350335113220658748043901782349324603111802594973838523650919828685995473213566914734286172266839140529583990377667556754261878256224596588519392559788652514828861263680954096492024398529162625680677258884",
+ "16.792821912654942574589969785414406627855177803111176492774370259331640542125643510644899208865670120639893723574191986313708664152776559897034386961403215067476041927571306948209653637016541256814370701598681758297129259567548154765775910932763810160923332344469835976310776610418278334876476195529920021337399751846302536974621623453741347064741080510495703994896565552519309503521053051550623483165",
+ "16.871263338577273117049933407315211807184894736082799946337588399915643695388836578819581481279897851015095335198849942961931601540668917787952832251688896660707943869197097893837964754891796695592066084995854170120209827918603483811654385230282025426754327077293929504883381435192439219366582495078959939830875435944938000044089717015334115741229281828493468876793032191535756728196375330663180727281",
+ "16.946743994200631806033476403925371852051109645526740171061759524387799979304956484613870531865187139791227191840781754383935422487885452369507952721547705027535773654885832127821314459521240798742974634464887793874048016231828535132695506414037947185201173465247385982934992490469404967587724592554548395276895353595409898385619478502390678687463962622836411208115179925881515699871702165077675857036",
+ "17.019479282236065828727803356580529388797042464710975507911282243104151862598751845439937481303609237769338953879291798328663979939210753132559510492288100384177867237190989151135211416672909332732482371326996189543048703303285313799031214641216166381411885795576234361808712082618702464622338883787915216150436372783047860816587095332458688921705641277515576461385290501276378977328383137813013202605",
+ "17.089661921583428533920885090473894674921519340994685086552627218992626938319872359613748323826158856027837200411438668460410538403836237956276065714403575420148736981655027235218177614075251822388622713232585428029969533906061654341819894513492491624632974192525592636008127939368987600981961744622054023981036109865947530952316809705151315101400446930619393266624895135955182323721805890693892489067",
+ "17.157465024686670167940702199808038440453826682770881229464136716214305217066325160993039686330328188786987064692354236198505670650108871009195717920051441546822338399371747349503874711833721760676087218038457960626001087951737722106836691584985009357268276351001658789309901363541541142239028890280836555429745898638761562947010206765922958485242984359891337645169887782296197402533921841201821435322",
+ "17.223044670108153088406971612680579462250390145455205711423224535559905829397735171751863831903325186673310251936245608147861310604382786127429364616442074955520795624793164764110780962566943990430036624945190166480864873260501647262851147587875798742974124100786387378932173276365815649310057053480347330487890156980245097594505867694166591312545929965230291418670445516669557156689966248314016354044",
+ "17.286542066533530981819924644041556546839394128235306235416269038138274222049809140847092268150839206354707638710275634022335650694777681817694798501418812448888688173373947001904190184008892957674606496333161081431327984331509197841574297574788702287443502123119313877415278877304866456565176360773848651195816021879148876985173267277031263646152871873014441183590471141901167533828621963866651938359",
+ "17.348085383681499172852340212837946913681349503319833895379599364916346996678774115472356552172467728498192423708290186696353892633802275272186862935888864564436104200250553583802585096479988444811879111645109656880728153108808638274341978968354895482288870990505393394330150686285205409461910256828313237800771316014620729111128197408712519655232673726993167731090657784157432284844410962540306871812",
+ "17.407791309811451413991402934776587727274692304168979758129844486195147501475844430031581045491342304862802756719012802717759227086944920237646742600183730387935914237410099970497154963215669635477250725760034883360834134873909027143784365748082991457136260982918509631214089379283854791699127985575276751950639814381413022404340898037317031344649130788109442934133748721229332612763230675387867060167",
+ "17.465766383402858316731575043043871754932551869660069657366289253587674381952187793692876332186097637634087898052217367730831337525450143144735163993701984235559102178727289467801811444923511321849112339058962832869205150513708620081533545907748750224381419445198858131583714181742840318906599828122743306582674187117835956409356596804579817623463035229848008072471150460106195548408352347746742847561",
+ "17.522108137193897711249955720342223562404817078270264273905715197834637314555104238731504974899534359198079882854402652102198388084110484760619705504323190957788898675675472299192322756141627162323541713415099172067523105704142354142286507565791349450889277448545966302507723270185283899864397011417078910276215036241179611950839739662625626455044878609357243901835302874736030320059872773022839076998",
+ "17.576906085439158795399613853863097303860835367703382634217979275105020336999327656009595436350031662565840865227976662242781789960872250051998481804897622287887086985238091438506085053631982050247194140738539987379268409303934286420729479452837709138518786355198810012076646196653084861659638299340083440855659993917810136693887499673110592919880225890667600561450738971059427382635508450091570097859",
+ "17.630242579482716539323837128846626753956194314343736063283695118187974605321998609676585457221722093540967455603842712855190915316171267768551204188316976169082878976713161041600921069589708836776259260899700342542761959107817464710887483018031112156977258240064220687983570300417350906046032596793701224117336432612122346984445322343505811317200044404325245524587348610225714892960184376194438742903",
+ "17.682193552177642930469311075041540632454794315173833851548924954045201903733019976720709429894183669091622069055829864963447674638381460850277690319942206492046322144914184638283615681017449686491773099947404077379395563267125512703092895031616346899622091168324459335139948282486097513426616067084251033517363717148785943762510534333490466778398817865864252996839848563898275763467374270388303474531",
+ "17.732829168042892302590066897013224260526349617442757064898532827287653373154374250085440081248759495538523122114463120786358068331952209807684385821625688206899889794184992102701935895298679767555036775735985597715341448247873700759325978422207409167388561946150223833135803435044691082980471455256218231653367433009869225710546713847446382266908465706428817510556416763430212167661925983678317689559",
+ "17.782214393127773091907390576928321922818609345162469668288248606737448584265787291899115365824350981071781548351963523796289812496283393676088371363622146243894946956855177324929267339605228930435844698103907214217720043808120931206339233299438914243909015437719067832873971853535761149326746352476616918607787268605165583917095714007024394600276277913067861955743579281638075879563801550521361400101",
+ "17.830409496196797333256263738087407756305793204876426547866274663003566432384680240879632999625725708300091127739268764655234592101254713785942646078437589939733647676861210608435791914827456291767449764007558390614584486670558546409061408823289149666666818024559557140308187730981247373784664587280435856629009596287509432264978977660915985852234235063815941899607957940727152099219426925372856581083",
+ "17.877470490934232288852811743259662703350866532641876235327240424382634438025700311951299570329496669487738366928514133455422447732866797861412283887178678146519925852345567722230587799483201967913067391020608007825990349366451164476805546339769760220805534987675878347990806759564468339408725207557557011408435539499579334714364702076041798486860978860009676392441269681660376828431489832998763783258",
+ "17.923449527306267869903426070004616586122783729793624019886904269965872168854615384174781325332961537402467089754136043237824345234828497017675462013908498436584882632257634259557543282397560432131425953734774375224901224027834174376390115551172850840545446370919691863863162138436779349056977625063368614038926314141157758995633570593909444840439875814859101692914284555504462737973961801589348562421",
+ "17.968395238938123096275003449517382823058653367901994410453731720353712579214128295617333869516953666517153266184450063833611730223713367177888956257642697863674682557764474491249664869634869467450632518845976225157445436929203774807794710993549169067538180609230496568688211520386012533845072853251411123534511690847284034061828924979836346301147669327210040586682352268581578885354613616677879192008",
+ "18.012353052308072938755867264876761138384940766536728123219303502872235608220456049765985905816906980541771912193578395286636524639567005562096644259687421270993689984646487799760867557580378976263785987858028882916593402367582926712749625025395229096162602944095765767003293442756802839571379406129666952518296572179431801499117577022831811590456125422748646995266409456422225586206021840322692382857",
+ "18.055365462686668331727160748231009519565746647193730385530909331597852334952578425145279427250887034166658709337134491235522678908221793937220809954557808901763389178392831492051282059480629151432246720826269576988663211852119754955967569929315382922357289706041278636253185833298598511399638105081736687620508948263244525471222947804257016135464845038301780535378180021273347494295813215232102999649",
+ "18.097472281022918092839876166164329437973263728374666387409900363304423095913608188979786368122872685324785740303523457754035383735336598870745063200445496969465305638435393742921093080855121166597064087151732410717510776813994536867846471600876935467557239720329955864393503091522335217308468551898804050931884864074974187930869095426636541733964836470414482229854405996155347764481217202728996408614",
+ "18.138710855372574931023279730094645378686287349356676919424498204049762635832652703081045863264164065707461503608812437952726945167389204858679677978907656542126675434222486013764292798698974541262372833651362936600851261171024940667498778746253799866490414715539561648775214507198558445051277115507846030240001071535504590488750762226492938922487331198045407471864288427126708589240674067562104543957",
+ "18.179116269955114571377487963612019905652085216126618591531831326851631273535837433851652060806307371522002942828348086254592323263632131183438294055667010855067061587674644272103122258118876651912890486407250279668447142712674562099014392095571206458285314302909409592642841502932705416119595372330139185232535836986175505626716905102551635720868328845059106716603941432470493828723765413424721976223",
+ "18.218721524498032554193215680552580137491683034589488437319060302272592206508827557611431375182704552154497537575444766904464774327453349109721410510507102426285778233008253433639863695380913463970388673098705619991229471182831382051550803100625573309055088036785775202381313835883262855970305798706681563291905495590616431781211404743717763365778127660253455212146746026811363929209719531660648504082",
+ "18.25755769616561915104320634671335949819923250838247367135480870103002754055972575277617781066800125225275977232426410882766773084485826986957597205108505829168630501177398318211279559799848433615486396320080576991739828304477785924273653352846964138446264644904849824507615174857436913763769835408524950658917536946876135419383532210821743200063786350760207420579200676223678007228393958258720083932",
+ "18.295654086063005239961930900603578763176327716162022442528659338478895027684612801134718048445578078864512023650622689532231640803798279071247213212940626166721703242773412064293396910008891332614727995930235839898502680907757808722725076622433926254807390507349193089487065273859422711581690536923283818694448490391002663699373577479984089586448960986922914070154319198856799480586814831572660049059",
+ "18.333038352045729366070360053860247416881993539906325936417001019639836810235521744851872438194534698737793818113182566661284551265375926400252096198917463166081789346386579278436021220544269108158036360716265068681920333271695665204550361645092770414267870574761534021576748772414710332296686656677922105572480136623006540318287771752403257225484193416375374630295739694584359181669584822144217946089",
+ "18.369736629342788833545154829965612197972030184654204521583836723612431388284128470120361520079152081604731214550025504583810749093225662462708297813392905679444268263153178673045591535099590243771860299493196201337328463166245762316637806913270164277457975112426005180292583426915918675383435395598215385153247994877265654873384456838948090969392401887506081626510459117637684719849016393221041720966",
+ "18.405773640310900146133080088261946202976690317466294344672811637024889157611521518848738302063682147953709444704912322724498748005402509152494514057803322060491136048741666988817114427555111210963923209356023892097003244960804568051496345885676927757469123572277620624446804627512970828422692616021227425852662243212443997074981005547833762050079432581680067106949297497692327125068990077901522226957",
+ "18.441172794474399698182030074721740031645602552534420544604120821167467838337449892992771747357276011553142091110875268371883702350672621604391781630952792517951394285585851496086739721764180588422789463043949353454011941863375479066641639870318143091000764755109263681792932398864353035859720611512874738125344871434992639512151401272538083058455878170262156351968871089395179837425273523581266914745",
+ "18.47595627986464597709414934346663732189241252367556916529377819718435871713823800089497791390570676646849082185155969226893554048129639509679051447135722658187695404706235925157146425104283059827944524324932672824661552843990966903508121362067629390223781365207266998003720499319458536728358620338853555386727837290179454339519141841532839938596761951045619471589862830891354308681626977577420483375",
+ "18.510145146551442627414905806735913567003712650812295077443330836708330498077617580007887630002806998527489958357928811323358164284670780912045286972377274734553167811143903532773133805470585887337986897779623231393980154689146471547983633489101760043708991315746940120025902341173853793429617026275691215584867628750464940410772709161351434979639911956946479201132978330304672548030931942250342827294",
+ "18.54375938315397840777373858913955248239941847920328667581513228848814216209238117867823746808674105485439472281080229047484288277191323337476914908731578203036561093352990739771860442165984753982600021729206737097284114048195126812337180690412756158211962923840645830361425158816448002373708570542607328640280411811505735178290827333249222248570577590327817428193141575383830773736064963674654660788",
+ "18.576817987027647186937851258336640937668818840595786321214115700990580993937301728456982569596955182509352640277092493549853424411966677818012248002654715239100874590037738307469713048325570874520232570867464224788639656453937494219294174471955373301736672685268384577575584576576899158917424074434177408506824723823546414342198182263466224674661649356568188397290822447447185825387180657594093708751",
+ "18.609339028743835443520046961477709286939310853034399826433866146117641838882532805452792636721283076369348347017617290496488517658040508081002292362699460963188796636919359563770588812590411785597112719721757265655201721601867128800954165396591923271771796713301912904158675092529178443570927414653982088273331584295588174225100793199329706639345162173054259175639620324704962515101988919574683797276",
+ "18.641339711410638424722499047013449967887089663871032284600678326435618587023360889502435665997102476809993062067289899429492640057255987173558009597289702007868879986681400023832856533473923548707096670227832737339287908558274044368146372966754230837592655179154123960009424338853507410779228164259856997555111697864450713171508666161000757176178710802248263025585993364498172063037657704404452535503",
+ "18.672836425322050368486113163967894536152542145032787472779137579977190277914128508177973702344749215422866489255932015284354044054928123475206880037062819389112504714106095639732288437854189846017324055713142277768438434138800721340366655917386856186887417022606078557020556496094324427190459240576788558291551699271849591355480496655647717244614207638067307680084952591605729876523430439516165337322",
+ "18.703844798370253311556748128890196309240890383998201893987314003630502067675284072677315790931434159739316058047067634433988116165753705089479010402482501330164866808933095532965233351834719435836698735379881853925522288987702030512098787246242665060494288818182785084700362957305908534097737840396555283267034806128689898134337131513408714563437722088348519474128730338455257510535561818243515295123",
+ "18.734379742609172948695846511449581634565683544125106511957075355113091757584835040550323433523983103087395353257534872811737536865777209110758107808331702363999663358869296693765232701087487872606287651215678117982769333263424530048349886338191672000649776344735688777038908317935895545479771750928675097454702913124841960320021274672197296187088995346243239131294305233657221950357770047779041168948",
+ "18.764455497316603659697964676682244441947566581055018250974850982088974686459881812049067093753928158863642280317022246479491132048354932411165733919156970301233277913734990931824860100667882748928084034147822613522025142522120240087012670818451468498896073922908905983528384054249374818979283244638542138214163225714979901542761366770616662189716515808719831023436094002277345660650710470976214503432",
+ "18.794085668866182740204823781307373749785233327862921970091261536522099678420128101122831261188800902247301052497120590553831148856384993334702795779266689462427228385943774192181671843132138022659399715350825905060669445319905454600530058604054055511420322690455781203696250448217551628254838303648547201462249630753150471851402187751539728462449395082445265630322991793425964521071134426892761087686",
+ "18.82328326768867946516209716586995768024335839807194833176766112965627616145648993732694510000805245875257813926012495009414082293067923695618654400188454857448056930551075037023425200611189368317293241290052197494133870263300149851324237139757643613913686228545143709137199633423670636305032456696459165988858650794045361585281861601603030153235699981659298052458840307661288883784791255308752353561",
+ "18.852060742573912900871064645288864648159675216435305629278797553184221367993840166607573470069267053513735624040087819326415506386854437946403720812228284865900153407303755694944652909440890918000505344963394853809579466102995490946923404655914747241389209313457700354163158136320973199396402856713949800424774426208733366034958384913000571799639761622099679737940788622933241370717844146251711932128",
+ "18.880430012539655701065719740012642650514689061888847292472446317260576484360479108374318422256748212928421929786176000015552730066213309405093412502424231235041703778572229968621812094224953783751727048234887878221529796434400738059144871066371011576734445290684672478932371976691435646196856591582073749970279840730554499319160664075936135140351358832332481792115613668240634181554442075595951874232",
+ "18.908402496471717232311467781165733233171140941896760455553034330908971709296619686804159498334964006649119069488646486948675866965781697617293443993292894960273992948681816600748607581132058645469709895004815813032481899164996133398853203604094641445335770040577643758444125343960451089873183667195183097301272165939070294009329717796749663916249651314647264543061678516229808974080105230884519025421",
+ "18.935989140719681524355183827184271883117018713616424044375161718824065979531438908152091359516789236304421957752893530968312896089478807820652680723918795442056690234785900341761515097938048245785367391810983836804772037480360220145546699221066508593371664219887047644628393373836620900288539062774663891696384999640649150431067240627749142322666676970274474792135970231868616050929898319819448939034",
+ "18.963200444815204167404888798469665227431788358892299847438551435971105813566329353339851076750530262901184430318825907802984559086828099838800823075902608236275943927671387049630228757166718632225359114181378374769186216486342164672374303171089906235756037703334480067642792992542669516647312965086899057259968955796081732571906843773036664256360263051447703790357359429377002031207739864979999279347",
+ "18.990046485464088033353325238570094871523592746407402454864447659438418650897352188003827603659585905257296788261872980663015351591030286798753545075312871886708540373690732957230479307213846083134185408782477823043603415914158563765104431367119681516469558190435321626296408405773925785846797696565762444462069369032104851518168840362055319574446706630124442642806832354006488607879109906061011225994",
+ "19.016536938949335590921908878972071081608578803308502271146163132935001206102423418117835863551157682291011036313549071538079474102791095379250735204641651869626255407971202952320707788423726057706822543117840676308428340234652209177652929619836857962138281947043694787969753375808877555756525156889419987622193160096718082756877689454214937644538436622120458515758071395625444960838247998451767464267",
+ "19.042681102069820040323211057777714109150558076228575985448688497208727928412122242888431932498284067180966108960090928128416538326586163291672353531766027111567123306015724614143020205136706498507055346813817986209642505418179828757157587146552894936306186818734849750397304488535715134906592464324381660408650130874094490704788761416060096501351661608424222204094369103147551037672603814369634649173",
+ "19.068487911727958175697030382906549671323284692477975980792892280404995909757933182996822232452584791269433004172376138676679805214029937405307084300414313959313789831600985178255638111559270519906326622715617717964168412002699242926437873012736620082535900009120622005729068876661407020205549742970102634687260159098231611555026386636952356914915597529253373429394903680674472796958663494038067669179",
+ "19.093965963269656159901801532857652686731313095114787279282350143184060615248880952958892345276101741792959203039945279273255821413683057071718873479055914318955623580559627285483449590741119271240498698177664589148961791164562328382134513604070535948997556425774535241433839196056647337630745324677877037589790564832932809741759428622931327986353687891898499439791429917840804474313864245639140963876",
+ "19.119123527670705331793258647026174473061813878914781070641605073424527485626683566355878191198143709838509389044950724156590593262994411423265514055870555330957166471517671117689943118929441254707396532385048466111853801352620946858612646592880180562600210076019427990165200479741063391057955342589569972650353707736819649707138135073772494722116787681314798945037658461538374603477221825614061123586",
+ "19.143968567655614969812922707872905228504499895574401195919290684664632292543319151929670686365568982588326143748358606442800755409560708661213139514248609009613770051771501624762852458893105259920477327438788243371302722213272226600736522283567127277667156871770413468147870394343816746792945999572244176333552811712447483231232773171106511438260175071145300046115843401710072061507331123043607901766",
+ "19.168508752827482780609154136923082745746771414212427034681109262302000645968087085215520638009496537393752178754873475983837687377025695010556483691979309217953419255985001727184619660158435191823702770674175581797631578786818852604111682506864006199186805540809913091091561814668081471402749434233431033452441548505582706019452955567976154397574205270457372773342241946969622998755580434262211071558",
+ "19.192751473880834042563713562225153433521577940186973776803866639536641104273721851582869330116346851241224039623128541122821371810756925681002641212419779923811384320279466454221232217629041792882431116499214977303106306157966687858071257893713340199820635963233697984370035461108601863346164084264967404520613456100656965925875472210769471793070984755357524002396981276686789870757739219539841324669",
+ "19.216703855963329593992083348877341510356872855419154524286060224198192164950344042194924570763041352943159776496534086655621090662648765929073480563926604513272233491262353914647091955902924297702861031248271549558718609763974479507490837350364617085882753391176792131259310397149374028556893735115741447201974608383790314541221313482249282941830681505989160209022143487123591182161037084387107577471",
+ "19.240372771246783136336288622974117018573581443774444767997147210768023102387819846722491865244820295698055584478151667485670300985795814036287612086238394489310685917822308982062485897587424683040075624404469719368214374255580054164790522993745386564072906888203344350441788631572056395846260169628655731587443716443908470481602481327796867951175756539602824534024677208143458306390998693538144276002",
+ "19.263764850762979509196317705761686108092922892356892210254799469999751475179529646750512177469718303426094538082717842694993912366018532429385996195100165328675330327321101942399890523238950583083919577089467043577581159099371618262297126999910295820866611740582812686480215151994304295620401944519281853807987442610790122820927006439539980791908595120476521299636624843377591628005484740938263373595",
+ "19.286886495555294522450851525927489255646333848651043717882790718796769943763203547772413744395083720600670009266257171342692898145198064660758379840502214228374875168690401725272168814130387964227940171355345107459707413634435078254467165459318134413588306046635342334572072865760417877208230914828250259039270224031775041480686581149991980042698893384296012208438178584526032640636530664689171174514",
+ "19.309743887193036513569909003754932688390195189494409126081957694707453295769725463252527373922995550848707616892717734716346726926003376949988744940329952938435722400261306789658518736487435455592323288866363564460056999876237001095092480820045715217327131479089102764865100373961878408215166685028270522348153253852064527393390794401890890932406298166622224431486187051653736399833197687524233000392",
+ "19.332342997691718269365647851051829244300572144237799985690236148794296859647334840581772744190077146167636205171422529047782401411481872480699008041273574144705390909628455554205882856537701103044535844002047328262877230706418721410147702147287802942241134713881576962004492246225067150128745210304021219616585555420191917418786300056829952680702638022710700076784220324428140020802898115083347702904",
+ "19.354689598879088211883278917315015191222443867565368209411861608347893184500809153071123456883339348988675265028178228103174790923741638364554293709103213239495123865898742141584076941660965692453426480770865774436380303703020587851939728834028918714275983773159730132531253761589283704592841895713231304417993106469276962707965968679020792759185611101812841427933459395519877074670185732532077876915",
+ "19.376789271243668798743209719830951710660724013826759987563467708214368337563307069810449676142525612003499201086112645501159094078378318648014400550345870757023544381773094826620272453238529286555419097429861755219673554476395943490245768513403194721941361801918811127988057063915654267554707302094460700078255016831241731287084620030531370389406858605301314913503432729894455360413554796057743624785",
+ "19.398647412299738536733101983020344760416543000933452586938357216391679714568872063480206587627849607725892049860100424409512218327903976557192129920072602449053963631370720893361294311430877864798057636106390383386608343478253049758287190639090148001663846660919016228401517981946486814580501445191763231914170223651871543954569563229752867364010807484149328122287932691728836607206296504503654291916",
+ "19.420269244500125639443026886412358511499173347101740173789245348545649777799992933455717128782979425999232096035698012165274922488616903998818326535687811364645463339885951676665882203155018792792505473796600843314336576346118972683035247786115152970665197263535031125663311669153219106967873840911780618890220192918885584791820817380351857621444438732170662912318105800373867459654881916254806601924",
+ "19.441659822725832764853886827062860938003360575287073851586808019473777348197590834815623551815029267586554639358825375063360984210103069003729612683914916394217674289812465439813541316938870999354861402160375582810342455043995730819816948505547453029096197833928688735935982538915244747599958654970407704104602569366784225221531104839626781845870092648147888203880688567605208831444945817857785153427",
+ "19.462824041379362514202453738329145059871795167945778128620896576209292571177865023083134487492542931078517939464890630420523665550799939651548618906955780515811541533057671943504991862669514142328738958049297858093270685582461594213632344682911288013670395835728596839923778216755784200501989248577166652556656745561631320914185098036550279972269808563352717494278133064808018424486494613581670904697",
+ "19.483766641106643718481178395114340475919752681994355643610181441860832131581914604665304968112958314746911243491535376957183544987386808635080341126118126364286470448001964590403332961518317007864293940732767763315935539659300785943459751426720740528037173390794501709108627539732588206226415399674048608843262175783293190807110169521287571898125826758063922707869247389042070537305271065057452360137",
+ "19.504492215170652185153425611551614568097792837031617515988255748353971463776213613651972980845739009653411602074763823583486335276886222365741099356087975815479321535979397651959714956358141934399110351847826398926624666313434326948757230737160647513320407575743953348133831681915668076630219831345596329489041495050445409516995558844346940248424949708046529076568535423815692145534030368195098701895",
+ "19.52500521549816144973266072401605164852396136071234571245810367391072812166019661923143396972741343266046339927362413412251126099193801965681827360699083448218860273549526903661234475357554150017778848244185893299525191263899191588797634058235164494448438674653809951435022502560679429105527325418829543863756825670476364629140951247734867887985343458291386040322597855003211338820555010939867273248",
+ "19.545309958419535630089123088329455125777373731767323301911891787605488456921558805681207304272616222501167615837357366396904683096528060072684210523189673108467018417135186800678628444987751206147451054525963839562634340820804697604369657105969423354842149829173951943549166420900709500398322624130365195674097282456714104812933002700523506427441210494461469512180706693823193924457440917371176532034",
+ "19.565410630120075532420489068555321524954362381908007338302983473268528473151341321768804731192210840056455228388636731122203200610869021021871133154865620432257415783302175345843898977949742849569372169004904667621738405749986270376895267386643049526766451459390277406632576412790748533372863644721976845168460840162066672290292749672668879524315410824251032084115058493720402881895485689493165441193",
+ }};
+
+ T pi = static_cast<T>("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609");
+ T tenth = 1;
+ tenth /= 10;
+ T logten = log(T(10));
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ T val = boost::multiprecision::log(tenth + pi * (100 * k) * (100 * k));
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+
+ val = boost::multiprecision::log(1 / (tenth + pi * (100 * k) * (100 * k)));
+ e = relative_error(val, T(-T(data[k])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+
+ val = boost::multiprecision::log10(tenth + pi * (100 * k) * (100 * k));
+ e = relative_error(val, T(T(data[k]) / logten));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+
+ val = boost::multiprecision::log10(1 / (tenth + pi * (100 * k) * (100 * k)));
+ e = relative_error(val, T(-T(data[k]) / logten));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 20);
+#else
+ BOOST_TEST(max_err < 10);
+#endif
+ BOOST_TEST(log(T(1)) == 0);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_pow.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_pow.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,848 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+//# define TEST_MPF
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFR_50
+# define TEST_MPFI_50
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ static const boost::array<boost::array<const char*, 3>, 702> data =
+ {{
+ {{ "9.85291419463953934609889984130859375e4", "8.4167086266170372255146503448486328125e2", "8.66781019918879108354226292713799369912745098619466567318041467361236175866573114777000418440761829061824953361563557580935951901405814080757565313129904800947783606850513184296612628910656615168927761935861462770335134108408073175949783551491164949747086136599355880600420490275164555515512645668845e4202" }},
+ {{ "1.652914355109703592461301013827323913574218750e1", "4.936528947862250937816952500725165009498596191406250e-2", "1.14852190138491736562279120519668390081141778746743826681517181158751264571350304943298501284647564489716027476004029804110782430201351750715968215799574772058637701195873519618784612525011353325208230847515250406858209757415407239793739704829281917272032288615255140733409015874140869835291148547238" }},
+ {{ "2.95673953882856110908505797851830720901489257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.3091550971799097169423475861549377441406250e2", "9.16137091634529046709182958669115589757019722367818747705232600776240821857227718551873067599347313641575272826830417174591636547915061517391300131065931465784194067711359196329143298499263726513131614582697830908424187934868152998838921216586737465291051289708299364409624364999366486746226077050764e249" }},
+ {{ "6.085814876798215132883140832120716368081048130989074707031250e-5", "7.65778516457987279864028096199035644531250e2", "5.27056224622668410282266686919173718609676411389459024877282902746284033954589536288634973757568176464096389580016576960309487231057438455595655805167665817497028295657665023126747065443986739792258870082022889306909488139458069146748438042701949551909468708242176394539901613782225328586614222105675e-3229" }},
+ {{ "2.722646144868545725614694674732163548469543457031250e-1", "4.8695443455590336004346063702996616484597325325012207031250e-4", "9.99366682241962146368589809577120011723198308450433185299366732500677873637460155970547267099719914327909694930518383012498797681761846242526638144261306834523078708261122471803832490341687603813336927181436827534082878781252668704774445437548691251936499670077735883150461534069270846997649139259014e-1" }},
+ {{ "1.15866069758449596882599053060403093695640563964843750e-1", "4.91253262757665787319183436920866370201110839843750e-1", "3.46868982488456565751167443881314840659743514173491612010770748877346398177489343237604160804413931931718223750314831998907846386274396179552445359933868165880372381338724806279781831953896898649659594755834925976964179275873971118494605322798850925802574178528777014182338769959249415096934378557388e-1" }},
+ {{ "4.72825938314130529761314392089843750e5", "1.228931327397812367507867747917771339416503906250e1", "5.47245157077269889091085696140795527282280334677569169487973419233796250189843816560261965111196061138868370890204338231535198008079068304184762140493830719955323588998399173073261634891767823614143691840392792367527470000847416054709559319143615840412839768396194451923527439592939735228732869467965e69" }},
+ {{ "1.2955657225533417658880352973937988281250e4", "1.81521083299418428680382930906489491462707519531250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.91729899451736210436889587963352494969987265352294254442114149825297350300933403119961677078224257818567229354512108221647637427508041941647518586565006416113534560289731038664091154857692367872604020422463457596747145816854139701847749519264660326361171185139298113322096978245544144264234481020815e7" }},
+ {{ "1.7430590914513759344117715954780578613281250e3", "1.5572745970949500304847390452778199687600135803222656250e-2", "1.12324923143821767715038683964417533829057341785931080679952341815408539775130405061465897612861320390765996927155081774925717154208894105154455487856335006846587865128269477586014136390788140643457017602926503892493119037260205017744346004538379559837051387829449807650507431889923695496342461088404" }},
+ {{ "5.947230963297863581829005852341651916503906250e1", "2.4796058491402149168147950319962546927854418754577636718750e-4", "1.00101355895664265703253905800820834352012946978175213925289823900262226487475877307647753894219794796436589570196875943062842928843129407133278574235943906905626144071246066853301987332156463703818534415183682692042219695734377740067313312425523058170350486981674302932951851973390826740834796342180" }},
+ {{ "1.6890881194976660012148708678303421493183122947812080383300781250e-6", "7.315835005101905608171364292502403259277343750e1", "5.06485337562137503941405427253471002412719863672407294570575625371322654317127374055512455786988091092329605000808871766177184698431732837248355728401235010135527651826220232715652024742668291949645619992685612328535253252695622896976648954823150769316159100729259724133493553742448044299816541989455e-423" }},
+ {{ "4.72470471679805708838453814912838879536138847470283508300781250e-6", "1.9315009754541449638054473325610160827636718750e1", "1.36613880262643802742756290736395850668317512466586871167321608424137867570108690626258507320043808302565319397131444616166042735793688809613906106252620462557968555895414582976985576875374557668514391264049547180886976991031038592004458693177738810104222966751846844587127740341157319952915743398285e-103" }},
+ {{ "5.4204233294109713248154491793684428557753562927246093750e-3", "2.5117484913880550045917061652289703488349914550781250e-2", "8.77171703127754502681310204125715941650801721154976863870699221072355335125966565182666925044598746890911836338141033359039531496488403405876863230608143768785806156629534985369811294999635059473513624761915818310578096052710097713441725036078711101258417410421951107958524860020565804089659046743943e-1" }},
+ {{ "1.0381492965649719018017549387877807021141052246093750e-1", "4.02775539432865528274851918411059159552678465843200683593750e-5", "9.99908769642175788386137778958539300137602918424410284952085874015336769726750047569734816766197409755257562872230833189101650544474710424482558254479079319860825174137124403380959665595507587367668848404286717760343524270837960434045414179621713212480893218438355518348995643697164109731552178914851e-1" }},
+ {{ "3.826356416302296565845608711242675781250e3", "3.046966451443047785296869278681697323918342590332031250e-3", "1.02545504718938094372102791727911930176506035001600018053644429991055918696319033730794852043021666923875675436795843500904336366408589219201909169612259476814126333181168932741070039124737361896932592045285182764869916877379718622220890978571031406624988992549594836404906978120992311725853941493659" }},
+ {{ "1.3367248690647914877160928881494328379631042480468750e-1", "1.207016212032306157198036089539527893066406250e1", "2.82608741435940656086722594561546646099634760918110959565977761208896418216166536561903222226214939613599640463597249764023513875896636280664458251642404729724932181291845871312202787897768372355186920789243514016890287945724482698867187289280837997988218972650355222505584789955736058952829050123955e-11" }},
+ {{ "7.8880385490801472769817337393760681152343750e2", "1.46278561425722486433187441434711217880249023437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.72840141730863663391876877521764355960382145920572562742914162972208384723706307292705275033115082012368548682595775882643927894139786449383322664316773126131611883398659050539189893838100041408464889082404113404032943316931275847874983317572290683797208861989532362102600980996636385789799495020849e4" }},
+ {{ "6.0290844501169942759588593617081642150878906250e1", "2.73159824509963122807221225230023264884948730468750e-1", "3.06403097260563050081855800637166449495962164712719263330810086375883439970326530663445685346228862337912240907582664457942174627433334293660419014781254710335542481599007896808711916825623070383641755045318205803207383228319360990374222920104547227487223738392731388028498147565624523546346417715655" }},
+ {{ "5.2188207927001606378780707018449902534484863281250e-1", "1.00797343550563134328967862529680132865905761718750e-1", "9.36552325485277806964373331313098838333278330423455390715861973295876349888773267892681165876113176797510574847645252615081953879524429911159719101193921387688552351634752458416166446355778230365755243829643708299147847893065939954861919388676503519612640610354931769525373202729617723199328630093636e-1" }},
+ {{ "6.21172003041995424155174987390637397766113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.6091943502081919400601914271753400953457457944750785827636718750e-7", "1.00000157241706535645559625081132898066253320364132991765749046567536915342813631920409642832019004224458248512335711478395060579077427182783938451114029622700384959716532968625901664719629811957905865676402174328291417935322613778738659214041802729741480722967793087943757739011593472415850478420639" }},
+ {{ "8.933489431168359015678070988997205859050154685974121093750e-4", "4.1532229397912578860996291041374206542968750e2", "4.91021563983953636397848520840523223624643742835964326188016961937573012460753870407293657436708430593126320103796954182972032017026192445957161066771807675200884423939605981304732630092257312925408813941089831976477439943114677798839623996214029155361569909503935179401196449493080818512569086682097e-1267" }},
+ {{ "5.55105519395504379644989967346191406250e4", "2.205612949903890118719118618173524737358093261718750e-1", "1.11282177288045201072507504088709286277978249266318510332909847928909226338145185595245293917086320817076726850666066198249106037631163063795831697507293260413136608221812252367908447186422344164553977681855896096040438700902356349275031836676568495994537852124264298684105398360497193752327260914137e1" }},
+ {{ "2.64139377644600310476863391784263512818142771720886230468750e-5", "7.78537344498752810831310178230069141136482357978820800781250e-5", "9.99179632299559171314926709030763809736309139005374052895886931807671532458904052556141342139885810036321222015645710865315806166952058325774560966552187527103940189373824279065702873017246336399071137612269219545181070886990906061668084063703411460250321467244169857420435253409159030432098292621067e-1" }},
+ {{ "1.04207364225271594477817416191101074218750e4", "9.490963248606765212400659947888925671577453613281250e-4", "1.00881927761618177965011845644574187803759898330801723609976606642566910129111150781463974721119043760111173993259232795682413324213317011846206782754096089290427628991647487342082014619699610677423897602146820644840945077548746946762791624180147374361784328110343084702444523109612274014821745626982" }},
+ {{ "3.3151932056626380942998544298916385741904377937316894531250e-4", "5.69130350190431280252290058285780105507001280784606933593750e-5", "9.99544126695324189746630737456946723361046661345027805407888971023026631339988056392642825478722792254481831582440796961181158845762815786131168245934078509438401554967954057934563178474479427510608187860234090448388699710858468168174057416883471915845617321874136073232354461932587707630236256378020e-1" }},
+ {{ "1.88337177923367888807137937590141518739983439445495605468750e-4", "4.32540268863411711208755150437355041503906250e2", "5.75229630554212330195665922771148699451829771147200356624805857657236782065140481467338634818457146889580617522654929450001033313425457042558128784684181381335537144806647956114444609625124141647264003246426211941949785732284342909061255617831919446477154897012961652269654460432165747451828975060062e-1612" }},
+ {{ "3.9545929052570905071206652792170643806457519531250e-1", "2.677916713784273921835146770042968000780092552304267883300781250e-6", "9.99997515679857005761440503886095927815406391244413835291624899797364615653895949902813000744851723242602512239539568754651988070279277456656779917196036522934849059282355864096704432345340316634144618927930200708582994637711792811242475638942101629267185320507818308058050356385241284795438747530570e-1" }},
+ {{ "4.18765706320910169324633898213505744934082031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.16291806714740175721090054139494895935058593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.21448401185251170746394861880464242649255630391558005989017991140563422704674077045117022763467561974222030061746655113958910240758539727055748249625892285904547489203480154655618632992990390332430221914382681227157928848406067945057161854616129785541408035327136685741399621377579757754012545382969e1" }},
+ {{ "1.28834086985551640736069600734481355175375938415527343750e-3", "3.5070592325596103289164773286756826564669609069824218750e-3", "9.76932835372685523370171735287063726416767225734834615849134547109660778793799398169080725972094573408844765674179657286895933198717192952354877012591779343412877647689917686841315165602494901218010719779271020694334581849406783713948998204010537229621398578990055098138781426451663477493080600789821e-1" }},
+ {{ "2.097206120446792887435094598913565278053283691406250e-2", "4.58040082173553630973117378744063898921012878417968750e-2", "8.37769288971832154015429547694831033608424622845142547611771987181607855769209591840464089347717993026475816138178319620101164703046235086673631394869476080594839931563796671833715053698127488579638544943331524253087769152813629459325853986427109398088052746438762088357925061124187186100435982047033e-1" }},
+ {{ "2.86348409095251425380765364359092473023338243365287780761718750e-6", "1.661473408152986941388462582835927605628967285156250e-1", "1.19957610695947876947018322120150143406142221469373757924519795345150006977773403730313023369079301615734601162566867121616810596830759956044509310651071485457850172811241087990683705383118703983140409701647142571470333867908682196499347683237058377349085352136214854181401946343510795949868835711429e-1" }},
+ {{ "1.43297873345568077638745307922363281250e5", "1.41681240009364082165985165850941029930254444479942321777343750e-5", "1.00016822776212044529668140515271000711944889104836686684000447554242511520504646895662976301872271981369559245931879055379226726537073846553544561947637792091890791964244339592472180091648456672557297620691698497967178088487062658421331764320606009571740080394934111049676474128724114098218934644280" }},
+ {{ "3.60098653144944158555063040694221854209899902343750e-1", "2.03376339210932499668160744477063417434692382812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.25275538744154336055615419863736730746930928726962752118772852620054361808569416481449220736645770958820155429279907622983889720952174836443567087662689941130263300184594808723215176724531461369529244321399979413684112346655770810116945662086924599874483949305102682382993398648882273436739947930631e-1" }},
+ {{ "5.295402011714999248107038631872001133160665631294250488281250e-5", "4.561361486960971434179157313337782397866249084472656250e-3", "9.56082033932816309081231125453071826327896674917466727856568147854623107132514590973229074834141556000908164346345063684708226886531162257152516511661460364047957606893852284251293056880030888612998267350454535860387161852393199580592248818623376237183284153405740445167284591706260229351268548628924e-1" }},
+ {{ "1.44301800298425852986383688403293490409851074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.143083929538946623763462362433074304135516285896301269531250e-6", "1.00000261963485792416853927136569198682383793838454319729684734973539039182323306199235318171814360855994012568229358281529883676852371448365509202038288834881570383584403906835594533516647281713968932211752518665238323196577224701747937440185305151190908616249351775361542696295892178890063882257116" }},
+ {{ "6.228038096295846273720009378394024679437279701232910156250e-4", "3.25094187232484732597015408828156068921089172363281250e-2", "7.86658469541403998034943500870243069476823132486007751990824694615782893644279173776512596334159142603325455113617967643461939139102971978114976150505918018758878971981207590718138194009315889095960072548673588879789986017926322494375432269097377546556386620403909103214427884440798206932883636297352e-1" }},
+ {{ "9.8555361955851549282670021057128906250e2", "2.19375835372379413001908687874674797058105468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.69327012293708811121144971175263370083910101169553278058859848877086709080419562447585355719348842415619132355236627485649548952876411849102018675375354238273102815474095986357261970461229247085634624604985094330242448976955585994530902647027597520370418448678147789523361182103563378206595110636366e6" }},
+ {{ "3.5879392216430850207076197477817913750186562538146972656250e-4", "6.9182884453136028746200736350147053599357604980468750e-2", "5.77635990889125108309690852819112724262223736693646969131631611067612444282401471024845889526676870050656945639578159737127915466435929600368572355785708484463627825178182883323088006398240693308602881027224033181200011330121428663774743869527395379215026638702157803494202819893449358544841576526785e-1" }},
+ {{ "4.961468486142577603459358215332031250e3", "5.36919182658175953015700088144512847065925598144531250e-2", "1.57915370211935194723362359441601671775858730114448762856923579370262681814508708674839371719677055754578289843591415190008400693094242195743768201495967775525358591358166609121796030602701836084062498854380733868656008519376928763241674707747769169741392588580100945268376807756367217092609019332523" }},
+ {{ "4.24495621335822494657116776828331694559892639517784118652343750e-6", "2.412731330413380170796244783559814095497131347656250e-1", "5.05650148888948869811331120941963319541414375806822687983830138205938420862200064078576598469877831249406211581526927963122105281131255004573845222711684347603254852806653766035434125383812586900316395999300527269121533046942253679078218107723668449508163238533047093749711627477323541829484653131292e-2" }},
+ {{ "4.4864042703223833814263343811035156250e5", "1.57545512531989570200255390552968037809478119015693664550781250e-6", "1.00002050314697607659431018359659361183713303212753613120902527904331498111603138394334757418054814218670389608976827498549914166555768752494414195237102560486571709642923543196007200071132086884670852209514113439317507321835737223329599950365222037362534859303381396326717532288233329927808913598785" }},
+ {{ "6.497495709023816743865609169006347656250e3", "1.67233186866778105184039304731413722038269042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.37780724079840208711014533649991541109470796504084314835156759344214993302863952807171583660778803863957191115559320339273255056520571556246744533838811694006166732957726755945662570959533321672076547914911635593118101608294069731654269467619949055336628326621660012876406202543146880009002104821553e6" }},
+ {{ "6.0967436711242051217141124652698636054992675781250e-2", "1.5704484143598296556551541236501634557498618960380554199218750e-6", "9.99995606813099499267634389464438683850041060806908350269346321155672893761130577244819124593817984249660934044363638948086248241297434338993626965911693249278796597285537898160766381999495115463474497883772569241592760426493272254012575287314033420480717621539078495596903806489817283498263020744184e-1" }},
+ {{ "7.575034551306392138769751909421756863594055175781250e-2", "1.25659927896368083096931278497265793703263625502586364746093750e-5", "9.99967576340235983529748322865757677186118554170023614050204881657758768441183672920424294568610952334609747551908015545068832481235294176033402023954402315837530793201944548984799957607361928025651266738940647431602585783131780321746876553060340085541214977820888348264644079307051095179685852079945e-1" }},
+ {{ "7.230949225422644496830137939014093717560172080993652343750e-4", "1.59957635240683257102367598179171181982383131980895996093750e-4", "9.98843860017333489092110505899347130551976013147438321970353479326257793437223848104429707854561661175450570835038515201752789245106905767296900600611401551754756721658819816241278926439311942572630487380703760937536160330693843537976099522621025621041857521661138411993182809798954282325807746896512e-1" }},
+ {{ "2.22347866336470469832420349121093750e4", "2.67574314969844628819828358246013522148132324218750e-1", "1.45597650920700334896440864288586774552136744768533970151074149218272851829624764505239431335468131476208480181217427109189696065749387968903474055278714181692867425657254225967806378137696550459591101296481511902742572646395696145586249150843548288850238158312747067673295059110101209836587291678717e1" }},
+ {{ "1.6196975420412198717889928900603990769013762474060058593750e-5", "4.98433649539913870007978857756825163960456848144531250e-2", "5.77061455335439039778043359172467746025200146785630273407892949860314031306268447375871357416922980298986141833641561954857127992214135487677696097641048847861017455164355255934271546462888696419881919311556223441720520985938735112636787538160901409982382930452852563601752376961873325250302513132303e-1" }},
+ {{ "1.1078580283775937842527525845071068033576011657714843750e-2", "1.18652221207551884308087353225857896177330985665321350097656250e-5", "9.99946575396258084502018839446238846584110705812867877643924485585779113197512036317728340100285410504878437697437320927763146715271389949541429089452281046460116468251613835907291530307473134875676645637754443536935426771393775580503285493873005924313301673550096584687732186248324962291699197441007e-1" }},
+ {{ "4.0090085615093388029042675846369547798531129956245422363281250e-6", "1.5153243776850145379609183238223124590149382129311561584472656250e-6", "9.99981169291887424157759932262067246066753044936086128253970315838989839817149914187581608688565806547274970455207936904774502513857569845689591879527047150474914557088218340646463900082270385606124499095033110795779754466447281328092278318076549095302554108789079991538595665731579745334006426859960e-1" }},
+ {{ "1.19021350263737038868705475636033952469006180763244628906250e-4", "1.68290288542928294646117137745022773742675781250e1", "9.04852417540620009944566041453719467211390230149498516011819535440728246929538100576552383464173953438153608848998091884909329517100819960017904887302473398843345408874822800579053111675353115760245493436345787702548498655314405766561270926511701674435330529881522800583133171192665005622617374333010e-67" }},
+ {{ "3.242762654672085015491664328202148226409917697310447692871093750e-6", "4.4540895454217880808367446832107816589996218681335449218750e-4", "9.94386254687686946963322383552185492075977337531973213930838015838274376322044860137122810561067818353529641305366066211688682157075369267213623551618566522232634253178245524174116891287095569137130501326353904791232655125453161983083517758472031555434930112729665552915867163490039363051308443099856e-1" }},
+ {{ "6.15810616566200508259498747065663337707519531250e-1", "3.16615056291079111083774932922096922993659973144531250e-2", "9.84767212442093730437806115126470445228033445461780019945996712538430276008229376762120777978183512697217805509135802054380845495119030204478634136438561790634012659775242132306345870420149133737299397362388964674004273429551607587049902912378874846355087545159480302396357641147726629312485985544367e-1" }},
+ {{ "4.986398000750906066969037055969238281250e4", "1.7761072017031686345574573171468557575281010940670967102050781250e-6", "1.00001921243238237193183827489311170506446717993399056537282384027062526108337893488664380391849139457202726524784919352515463921911589077429652463880766791641171380378763553978844617450998857121720620679684506344842701809891676387117033562056914974016308650056416678855410514380179891286420315463385" }},
+ {{ "1.3982947813147638953523710370063781738281250e3", "3.4349953058313833706427509184777591144666075706481933593750e-5", "1.00024882796344591385461239880845260384691776851307067376321212831043330119768926261152601978474535337925904198175128520020096443925386965960197623129024285407478015708065567539370247164906581380771634920314388644089046167410745320267558557473972499677590220735439622489041126850128421653983634543138" }},
+ {{ "5.53823542724402595460730935883475467562675476074218750e-2", "3.895135030254805045060728652117632009321823716163635253906250e-5", "9.99887300842861835164017418113429559930804468019069798605482088141983665217815479503166341320807290829070352700865762573462007338287440579346738382811838185553843038382146930720875234411175792603385681200743384496310942148612050283753172718455515566946341846284557394785250850393323918755270713010620e-1" }},
+ {{ "1.4112136137383384630084037780761718750e5", "9.9875418797880222143703576875850558280944824218750e-1", "1.39052029796505087174799036572060834290339669936231503015871931355721722463161747207749930806516332386763841930651054884331973674982367750538370231486178766251016302345689298357523496706436693633349722362506875465430935461687316908940273568043577086452494403668755303085058972545116855832701160169233e5" }},
+ {{ "2.896681342684133284243533368318423981691012158989906311035156250e-6", "1.1586534546002158485578092950163409113883972167968750e-1", "2.28205556117411408113652874564375329933423424935399606070975188165013549346043442272013469493594176280229509402715241333520310808546934629428072668916547032154136142048364995378685732366063433675907163954131129548865718748066808278449447269502355535592014434886553141414017802588692926998785625006881e-1" }},
+ {{ "6.80370452266789652639999985694885253906250e3", "2.55585667546695538554502036276971921324729919433593750e-3", "1.02281231404359612151527353897929180348478744328820333025332541070807332704656155540376559985312945856024293947964716753864592850899748540597581561259020876390111605898100116321942106603048757052249826147692127068934907088939143183343054183800841834132202006495897859489577613318023621649632711626369" }},
+ {{ "4.625041131443131210351782378609186707763001322746276855468750e-5", "1.52163427846739888679716834474220377160236239433288574218750e-4", "9.98482342652643471998471847918276729621115291527655407478347392440646810723671728307137559792389469491363165496772939188998042052370839020230988405367662374022902953797332354477989367493245470167443057076807839721016298819277997067517609396627866901281229526562169916899579412733467953808761281274902e-1" }},
+ {{ "4.5082293215957577103836229071021080017089843750e1", "1.06839470475542444583005874392256373539566993713378906250e-3", "1.00407725957483558818239220892424948692876561612077691060007144800995480352451729509031292920021843587131856132257906499443064130817064638818765366250131236399994854411601609832821870319397908684888708832193783247348840517389795509100198832759307607589651546707827898198086014636944156848700425178047" }},
+ {{ "2.97403319008989266980513832550059305503964424133300781250e-3", "3.864747748818575523443996644346043467521667480468750e-1", "1.05563040619657475424023632617553458144221260647471757349470769600263284068856263065983919485584722356671096360406091314847188039821446085937501687228128412834520625095444394738723676139779119999762553228944695777339743845083698817002881418226410778165865331625883646946752393289471811888730325566680e-1" }},
+ {{ "2.383250807842116500978590920567512512207031250e2", "1.66302465811868707690202029425563523545861244201660156250e-3", "1.00914434741735633383477956146627482536171366958054332840551181784200344603582400731522959980543848217816660950109678863255860871237640121402147335369863635255623422637578873942180607947824451388135749116333642343887949089848641558138185462358132315292011403950110303162349396320495083970574820485984" }},
+ {{ "1.71423190201370800878066802397370338439941406250e1", "5.22776453453089651191021403064951300621032714843750e-1", "4.41715373496456388539324810858409600194977863833255435782643057881295200486872481370727134110261522844531904021514609023835218872201273620577170073750362820523072032985530745444647038907617563505404059737966630343043214665700476103118304785807103469358517871674775523305518419709923690374745267779192" }},
+ {{ "2.24202183750390773639082908630371093750e5", "2.8860613713892332640731375192899577086791396141052246093750e-4", "1.00356204426464651318381353366766656275190463831503522239513652128295092897680949875433153708401966246976000272332294389517143726474038495934684353460128449357504408039179941027444904612222505017810534008770086553370099204575810832664720970035523251219105643922854038752127247330051903230606763080754" }},
+ {{ "6.682549242769675323927458521211519837379455566406250e-2", "4.37453434835288135218434035778045654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.23884289615444976971058885660437787480627352137562427420631247881049437291942148842029267007686370097695430731343288589752635360722257432905786816202418979845289181427172830309982121527477449228884669859681103900842455539708329644639171581286590973017189366587396069226010533102477610964537380565038e-6" }},
+ {{ "7.08735989603501259637141629355028271675109863281250e-1", "4.931705772743737270502606406807899475097656250e1", "4.22994581178880428430588361219833883540463488675474104323353907511764504539625188516288826354093370529125373667749527512470360034116957923611728143647053700596011110669882224710437210488847861184277118067955181730553186100384807049379684590737156995709498402541295775367296456895644229479101255193586e-8" }},
+ {{ "2.320149423239581665256991982460021972656250e3", "4.4481031013119287642609833710594102740287780761718750e-2", "1.41156739924941071144222113991630683194620198146427652318978812945951687592217439817665385168004660248141475796965481088709894832854582569992290051260681221672250427616673943995167609515610097891251991676291118804434690243303234426750763059520585143335380969303297852505455054177640936866538646738978" }},
+ {{ "5.53282998141260031843557953834533691406250e3", "3.8412160262591260107001289725303649902343750e2", "5.58373770974866315239700400474362989477383658235694014601763955308120813900734144800418886820772189374330395186134971653113939250757648994415649668842051891937875262317539557069792723676293862948593761228728392700591159530165592758768030540795599964339740660316188438257430600649159884119157424191581e1437" }},
+ {{ "1.85718777739859418943524360656738281250e5", "5.22760764621501818278162532216413183050462976098060607910156250e-7", "1.00000634214788464577855189457084479231510812185767194037441581727975561469887723538341241488476848396809344125019310357146729535769441778199276860378224675705997700022744347653159656289098028240954603207536444605258988369343538458427994444681579339406242882282677673848923548267602318784029338545299" }},
+ {{ "2.26509465497761368624196620658040046691894531250e1", "1.03762510179397637877229954028734937310218811035156250e-2", "1.03290580019042823129797947218377400320349309579887379648069219653044521496312022139633395975447973076157177628011296170468228189168841156259900536323684747126636993787966799478738521263932697630770091216225209592893137197359045523997671979624680066252774430678393930591603773849047796785558663064178" }},
+ {{ "3.00476295219746433740048985328030539676547050476074218750e-3", "8.0240930815382398577639833092689514160156250e1", "4.14136997855533491337740509094908136487500777275671775674006769752964040924959289897651192452522290539206601428332553008348132654735739834724305690164751538343877568881013821199733121651153278576916744941958595422652696891642421407236449964345890318648778746090208231400439749942969896805715062234843e-203" }},
+ {{ "9.7079889666732196928933262825012207031250e3", "4.44245980458260469880826804001117125153541564941406250e-3", "1.04162803810086699019811359451605453492327199203637588333443087016790236547076001612983024940969264195708947484110311219661303765376669460085704437741732903824466154100734799424439147057676949660911617676769474501254927589549167841876728171722481679869607753266592648983928705022178056753619502736504" }},
+ {{ "4.66389224589813756668976729713449458358809351921081542968750e-5", "8.41598683219974930125317769125103950500488281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.53382042139791789590459891074340066702060120383660058981707324170432197791546635984529280576877432127625617337120709804544743161881268886942872653531280982977576133511801284796672543413476367564502976743587063883733930418435751755822485352709171649159924126024328941448624940766411726855902924670549e-37" }},
+ {{ "3.5980841563362578328089114165777573361992835998535156250e-3", "3.89106070923696201191432919586077332496643066406250e-1", "1.11957324795765157901703029938063916662894000731995996196921601505519523032651152137148283098242267387419838627536448762986353433569901640648734154364900058234967711292575255307936095926242393050569604396410567616604312846123878721000606629431359673384574670669906697802557686478096291498804903738631e-1" }},
+ {{ "8.29546112810515936034083672723227209644392132759094238281250e-5", "2.58324466499312066503080131951719522476196289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.86659658288740565122000959721270284304946720479579271651550103638161205367495371607443353257219806398111103943515458202894485596325631197266478165244814107159447017816960534609382148164169335790367935277372018345236031109996214855557877416239874683021494253068006756484498147004540748744410389570461e-11" }},
+ {{ "8.633345938915559791837495140498504042625427246093750e-2", "1.53080323158965114771490334533154964447021484375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.35233729973545869852697007160756749812975339497681040282999017995032382608550729201580422775220111291799102420635253476809267746237352183450521514570985348430714476644398637263228584608977432119909919809882847191196859131282077491115028311403034792745466352775458252803189617423439193439791933123479e-2" }},
+ {{ "4.96802530016260956990947761369170621037483215332031250e-2", "7.025196835724334398776136367814615368843078613281250e-3", "9.79130174131074712614824707606461473196424333567411409743609116414751816130489331857231684597817414740294362613028844768413127008896909984819847802879905875872491406317289520166024819440680050252863090346899246519659384416734528764367429297819383807550500609868490474715994290375146313368129823880737e-1" }},
+ {{ "1.24702033554851823282660916447639465332031250e1", "1.710705957554977231852011421153747505741193890571594238281250e-5", "1.00004316789477874277620263489613820769653924396429221925198065527832144152145855155330213971456389989525794479500052652310504867952437063466242776820964127214900733034755428153463014611408545155223418498794841462940237893200540509678171081868776875097700422657888013910264387140255547155547751726595" }},
+ {{ "8.14130989781463318757936953318221640074625611305236816406250e-6", "5.476743603534721671621809946373105049133300781250e-1", "1.63199095965818056903859668356569903606584619352293451010588563431807635376986054905897873784109387681218165026966672415089273447045333707684197569751029547891913778442699838628510300753325723159251992398807517774034918042863197611983714480066975243968618918488213538490759809651966026386013669113012e-3" }},
+ {{ "9.4831604756264176181446146074449643492698669433593750e-2", "5.873187053422951808476226709387901792069897055625915527343750e-6", "9.99986164907695049446699147999970503354260553000953839878275159076458261755428730763560216631851642537174133195419034054495238529976374508256949441111167727864128507860277033299044051865971449902820004978297018651282279654117307535005136847959876138249613275046667240315151303933181873427450473536424e-1" }},
+ {{ "6.724396223986286655338595608100149547681212425231933593750e-4", "7.25371945127648842799317208118736743927001953125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.74287216286274945633266572714083322962101975717027023442493643122162512912802620909159732325958549010615659395950026917825109006470507725724883444926417334797999132724229966674370457592343778072797597317430071335665732334697884217471229705559230148495486170835726019893708870900510074940623722192258e-24" }},
+ {{ "2.30442309265876887366175651550292968750e5", "5.100776150045996035209405761179368710145354270935058593750e-6", "1.00006298512189780533426621327292231284630240394286315128868176668180396156679505765231684868863847590833570938788465357619602169740491681317033999860409913654411707265663879954547321897801703570651803262843624273611588702980486012373865440788314427239276089286730821085936329475836740228791493079509" }},
+ {{ "5.67608898683707252530439291149377822875976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.0768302191256316291401162743568420410156250e2", "1.67068196412266823466861212116241893055807436102731155140415238019317223182255528301301262470626159261154640191153443230288813541880287940859066915763205210708548641176944414442344483827370453800486623574896474317715521007693847769491979549043149389934860292588058888100428936865217794693086764880012e458" }},
+ {{ "2.8133724660645658150315284729003906250e5", "6.7634484407087152105231275811547675402835011482238769531250e-5", "1.00084899099059737772913859365556118027581054407285954758329055990529529377511066455820790791091871502993434775634942750452313898053395589443975739777882392931281046995883876066279980856281434476038018812014179817821871586805042023183706725376177160577170143175806815414662475357051404586743878413781" }},
+ {{ "3.3498352383764867443161072912971576442942023277282714843750e-4", "3.208520821056923266745286582590779289603233337402343750e-3", "9.74653990782509243550836183201075823369159155519692846798314436930630346572690178245424014813711682670551067058906680367646181984756645025448347553573937829174199564122446362713993201587207768412845129431576839987405545810458778769778400165994012026984577717831659943902405397254874487260228557294263e-1" }},
+ {{ "1.173650036641017777583329007029533386230468750e2", "3.780534896009259959726023225812241435050964355468750e-1", "6.05893503437891990856263354837986270829833882333366791751057714437977103925035624856886729661425365010268503431934637684230477655839134293793513971115798026793973457123299079643692631311303731259185411381265912635677151301389868547814580071368806352687212447229499485791883769033890017890187866384697" }},
+ {{ "6.35473191480731591582298278808593750e5", "8.153326462586494471906917169690132141113281250e1", "1.39785593586175436998336047723152633390674636830187065022507274459265394076960202352145842758484227495355755965560336623550772098175134115092702375767668586879200691996181864401350579269221993542974245130770033239773182375358583651870979382999043883377805409110023459275245515025837447884289450716490e473" }},
+ {{ "1.20953010742292040959000587463378906250e5", "1.81528620999166889760090271010994911193847656250e-1", "8.36836082188852137389175804388074236213762814888145199618983165421342520318145120542719392963440700570926350816427711317556249274733873103430368341047528787950522843632555485443202700694068291761260828423023146529348899979040923182831897371799138328552240635790031739904574931369069808189107688786563" }},
+ {{ "5.028268644236564069438522039945382857695221900939941406250e-4", "1.49148497614115050149963259684682270744815468788146972656250e-5", "9.99886724184991506266822294352662914256716265702852450641368490227402118731911016182228523518485801671330942930187800995820804252420406598640376923122551567922827288661396415930336442260706727249870079649992447995120206397679683465259479974096061438201134430443691684817587750638183840953282722156209e-1" }},
+ {{ "1.7762360570648558178927234330046758259413763880729675292968750e-5", "7.16881559843790408872998831668610364431515336036682128906250e-5", "9.99216151571584206550599285631558723279674057106881165894202136106399680298454020164284514110193651012658901118782805914666290560642145072003861919887611842296547047036059520963486973019219177746829500434614825844519776793639037139709040279058532565912742721673028532604681375807832044191447365386410e-1" }},
+ {{ "5.4447075299350728982972213998436927795410156250e1", "7.8942499435862384474802203038201753315661335363984107971191406250e-7", "1.00000315551756552929413349733123431754994533967419962917545562731445729245526256276165331606875912022797791137395975129631042701829381104269734643785979371368397149024305719491289967486350643357572991392648348784068298353851347894101762457227438358667841811859357203913787202416700523836489423208926" }},
+ {{ "3.479528655391823122045025229454040527343750e2", "1.706470553795544006780993129268608754500746726989746093750e-3", "1.01003641035516199003729871729172100472722683758579980406598003587323081240911466133797745466321375213116846128724578817241014105529656120259049841543565831847323023771528373536119517374544673647922841984354734790648175557634969225996223997613913923117328699599574593399806697328078695200917124733876" }},
+ {{ "4.8968324713172875495281743951636599376797676086425781250e-3", "1.965286254903626561628751656662927871366264298558235168457031250e-6", "9.99989546369402488423594127072150976413227845609208465040224219805251052465526350038203035493184013561718362361567469358800995276604754108514280603768744650567983276404672018483263585666869718723877857972643772304671740644914409892158811218430582592069739462405196179208350796857344173822141379782399e-1" }},
+ {{ "1.46846575134083542901741736841358942911028861999511718750e-6", "1.13961295777929194628086406737565994262695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.25155431004176641664360564432608271749851863826540763464893400702786658931519008803678187122457752047812131114041410952546777155616546380522319343918668230249104290662019435519965989945104554644065424460926764956490748710036580200886547368376656130754697653950693222962392418484839778727280176131769e-7" }},
+ {{ "4.922583286355184384319727541878819465637207031250e-1", "2.167012857499329633870210898294317303225398063659667968750e-4", "9.99846424401823072211356827414998110501335375349159811161820098061831954942111055007312660415928636319873898347702590642507419097876493991759663677610295879480797600223758201686500279349159643821096880668703139199785910150322740521690695804135686666464835791331742866153491003010427701847514162106732e-1" }},
+ {{ "2.088918420244419849041150882840156555175781250e1", "1.3745112355220467925676075537921860814094543457031250e-1", "1.51853459491101499462028153198307960464036529321862426769066486207166171296494170498179583135034855145454026518293079000045567402865046530341818676848400774327944796661350087157800975247279219703171839848135584471839442165788564723636737356977396947188532339857132058951624239309379955278406455872013" }},
+ {{ "6.59693951898326247373915975913405418395996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.5839050428511724441515973182958987308666110038757324218750e-5", "1.00016195756688330761491474273615136423552556614577036197755742996689336001512360595235890000441982158893267294826116899101351409093661584157256387065246323209052057870928088601548025462625595893993027794606583868972654751596093207938303600634384394989635869479864226583469214082919105133232859648980" }},
+ {{ "4.721903022822039201855659484863281250e4", "1.3687261479564427624211475631454959511756896972656250e-1", "4.36273289377674003549552956596428296006868194528902491172931330043916572933784595495824585583342079403134944318241053700848989680616524963231553615168899405338957973320487490472555612135391925458093520067531657179731576065041675903036737870428047782297012296101361469066116145701281560378942697624754" }},
+ {{ "4.820349777574789310388703178489322453970089554786682128906250e-5", "1.201141639511502318474200912135074759135022759437561035156250e-4", "9.98806768192609411674337267672424056960083232464271360229113542018960233572696008296128150338304172594110837781004501757127999427554595909914289685513812993265024374119615672800606621652602006481141937435665444874495693840170640030665928027259502446424921700891997624978473239252852217099622859393453e-1" }},
+ {{ "9.54197957425642506734675407642498612403869628906250e-1", "3.34304142023469919031697372702183201909065246582031250e-4", "9.99984326565139803772938990236401058117431661922045573846220380640349699832779123098058540753008622857674232899802697126593866411818203678224123515319186907350469596960547397261912465753250671926347546302198056587430826863955515669743258039245240360599418185587449465990312391796474083173534248199413e-1" }},
+ {{ "6.409606992637384337285766378045082092285156250e1", "1.0081673204983155756053747609257698059082031250e2", "1.44157504422123306075307680246115279780269010737951173392922320903011026254261224810748434749033392788723902179648854339741924679540874536758451693815806813776859218948113244848659597589114467756894234559650445795659560796369660440795499707193716216403592941616722628011042403021580672267269382135734e182" }},
+ {{ "1.22311589009840382402671821182593703269958496093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.1046934915771231197623158948317723115906119346618652343750e-4", "1.00004238976442526402787977257335501538186147626008780569692886964327726967250839556988250363044075945205489441982444641281650300897861533023502296756146804366735904879346020295258735438264424281840920414740589412010520817925020516062766522452589181209496869654998063536725728358771467633669371863258" }},
+ {{ "6.3929111843020800733938813209533691406250e3", "1.28391975830675164615968242287635803222656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.69505481296349945509651870173004703548467117826619443587513918127052944692060859604078331125022112009253571107992368448403956917792261351644585277417570509975725723863004283151424512684410008159602519982839123505049564570077423370661622862250195728714873045142974264003278199036815752137105673556433e4" }},
+ {{ "9.8319065323364611685974523425102233886718750e1", "4.16849063361153184814611449837684631347656250e2", "4.25770980590636267172342833096299211879468172398651157530921609762966193936659345808702337762714296668889853763786019297633422123145533613492472992798929637639386760407400078511978818609469799050619387136981965857651597610392961103496543359101531210986834447630570812748220097342632073167798940478519e830" }},
+ {{ "5.473175005590576347458409145474433898925781250e1", "1.2556940190600926476882648330501979216933250427246093750e-2", "1.05154283217149739996322394073132732110285973177101672144476243536792403202554641841303821681674178605013975392578098758039213562899690576014988268448654777051869934823936115258309781471880324840875908371004233345043851515355481534420805940488435409518654838065662552503310797307929345306698760361427" }},
+ {{ "6.4912383638254911311094019765732809901237487792968750e-2", "1.850202617176646691099506369937444105744361877441406250e-2", "9.50660946670306311914365279482095005173354041210571854577128244379583503141132158648667793122314902465794942399303782457347308120094047863238127874892080844189140303644281120192942849585627941033052970332875969503978268193734299765207776684899260119431935484734340685682552324678913617232469193989216e-1" }},
+ {{ "2.2469270547648281062189101753290287888376042246818542480468750e-5", "3.52982695718321792810456827282905578613281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.90763013958916250310703922628537395346144248614383500040096138375431039104002049367585390738671354254176978486242291556216285278163895739264649656370403930009408842065500683071987767757954595210907449882232438368368764844630512751091553559176805208777768953085505825846870225770460080538105432353809e-17" }},
+ {{ "1.03776311938838771311566233634948730468750e4", "3.67758461032731062689826728728803573176264762878417968750e-3", "1.03459301282359622046275858130909175858605738103500377882461906122638713902728757596922241637837677972497613038491667511030599129584893938038824302224512570610802632172627579650514542361582967805126424931338365938119495726516045340017819117717607391845493489250022446019685368890472485823905828290701" }},
+ {{ "5.444635317520329920171207049861550331115722656250e-2", "2.08467925444702359527582302689552307128906250e2", "3.09056011709343327076534816446309237286970058275834540830372719698670511928227959632093780315386474610345825780828956917908117330975173563693122316666283875774232598613235043753932040992980072681882395580571647274880789017536786697004043527146342091119566202577901703268215449281872604307112909919335e-264" }},
+ {{ "4.321410913909301143576158210635185241699218750e1", "1.79962553627032728620349644188536331057548522949218750e-2", "1.07012654071632775332556853428357456635166481137753650401618414453228087751942869456669180112375507267782856652222749904765639096915852769878278766680206962666525967341796532563009425557062229126958039051450556007688280632610398536337196273409572525834486954342631282999563123455233960154445776600968" }},
+ {{ "8.8519539520932943865716424625134095549583435058593750e-2", "2.3201497260401708899735240265727043151855468750e1", "3.71305713463862717236321613646893663926389070764619904563621824742856237889605485601780242185666715109642520925666586793175066523791156636682971412268154170045092095602942426637119803498838588967096817482914325839210531169438704998222940708453881877588305201012231120626503012557840854056737490425114e-25" }},
+ {{ "5.118003582399178455139554522190792340552434325218200683593750e-5", "2.53194625802088957300384208792820572853088378906250e-2", "7.78675898815841251401603750577856756795950441245444722873452268896478608982683458941926503132911522781757532432483294128491039729829837206496101278313685758061174666050134299787052246310316361371623036791254936884792176693736621135978412809784428098496835040268753660201880757384305210529998116341854e-1" }},
+ {{ "2.3274146614903198568291564640730939572677016258239746093750e-4", "5.386407398328963954184378515321895974921062588691711425781250e-5", "9.99549497162550438458304414161333920701781715268855145062033883882900750111819551249273252859663946257284929221986573479403421187776431235203160677411657816941834327558315579342010850796902138914924928940560282841455433144115320935123004884062392612303227832917659972351800421646517607120651251528968e-1" }},
+ {{ "2.888209173418870195746421813964843750e5", "3.7267907937487687597410968010080978274345397949218750e-3", "1.04797427152199505899776613380207153019163891696040089708565511495563600355422445163531206665239877024907641710076156338867860992891601417074486301976244681251883409289427117509266966735400170413169626794460003914944960446253186507533452481416547111722260834345331494363350198444447590272333886931493" }},
+ {{ "9.1176907448884685436496511101722717285156250e2", "6.3428728361785488232271745800971984863281250e2", "2.61412399451200792430940441597911814328017657658519351363425803166936981320098511499093754150499459010245435176020174953699548406222107608392288974835149178057255386825625780361600243592099112823611022187187648569904297395013151014275208089987059198137284635106672418842688183845527005332642735224166e1877" }},
+ {{ "2.99902079785064756833889987319707870483398437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.684975926456249788534802469541773461969569325447082519531250e-6", "1.00001063692844088210456002419855074011148005470079145471634788112628295771788190807123424233524759763995207569368229563514564551401717941193555837507092120724642714186373549513618453183103215293207086254916107790393722326161402579919794484826396299503609272588338890824693538523484869461094064640920" }},
+ {{ "7.728544599046511575579643249511718750e5", "4.4897834852120803786346137087548413546755909919738769531250e-4", "1.00610574384563796400321310101756992783528974702739913146260646865660943239706104030906315422031586966995536370399679280585793557349882649609015460449277306668457058524687099432479479161198093426061867258598346229732606275929747805949435342506588647203249401335413541148238532118555631296171613732580" }},
+ {{ "9.2977037287730581738287582993507385253906250e1", "8.3526187246175812375903468876003898913040757179260253906250e-5", "1.00037864179461996490975401602514900577512361928909810135170262283211442500106334885446423595314421485481346967556782507370070595069946883492382064486384013379235733594798086474310298773717536986583185147038897974675666723220012717870637206407697176312759927758943687773764377471241445265488722941855" }},
+ {{ "1.0859392704197159673640271648764610290527343750e2", "2.5420532850914867237235306163256609579548239707946777343750e-4", "1.00119232709184950657347355900529943667776581936561333029642844322931651851922987396688070423513516427393233449332830940932893802869470044377136541346608056612546712420915411514501773616973022311857494372432610405714927103499401270099666054931681878021711299630772502630342850129330691538468637467235" }},
+ {{ "6.089552101270304992794990539550781250e5", "3.93997641600216752522101160138845443725585937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.18201219777662049133348544929685038145294798461233898669466368271726917449741209374562376908881805268589020897308399041338055306698995074087125055703556791502100679603522120055594862139867723186128435543540272128120797808148788656196331354569711892744404054200303870971480027638854018077003767037387e22" }},
+ {{ "4.17002058199641822966441395692527294158935546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.276387753247702787221320996913220824353629723191261291503906250e-6", "1.00000325050709508111108865304342178215954684414490544574201155545551225580135488259163273316494247157849444894518301320733204512003009459708444645141220074915996395890189435364804366091830247042355490183040883445209891891864651638351487974364904897430627412415757188029347485931227191708441175016047" }},
+ {{ "7.67550081598081896869234519442670716671273112297058105468750e-5", "3.093588605415642511786700197262689471244812011718750e-1", "5.33361058888703312937877266409714100834748582910004102998779521040115944440359724219966898465717158230452195981198500825979353396690326287544928081118745655488492150353523103453131904616559184005975246310430624687681784477200062656846973772093687820868635241069192671298954998139357716654945366635020e-2" }},
+ {{ "9.119288514356249943375587463378906250e5", "7.77150273145831363419411275117454351857304573059082031250e-4", "1.01072215443565297495212875757828431150173416786594077990011283253611684077171961857977658555772993227256701225998130851047810587496804030395055038866276482446366864045774522304245866613460132889356389785400787106849829332460233953000396006079677394660376277801825929937944079178448460996666434091599" }},
+ {{ "5.4142012264591812709113582968711853027343750e1", "1.8952259288250325680938446204493175173411145806312561035156250e-5", "1.00007565289778675652984140979321399062757791371437603651125252179594586538728496280877795475718254343845999376499222253067347916841829323365254311918387151598991472092918535912843066893311920458448486904240767256448921472261918689220109607027673999114234655407258002618927723100761498362332050377153" }},
+ {{ "8.0087992188598966514234689384466037154197692871093750e-2", "9.651251454841747090540593490004539489746093750e1", "1.51542106881981491731489464208722559455080283729538316329978070693260585378415308395373558536702307332302792317627310748549719761801156867236663991267318247059438589418271824484275577584765219427298744283723772247523591169183694405713456066811755471408195734266771535080425449850856084868376311119689e-106" }},
+ {{ "1.09156997362350409730424871668219566345214843750e1", "8.10878062686337663933500152779743075370788574218750e-3", "1.01957066747628902940966302510092960488528925253540221172663471275503400990771789589916604068584334436432589666410671717466013196522730609847023637947764642131621149159485396625786863911618319465245064605684158683676154002669412578226202367577007287146331656090836085181386754790207143710478024828107" }},
+ {{ "5.27981737437816178726279758848249912261962890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.41970852096179633861083857482299208641052246093750e-1", "3.43686253241293502543031164235680564280493113934425702290586259672655229919415634458697404687915141160074152506872313697917935113169212018685900336128740210227144508079482606408290248099236632255964024354639101204012497824568760884660053718968331056137812934970479251589590682389747704367113989950745" }},
+ {{ "2.9763242468503051441075513139367103576660156250e1", "9.124583619162003742530941963195800781250e2", "4.69742603562041824153926447786929280716116286355510132564473072728789802885515779796188477871744149730979853211785348379587523589298115735526488355106077778856284664084128422453984824424076757383964141778964343798745285559893404942252682634909106936299245602255752362338032501973165524906979409622054e1344" }},
+ {{ "8.1227700762963667511940002441406250e5", "4.92673741168140821855558897368609905242919921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.30484996489149406381687564563779425178418692009670007244171321324888859123491778857160269626310259110411696125879945417306210294026918965107428093516365217530286177050990880067424193779915234192484015646474192080157981645949288654940510168136275269591421630149209078542082633232345605476593203338075e29" }},
+ {{ "6.75063843580995381898901541717350482940673828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.02748489106749621435632491284195566549897193908691406250e-3", "1.00196404947416174365030420006016203648060565955934806957206111637856432455172895201651727892958586584412299635092294986305134023877029915464080887124975616815060819276759381700802994334432976763795102196206567937500407359464356440088544622676160266170981561234435498384331071158546292310523236254753" }},
+ {{ "3.5017444416405400261282920837402343750e4", "7.802827554512200072811545226159068988636136054992675781250e-4", "1.00819798888901128629632317940565742032581044787310510298394051237610722547925779466083057852335930819436022531750188258730486171674268778076637531078630844955462136795806889121317307097195981029957098770479755079052235805500969330960373439119072852284817639069793570751583988153638659438922106591664" }},
+ {{ "1.2656495085348353768495144322514533996582031250e1", "1.553526777035119332782617251886847498099086806178092956542968750e-6", "1.00000394312365539989563625486331626137964273811834798695005780013495760538177217100805072673596190622159320905648378255454000218262505715454699578920413495174693604468418384665870032433868756106543653906692751058614669494849726609491390952522788637204327400613561970408136313418894648226391505731573" }},
+ {{ "2.15745882397261681817646206127392360940575599670410156250e-3", "2.37905683348865193416088459343882277607917785644531250e-2", "8.64117851649613850769514625497977880278916078343037571542452910699608639199334716242087257033679813405503457913766626678856765747940796988239184619492044398845847330875248279377691256718144764352787323595310916665202454075432835782224634142882556904024349917556799442289975480861859420905292552431968e-1" }},
+ {{ "1.041453721678808896911050396738573908805847167968750e-1", "8.37802182325172850596572970971465110778808593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.88526852493738132239113873166539203263138672058127955706951262195153797473038707601101237196070886256644090185553908945280688151557324839521372121066434881841798255953853902832020964805296391060444306684398308798244411237112095640393380398474592654522034844007881900667824504043884214270458892007901e-9" }},
+ {{ "3.07012551115110277066833077697083353996276855468750e-1", "2.688791941473964719477862672647461295127868652343750e-1", "7.27959056811329343392664000245431816256252125501370190635108304735068414726869009253945094404747463601079257760616120868020903017002340732110943618640264478113302579667971697324950504699622151612181100300886867598913337113652973737056690812163582367071363756081204514554722838161602803979904270771466e-1" }},
+ {{ "3.8785555274741909670410677790641784667968750e1", "3.6812395300311884227539849234744906425476074218750e-2", "1.14414942990692656452341784125767590353064260907248467847740571016135049928321189261126610028098851785915087403250818786340815261171401002033061136458109120291157079359913768807250954139969052510045722307049663169894534742927788300920701107994896596920105547258658675585904959114220585301112702429345" }},
+ {{ "7.2600458186699787233031599953392287716269493103027343750e-3", "3.0641341074503714025922818109393119812011718750e-1", "2.21086963011262781557962916039162488992600789192717542131434452153601149170623279185807445011140592247466432290015786700658875253434281122713288249913633617033214856219833669907164464033302015146556043425711342744639683355773156696931162767677537366527811567871143970446954952970890842842464186617910e-1" }},
+ {{ "4.11288422352877880427968193544074892997741699218750e-2", "2.51736412939929010690320865251123905181884765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.24565288563751822331299972603179488550349468370067144446751898852644002616709216207408151506565589257442807820798232055968358812640290558093447292295273379034573533601586226697268290915360691120466719143962043078879323957769794563236709847407432551615445562560818926972156677354022231138620495943375e-4" }},
+ {{ "3.834137867264226078987121582031250e5", "5.00384576840691153165607829578220844268798828125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.70586881100241909365086281828106615321437784717557599878404325717613404517722842063862151116432421295729131945352592123500947115034261116251456345076603582494211858526398683989440066160175940760838173788310914276938532934671434380694237696835717084352874743706871899256563045584501545107582617433574e27" }},
+ {{ "1.45287638810286156079709662947152537526562809944152832031250e-5", "2.12685751933480298196330049442792642366839572787284851074218750e-6", "9.99976308406201382296511195677454028213966050559386949061001176100458674306535766658075727649858861936143578824990999294178518894376297296437371242014351633015801209221765213206140971726863151455918302666401442029878834264175629251102478211077868646609228275473662440136138981614575523961652841689231e-1" }},
+ {{ "1.060607787842173799219835927942767739295959472656250e-1", "3.6653855504344872232036500747653917642310261726379394531250e-6", "9.99991775850777769594805464682102392095766388724998006545282885743063065509840288039071353911521871815954556155694843177720505424196812072094678443706799908575637539974472545844157811962504294140635183658965312242832638263593804028788156476482121148602286677141129409544764834011834242854688050032534e-1" }},
+ {{ "5.8808637709003045920819197078799334121868014335632324218750e-5", "2.2895041482392727849592972688697045668959617614746093750e-4", "9.97772228399557115917897595553123200059617745525398631036747902716221825268917059130877148214691312502174434355597848183024102187672671321353149180399633699090375168044589993636218162674313714376215322688591337150653523844732601246528148296899452660176207080310884559549441104143585753370139662688312e-1" }},
+ {{ "1.82088437442942030486392468446865677833557128906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.18170819309718790101129681779923430440248921513557434082031250e-6", "1.00000130754723378331003328108523077660890480086159377400421770916129060299296337133805493313328717117334983973342138421022906982702012383037259191961910456959250943670084798790257349266900179703918444391347033677458675178576414635996649806132816647233201959427396166295868642002149628537093670669003" }},
+ {{ "1.81790864213692415773948596324771642684936523437500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.11112317505943991591266239993274211883544921875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.16716616089260899158634927691311476940264689424270830038830803482761816779192664467113169986590716888439242048069862364270415910055880132349242712046577768880635878273030333655678293456983297487516817843334720432032181949191565525929129951842591644277698817197191950932369312197425519306770280944742e1" }},
+ {{ "3.1168221364156203344464302062988281250e5", "2.94098588905476396315741283160605235025286674499511718750e-3", "1.03790338780611240821364394096187689009151442337723127625883997000112224823851501188946812750320424873330954741819494803462494193607811995436113951374495986635400485180461374008937550605117989616259238001766980179462154007176099462553721961527948038831707776585902099492828100272597482214965326918683" }},
+ {{ "1.390878641265953438721503232500253943726420402526855468750e-3", "3.3010272380812644144043588312342762947082519531250e-1", "1.14022877396721831842223346046335424470246823884137406233750859143164782910052273120452909159294424816461360814736670369100321052363875210113861850087708357854957657313512898387152990311841659387594066789695419982631901574195401313785030478101180804642923588217360853722001240454059693137169086797197e-1" }},
+ {{ "2.70245297975474845853308125676051076879957690834999084472656250e-6", "2.27192418381639527069637551903724670410156250e2", "8.66297652134236153231549630311782646457435806521553869102045806271290140313907532572617601088189845177879703715370369231877915346831429034626669722739550299919960838955152823532091259662956246982857242736145549200749997723311019597549168518852317671248226020048798842889139150504890040937192852486477e-1266" }},
+ {{ "1.249171446812304111517732962965965270996093750e2", "1.151409165552330193804664304479956626892089843750e1", "1.38260599513773427745927397841453042338248242456988517458147773019568704658853879515960004076402277283883489795069346406439823839016514254977654510204974986928186171239215823810556312920621087546486393810430469767985081698483192169492133075210737954383435371131440185644678524564816434215238704654516e24" }},
+ {{ "3.118362310192143922904506325721740722656250e3", "2.07745884054014173791813391289906576275825500488281250e-2", "1.18191130436089764539875276066824383600066278177797976268794231640866698789531115667856789828761726794355968881132857750694814866048339710833375629295256557712732385065863487440162509225900966765667937759713986800012768351783498265785505802770202831716066805035224331887004845557896771449008224340669" }},
+ {{ "1.490792061643138310955691849812865257263183593750e1", "9.4237360550309404061408713459968566894531250e2", "6.27012834121533023666785182346229437241289754499051958039863912420351581912036946871768101343922573098899177777951053704877386501476998681242293961635818871027535060307630949907397555951449420495765047830618356183657814571149049220337636474144629773918060565875711712572574729922979876342390263324772e1105" }},
+ {{ "6.6662061859632616494727996858671303925802931189537048339843750e-7", "9.21273515382789454086776004260173067450523376464843750e-3", "8.7720486288821936974478857366077028717039276900173868840215586570851328800318849625174063894064299296365776744832842535347287057849725364966061157585147600109227112263672943360146015080190661943495120908398140804149413536576847081616293061568452054226035633596561472067627264621732339446631526745150e-1" }},
+ {{ "1.380789864323115345712267298949882388114929199218750e-1", "5.93562727297856326913461089134216308593750e2", "4.09060418138444387424424059062331178711979043905828333720448765913252697584689444873629369083510366476460104106313375773568706388071930121668811178870306890980290075045537520987441428335324653171796426529164093528427568372203611999068229147036397950044150945977202609787933363721956655499688121770967e-511" }},
+ {{ "2.1677105043294141069054603576660156250e3", "1.114162712132173898085807373092848138185217976570129394531250e-4", "1.00085620226622470905732844417905757963463091991631468675045664887604696934739150514381777470211904644648980514762573227291787791600677422794047913591269830095072415283470532919592193733010388187339828883232881043401853930198928232094973120867346831075681954343729371567448461485192448773328157967492" }},
+ {{ "8.66129276411148731409928025470890133874490857124328613281250e-5", "2.63230476162026535980054120500426506623625755310058593750e-3", "9.75677926316087201992937434104172212635183402081845367050961907386982900528845357336855433020027701890844425355924313158894887243517734179729721860852203216211626732274220956786288208809210677612308603888585509873354794360927290410971415768734554863757722931375046183502833124862440220040682623894401e-1" }},
+ {{ "3.350575803404289660855641663772530591813847422599792480468750e-5", "3.16747650803829827736990409903228282928466796875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.69762726818915994102636669640248641695258916516178220951615332541358403169898089796085534108216181605452622185779736827460245748311614902401628390881069582094010945399117381574868399439034359201699565625835678615787458358138834274021214751543009200113868243044350923559610553355961511493945076046223e-15" }},
+ {{ "6.533819307718820648678281770571629749611020088195800781250e-5", "5.88128239916411388321648701094090938568115234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.44239576906295172295161064728901353975092629051590219076800377900713837403284136783431262977433666893756151770251819781412876948522321366628456614260642901179077056688683539196520237460889892611407142177331136348438247424975172992629120895139251739138531630904163246094893508737465346231066931419052e-25" }},
+ {{ "9.58824111169796669855713844299316406250e4", "4.767758882233408712636446580290794372558593750e1", "3.29079715270199960942963556473318847100392035825806894633874834481890517355918139252275167622132083673533042352315135079499274198112245747602316235108479674713674202663546893395644195003527204518806401402778881498713093151993690595544754136969841959488665417573929913679381495568123074940059218587082e237" }},
+ {{ "9.8046254480724974803007576440450066002085804939270019531250e-5", "1.9238006181862110643976393475895747542381286621093750e-1", "1.69367957215417366534795032414092044927898150798664469523819577887485052498975506353682229088031835479896261249192998498541269057857290594440231095317424708287026045610877468508170913712129807960043309223866462243177903185979844369471346406937023243553333556543631914530281862882346915332974736594434e-1" }},
+ {{ "4.22715824828159014714401564560830593109130859375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.73237473383745509636355563998222351074218750e2", "2.85142181625610748727512967615608623642319089823180852116567338775155480625397140714648406228861247464456116191851444571000366236244452154069748412545940070600491678946250810802096421175871317523376451483012224450957973158915531091130907648484702974041033736125577265886371493322366154555363836169078e108" }},
+ {{ "6.9664712703758069345383319159736856818199157714843750e-2", "3.57526947921747250802582129836082458496093750e2", "2.21776552625627356590336877317582904052748969026951170943346144361121751863809186842688158978930311760773848599440472082708351294025960471667864592532594991999006914698692274398613842119283225752843571850040859177332114176284555447226936581391382855150937157990431287391269415649433263516860035782138e-414" }},
+ {{ "8.870316572117269515729276463389396667480468750e1", "1.340709584692019973317655967548489570617675781250e1", "1.30679204065692425620221532321916410120280977665891018935099692677903142836365793713310074103183167526509810778546217793360039724544105606790669360053805611269103519872268834740224972933178750433774433912507891375768945267742879488012985036171398185645729556921004734943776799979369402749984084043452e26" }},
+ {{ "1.38894800193875870772397540520159964216873049736022949218750e-4", "8.2883437025022566047027794411405920982360839843750e-1", "6.35222056499059860815119534190744388049132560559707635179974362835024292102863415735162094842301916959003527949486946878329851243593307281685479130665725517616797588026104563060365221513904192277451172225341242860418605162130720263571624685346061029050164764398879401328940031001593736913742594656342e-4" }},
+ {{ "1.09816947397275884975090254336294037784682586789131164550781250e-5", "5.58183945899629990446480509724835883389459922909736633300781250e-6", "9.99936261439304212269593793274631621066678586897953594510473482514688267255174393243589871913940083113695300948318689338051222055912287552167309726448706279958229666015743107592418824002439360290161725288760084420735569321637244499982204153705684126108823317986930400592132185032791247608619277879575e-1" }},
+ {{ "2.3109699651686566035380110406549647450447082519531250e-1", "8.05549814372709782617221208056434988975524902343750e-1", "3.07259003265165794231974650932471010325197411080114721904301457157547097334313567798534807882346741414784333355642286915364891740931795753032224983168581398136163731017251242792429565442336378918505638415347606482959367519064678452374991852143987534832456623394400259546622175052847902597251732867983e-1" }},
+ {{ "8.496704164419041638289797901961719617247581481933593750e-3", "5.06998079666728116224327926886417117202654480934143066406250e-5", "9.99758288631873273226282145885741739757443924805027385096536700548341955223394388330738555808413815209906793614975662061712919602993250011794563507497959691981853673962928960543216580974445772540799559436678586781978389593065105455927885069982188267742598791601651598840088278986439446428992363728811e-1" }},
+ {{ "1.5731138538713305024430155754089355468750e4", "3.280717754969959891160960485656516993913101032376289367675781250e-6", "1.00003170338187821543987107336746662729109295981087069294808638827112958850528655867141095917778641007871411889107729782401763128246612168904257048743190385169980528080025389670873111442583914650963121405799362630066123464254273948242629742051351814124726982856264616340030151043214382406894418159834" }},
+ {{ "2.39202138047558889866195386275649070739746093750e1", "5.4911818191854854376288130879402160644531250e2", "1.27339014094927962826314328575939814304054781018385168289190485168514741352754753149678911930165646861374735328175462043586928267957865268734389479790773849220996848074070389175534751472812216991107745875007249116250242613067032470443930894251972922681126465003519414999032823440924453088711434009253e757" }},
+ {{ "1.64634850170019781216979026794433593750e4", "1.580523129961241765584212259909691056236624717712402343750e-3", "1.01546348252503362826107105198333600916123885616351929759095090370675683807853397698537671019348523544289454424258903395372242729481623263158900841743559291226322042608326721672299094222138476822715326186152957264351608036142453170432188932360709929281850323115131827188070509946087921486355921396837" }},
+ {{ "1.29984771123733180422585298252613483782624825835227966308593750e-5", "5.486733068536071497578454625454469351097941398620605468750e-5", "9.99382895797564405052408771210317692764125583490813721738650031785719409851796983570805688722349822979681595897622086712994137349075757656980372150545265412692073900115244181782170626388308672797472118433651575906690160786295103594530704832482562910548180219532761382129979082146445301288761331520852e-1" }},
+ {{ "3.344994107622141221725087234517559409141540527343750e-1", "5.7036284170717499364400282502174377441406250e2", "5.40485852822901975442109716898610918193900542520961776863305069906497895793489542547982159745108266280524490077140951661552295048439266934614559790866489193897427949324691009938697269495988925070011169411841665487299534902136008055662912091113639828368592572760704050198717640286295766255031666140310e-272" }},
+ {{ "4.5876926668516091467608930543065071105957031250e1", "6.940088848410982599879126553332753246650099754333496093750e-4", "1.00265878013514519296809865295705868217393246867225559245606227172893223522667583594724300322356488286875380629025637162385262938162022625886814529504008804417980773476428819488610083450291142913844379562656183905757559036430981251862699509205398028210683848825112302095809741897956564300820095580866" }},
+ {{ "1.83659034529005538161072763614356517791748046875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.28717719818835121259326115250587463378906250e2", "1.53726930767980134628351414040002163694004937538301878071492381306637265403593248974390687238745936146996356402451151949754817939176416474547668969917407094657482938942615901000965138448816198787619804034435155352704149778316444976717855180409986287616695020212770570197624985971189801426264668362739e113" }},
+ {{ "8.6965619711067474297341850508757943316595628857612609863281250e-6", "1.5347053247153283339621054892631946131587028503417968750e-2", "8.36245700894899388555856775460955394048641742342223378203581109445790321544636857502869379407622931929904915591813410010543421311751441003345169506628319334514393326009523930245673734273160199057057608984977895920935149203153332718973184503752228376603699406900321208889195409621350940486281346111426e-1" }},
+ {{ "4.77866412699338716230101908877259120345115661621093750e-2", "1.16847487332184418740155251725809648633003234863281250e-1", "7.00939095440309291336847802488312895385004430053772751642212203497067924870860269568166321148643247526572505972984054880543549485653717067216843154655077419087852705718322510631592242331848706588637404925586365121042986696317386544833327481602868949385627978856713298735650783856235081147982296346628e-1" }},
+ {{ "1.5496379919649280054727569222450256347656250e3", "2.11204960957075971172969275357900187373161315917968750e-2", "1.16782897318171377990330689886402903355059628193684114132825684051875757607797689933491076299185969963004000061078683006351157287011440524301691431503915118755080894616168235485089522630543579349054155603272650786560006738889360398191602249883148592535791585897969899944427735543027279681332101510149" }},
+ {{ "2.4700067947116121649742126464843750e5", "1.524990827307894439290869570413633482530713081359863281250e-3", "1.01911645804528060285295007365522901933244353571254108413776362642912835636609229733378877024828901273387523484327765744744502840827542422973162779826478327376782490303695679704814420712110588844007646988152318154340574171527693080085147287526207828218450010980129801914952299876654249129807403026665" }},
+ {{ "3.037235491867054356165955830704206164227798581123352050781250e-5", "4.511103232652476435760036110877990722656250e1", "1.62158625261315621796784260963880908165199570383258880752909601743905724906716730454255511124675934144867399204404978430279501754463613692043192608111413253272638040513583589571469911855611383025946828382761211165356334768347578605666178294674917101334371471550226399719868797818976469869780054171828e-204" }},
+ {{ "1.79856395286417303225334762828424572944641113281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.3205911557676336696770177936421930553478887304663658142089843750e-6", "1.00000077517217823836935248077849892691299847903424265238524662417641027601052147271170002075034613200815926835872160958521395863660559755851166354980024967551112970300127247095245969854003499125350435566412954660499861774431261483707515396163088724936940160199016889915664585852452649068941190636190" }},
+ {{ "4.4135593735414602178934728726744651794433593750e-1", "3.4264101814415937496960395947098731994628906250e1", "6.74548555036519520791276201322845305843766995125882533366758793048355043544777974793130718057932582612619627280143295972890756755586060864163343519807569602024123450673829021330095007485505005460893008699595178496760510808546265795771516348135206769564722897763853591915237047669941031110007831969575e-13" }},
+ {{ "5.6917199182992317219031974673271179199218750e2", "4.980431025421458990365408681100234389305114746093750e-1", "2.35629700595091638395832213480888201727086153567756638562745744247364577078732772888391063571800696941049290536498639573875131887930844892410621248852158649248884548273739508794634953342193256645662324249539648039244590505104994015484168576899587920875428234320711411322714373060714140422162212909132e1" }},
+ {{ "5.76954356011381364402468285845770878950133919715881347656250e-5", "5.2511187291456451475823996588587760925292968750e-1", "5.94463304445870155806025859667737584217029774659090091223865132706141204011793568374081383686497430278169952431756767677964164234313821914580067310902314296078439102264644178954457549643252195734243656729528702645014237867821529512634908260975861471735012585206572278726071364924835281322609605715766e-3" }},
+ {{ "1.0512376808920871428367285749239101733110146597027778625488281250e-6", "1.803264129332194443122716620564460754394531250e2", "9.01096635654174895730364890004274506998670967372315294988820585742497849923309225303695080415166238118944235696360277258545630995713146996451284285658251097270549397299546887024456736142173128664145649440632706184379221313274424739352233838868194748496986549948050292922466160812395403732938083994855e-1079" }},
+ {{ "1.281632386074353924243496294366195797920227050781250e-1", "1.1652410215525389958202140405774116516113281250e2", "1.07879719574926016494490747415323778012199705593394831943581938296777477488312425323506097154699459156568032482136467971947677672762383992541647262353219851774496336332221673599562229050781431336707003943210680119687255794953033119424826346843688505841414943672869216307940977860809662475253945553141e-104" }},
+ {{ "7.872022514530490298056975007057189941406250e2", "6.397605722050214716034588491311296820640563964843750e-2", "1.53207555977032989055018208938771579303277505887799197079806149426805566503858217166434829573392590992745607709024458374528640995879305116834709101892580164791296787623750765678369128997876794757719509455355831607218534572758406336319858307548393197701741434159035106328532033366541994641153056109739" }},
+ {{ "1.854131908725732955645071342587471008300781250e2", "5.69406846692120716113549860892817378044128417968750e-1", "1.95656735368615067592522859512955039643574891198504549379998394284320814651945584264960315505975008311532240586619468218955713277820799989277348072854744621874725681637220043518336051308494199906438625737004480910828551371454866506648373987268921256736551339157313351536645840751017335445520822528269e1" }},
+ {{ "3.99959450842199415454558675264706835150718688964843750e-3", "2.8670957835011812164793809643015265464782714843750e-1", "2.05340685717906270754605609530501932449443307474519553599524954021671059012176997891604734383935653924096296837478833892286774229478680952581431502458132810484806788952807655375243507984165689501659897282979828575230799553474262829100370309746639962529485962944150334131789310986002849666502428526895e-1" }},
+ {{ "1.84674139572777286713578526189394324319437146186828613281250e-4", "2.255716592993170510617062518576858565211296081542968750e-2", "8.23722070622293990830799081708429380180065314114356604329745073190591014971022286949735867992102290979570786194665670044964971913376468986554402193499702945966888241927569660743521069322430532256408138686743620372490125687831732257527068587575688326301178711197108267406944507908002982504230542257301e-1" }},
+ {{ "3.584739111909031635150313377380371093750e4", "7.602453022229758516914444044232368469238281250e1", "1.78031144785764416938612223102409855040299356306284612439958299013225825622202999580381834230141933121841779061836895061770649393695477680433223418771879979265527918578121214616513115300315506936777567650603403724811526574832706041635294702581230395655527148395841553708668562384577527922279281988840e346" }},
+ {{ "3.71269374692093090395417220861418172717094421386718750e-2", "5.327041985305960299741309671439637440926162526011466979980468750e-7", "9.99998245586875139489901271639028340713779059130027015276766418411283294006537627833255021572845938748168207820412482122290518617722205438714506223415635135045747382101925106285222804464701875561904552995223695133038388901912278020591663993121292169965721308487953050363811103359158918910384771899011e-1" }},
+ {{ "1.70108553436059684038639261416392400860786437988281250e-2", "5.1660750468378145586548222389922102593118324875831604003906250e-6", "9.99978954129792622644650032269094574319631975777438486754903659150962464082118122945419410503323172656817200054190506282421527117453082829189458035945776425795407971906137471812197621061779135748565507246203908206485915975691199432826508885650310574999400116127525787480206412253878273855862615753183e-1" }},
+ {{ "2.09225836667166789993643760681152343750e5", "6.8566937448334350224676825291680870577692985534667968750e-4", "1.00843563284699754528712961596450017035453860350588570410059871012011253379813933654529429045301434484839481489237559065322374683637748571974104032389976926103159187339564349254244671809494052575105796625285810628759847430784136996879048594191371809811836063684074535025913318716848524590469577859424" }},
+ {{ "1.21714727542868383913798879802925512194633483886718750e-1", "7.04024274981674075615800667549137870082631707191467285156250e-5", "9.99851738180285989619013743122680620229360476738383672375457223596142024538032582334141363701685216531955627726353087504478019029760906182307020379318817894422274668875967247480704625723584657033632048027924110460864147683431850155444025526123837240535234902995892523890236573378473187948012001689440e-1" }},
+ {{ "5.077368207710659725115376339488193480065092444419860839843750e-5", "3.97089812664133678943301219987915828824043273925781250e-3", "9.61496103531524292145269969904333508188364139708137329208759077302004651060803860997069231846146525416244529356233531058823752839075298907756560474430217361656059248345442657322781131236619023757967452575027788503647455091630937116588678330308533380860226144011143233073363114955647590755520397783133e-1" }},
+ {{ "1.05107095024027863416904438054189085960388183593750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.03411347779367872590228216722607612609863281250e1", "2.75435618440696236423847758785039217191601787351549036022831398969378880644344551767328463505949691251600586393797511528994909897140379260738080763330267660481025359227717949542759648019166102411005065795694130304853332521480946507674204615568889856249883941530835820527992056685661760535222848429821" }},
+ {{ "6.049918012597592072501773152737314376281574368476867675781250e-5", "8.188377133726698957616463303565979003906250e2", "8.65759593884760895858132938458504295554865358684199156580525629386190771627069601339728387260476959873950047671147626130674714736942807728977752816985626622779230687686049014608462755984076183185977629942323400832151270339085974963175219245006492664764899739861651980200882059489983917901390447959952e-3455" }},
+ {{ "6.5174474814096265617990866303443908691406250e2", "5.077102163366880004926814939913981561403488740324974060058593750e-7", "1.00000328979143507415685697811442096253363291297955720636385496027164054688294193762566482130745852122932064218776073663482596744861678935376393042841878114830402198126626873661961854660156517253426476105318520395463096676472118157780746408448524800033381676594338617857965937768629354079942055143731" }},
+ {{ "4.6388449163862754964782197930617257952690124511718750e-3", "1.588924357889719374270498519763350486755371093750e1", "8.33715260820791317269987064747412391800309849955602033217225409481400578667858265909262657939940738177907804353137088637745857746470695800199690029742037073210058760217313184489359114691758908649867287570270285365266943814797806817843515342646282514312200010453327035336204860831498248439822619093280e-38" }},
+ {{ "1.4905828579579060615481478357935429812641814351081848144531250e-5", "1.7031751825887083903743324242441303795203566551208496093750e-4", "9.98108922622050827087546461298822670842973092479525322691759952475540660272868395330655428828449033553950251437644999243615808527145214868010990354809843842150796169597464947831412602935689456012651060606674408759590837715937317107067113406559618224088301687347090716482594166112826991011166298362788e-1" }},
+ {{ "7.50315265219419380571252986555919051170349121093750e-1", "6.0622251774968738402549206512048840522766113281250e-1", "8.40175419689520964937445314051307565108961445693694723005043311860973648366068520257018285775532813235354539177271941463790001972938524250513944002301467776271129144936307452041012641877576914077850978415809262774052418002232753061586235460151777159128199018488311311211799819289180487350061980646390e-1" }},
+ {{ "4.268470367888721342733426844517907738918438553810119628906250e-5", "3.258430440221719658457424917408218334458069875836372375488281250e-6", "9.99967215285852515192073395540137950482554540502668958238310575910483321879481952698928091493628164541705483350832773369892703138436296385686888980010809861693571807457349075609182274750398269557656870778473684116326560067055000556274923680535552295628380182973673412404308833575096574012516864815095e-1" }},
+ {{ "2.62667296496937296979012899100780487060546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.98943432793326180699211569447015790501609444618225097656250e-7", "1.00000067498249093796554190906335150484537007905333805853084798522029363004660855846859261868482180160316566139837296027351379815963628562093199672797915615284584800543052123602981811247334355647141931097257473080865200634384690696676990980451941954802180365065774462909125574737179287520936788897430" }},
+ {{ "6.70966669446914210084287333302199840545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.1631038456329054128768341058730584336444735527038574218750e-6", "1.00001744257181843369125556914164986065767377720999640888705793438430385027106235014113094055738186706162642114104415940235112867181288621050157885040444050793876376258047873939583048138039901310315757778797936384132441774545886210926930901727852204521859059543099653693673834002390277355781829097039" }},
+ {{ "7.41203371899830177426338195800781250e5", "1.080452434978750069676303735555222829134436324238777160644531250e-6", "1.00001460353450390109753320201848917579634289514937879484407258848004890744776169944597998175250117503923620359242409184317540187082543653993640048666001395047165769964336795615132413269257911431079896523695358479509374941248440346987424514128254145411471716437568325046246372300034330801593929796699" }},
+ {{ "1.6915925563799362407735316082835197448730468750e1", "6.180263869277183297334943290479714050889015197753906250e-3", "1.01763302348245649415440222014057755125288511751974439494118531238495212343084716356590900135150471489029857630623786718849006602487868725615880115082270216521029606377055101314827010471252021762724425333126829904634616800319752383603387644619737656819562990847546393907303039685961266007323499371276" }},
+ {{ "4.71460529249768889314964326331391930580139160156250e-1", "3.65188827816496541345259174704551696777343750e2", "5.57039862156640741370099717884062397571736028728524050580037613318788846117662035095375103738860527021001943141141148597120492387251375648252287053831107964249223144395667696166786054472499439767489130687268705183565392558321079668035341534647161063188715235627145576677691259556611945549071489064974e-120" }},
+ {{ "6.649823635178329084283177508041262626647949218750e-1", "2.0412485989929366955730749566555459750816226005554199218750e-4", "9.99916721594674747376600569188805403610749202879145587384797447934876298553391460440217614450811626491475153827239769211949770987067539929764774811195211928780393852025574440532735397207179531706592529705918782911567387089221968997852275611755107175151890770337885129722749288992344581262036121822096e-1" }},
+ {{ "1.1689344174400408519431948661804199218750e4", "8.15678606859390242789231706410646438598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.51388885705521092082676462955313303770964042418254877907252507964234420916080103781270109330079123766686738994000772870583969928581773756873588657991143050640555136731739608625215812170605441235916882843841833089297543893622016574335981753027769495373907938555110085958780955474425308783814139862813e33" }},
+ {{ "9.764006258263712920153487573315942427143454551696777343750e-4", "1.864429866329895268961536203278228640556335449218750e-1", "2.74623224798347601232565592691979711045580692330641567994756260200814740060669606546590062265074708542429821154943403107394779336685935160305728814542562226163058396994725320974264154815235226634053969860486205541938719842224052325659161610602552591765080618174794519808159266445853952938084827117419e-1" }},
+ {{ "1.87868482843651634084380930289626121520996093750e1", "7.1692987273281232774024829268455505371093750e1", "2.12028119371494031430335044645564708556145176065304647173808454044697019950167941050283479818252925468559303066000892193796628006878431527857608384081735638513924751307741786259324802053021768713537078672257166368405154064404708746524318561350343547073960189134086007775921344634528456932868446419630e91" }},
+ {{ "6.1095693489192053675651550292968750e4", "8.61245994668030334651120938360691070556640625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.657007928541288294811583817545569607832014464676038743964777536498999871997260503817641545878415793384542051422692777345680017433348671458013853303440317187339805594208064853234977344701458031672246519856148886015816160733326713509830759728307312465258659896898040851868954253501173778760212364320e41" }},
+ {{ "5.12940713132187653400251292623579502105712890625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.285644350198942550142847118799238614883506670594215393066406250e-6", "1.00000373701282973747520930655159796229096921541589463952802693848825441766023480118817224366828254246104620872707491850843628745742807472462411859435943238658855518813616022964453910564185237673973654468864102738810104394810487407665604967406614750596030541491730666890517480494969397423025082726828" }},
+ {{ "5.9691952797515383295377452976815391139098210260272026062011718750e-7", "1.5718058210615070579467891787039945938886376097798347473144531250e-6", "9.99977473944483761872828387581066184030968843746303338716635967128051482967926885604187120298468309076374477372898167140591203610593108721399453839682426096478159671434202750765691646383078954275710747248498138805135910075991839124150638583040898450493059066421550145802666193053679045930003027645237e-1" }},
+ {{ "3.686062142486083992309886525617912411689758300781250e-1", "1.49260037966346908013329231046384393266635015606880187988281250e-5", "9.9998510356549311348447592218399988108920778960674235069856751667182339392598123994325942355644458229974167672565122670312318271933327236417417637712072186685889850127900657063502042279027378895935315299539289874632736786085798675859434221092674392826093829832333880551302119483318252762377651960870e-1" }},
+ {{ "2.75108139709647048221086151897907257080078125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.503704308271892386983381584286689758300781250e1", "6.22207684654158090072166193557643641149481975652647701708530399277363664695064351610680468504557225898194931419933867113331640493326162327026706800979963281990313857552256767561246682453632232432467037080629483164984556210425989798928121976072588554960434306958147259366170108308967342505596481568498e19" }},
+ {{ "1.811624556732920154900057241320610046386718750e1", "2.552600004410090513530875999670399778551654890179634094238281250e-6", "1.00000739442221122260724005033635770725844741914207974197964181739354726511926916714698090584379202017604302885037125163720681613028683344989131816590462063741786918631523895090976438946284620031268598318287495015673164204411596879025777677083658398098322196424671094954029116891354161564494388093193" }},
+ {{ "8.96493500879970817152297968277707695960998535156250e-1", "8.5687515754119067423744127154350280761718750e2", "2.18186472758714615747935532618938695169587522725634994323764763361322541875338494379271005378981383706775962465651100098009942121578720737172235160080858098630748438403135919432305006360154000115695658966205609995229485314131439314904570801339124033312271333615588491334684665719513845178970476180503e-41" }},
+ {{ "1.2661287980897948171610245537976879859343171119689941406250e-4", "4.90879340262861951771355961682274937629699707031250e-3", "9.56902896481771879143877379682638527882901861190229819789042792546979238367054331337767498254741605069110970147845996240165269976456347023401814558426675219095881612725781553874494895757386564444732770552998856125193687086542254594118439921159929235553297916239134941949770234940282427408194492643353e-1" }},
+ {{ "1.051797461093969659464905652690447368513559922575950622558593750e-6", "6.5937410071820754323135282959356118226423859596252441406250e-5", "9.99092782662380324729163640655313848714756101648128347661760755472309885143398472302956067855710190800993042892779094559399021527010697359107101541167758299014549008387517426503427862359734988159027154498990787998696863714462719474369182220777439814743092111459144669908819231194636468040015004769487e-1" }},
+ {{ "2.26677931802150922635519236791878938674926757812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.01284500605095928449372877366840839385986328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.04799524981909743425238268974274974124170089470250115095198088233403741098790024678291238778471336000887693628348108623078030852501843027636021269414992355439834109447548416843301419510567977485938290387496561912410461657784176868621026947292962832450377901755820567805673466030070278228671530695195e1" }},
+ {{ "1.47645383833588006439185846829786896705627441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.3477044596248651942005380988121032714843750e2", "1.81864953170833366001029957686457080479745389229343183507996187270256012032168347753440691289295163599099444007484206082939466510290612710007371495952373847856242772883552123786185299979765598455416935895627334117098932505280856391911876837712397381549095944110724452719067485663398985307194410072346e141" }},
+ {{ "6.8369046056257509746956202434375882148742675781250e-1", "3.83530767198103986204138493576465407386422157287597656250e-3", "9.98542687144721504190991783229244229904437024428948393594123834827455412276977464755147963505927618995184986289919531376928027005710396398910486083058794955925781790662773364003988254537015097017811287414007455159323257827799204950099119284414629154584347927772687791013118617040392415483793228615528e-1" }},
+ {{ "1.002053539055872133367586229724111035466194152832031250e-3", "4.21472319667746432969579473137855529785156250e2", "9.08953646324319429602818744612054042909432561532126770140572825180403651664408870454180981154606920328617475099247353850589948028434533205453640961164641456021776839621300753911422835934782850338468313312210488559936609343534193099022841479411388023651172446221865345603921529386692401675022261632417e-1265" }},
+ {{ "5.1523280283123824574431637302041053771972656250e1", "3.605102571810556155718074933247407898306846618652343750e-3", "1.01431289853951002532506377614168990948051280337886607436878494527645645147723859636940385995419356184615086203041458176935646525562258868511947236909026624331932959131571326296466151873473074426347666272446566573176007728397599624815497760954111152173140369195400219514948443921717606923360226206339" }},
+ {{ "1.50327863210486480966210365295410156250e5", "3.2592870520402448164531961083412170410156250e2", "2.21705224525603686559675227491858310594380597690754424568785114801297385692314088399732454361300955075549296567427255869777962816305497530312793581969492733775461667703068826501146498955373099052386164214730524062952781381010426318671419140310052915928431939434595652675036589780009141539593357125642e1687" }},
+ {{ "2.5210395048109605952227352254624292982043698430061340332031250e-5", "3.0457256960016615724914923468702454556478187441825866699218750e-5", "9.99677562816744661723525153627124442052964231793875730324917063167910023632186323828596851920875156111103787347156093646859907405739307639598484356543171131155872282222202848608366838457688692164646235280817749009555765844448651859985081286265963272205351701235959915053427147246220456364075290757788e-1" }},
+ {{ "6.69572868673203203115917858667671680450439453125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.1676327121801987523122545731268928648205474019050598144531250e-6", "1.00001172763619213033390863469162514923787137097731257478379858496528955583730797624990721270466292542630978166836841730894536953419182253636303821927335171827673847960943549331513055995583023583227615832251837950408037083523512010882821232754743304332778547391577736073428707081283889265580574098969" }},
+ {{ "3.90611154895943855080986395478248596191406250e2", "2.09392819734250876240189143118186620995402336120605468750e-3", "1.01257436238989364436740053785780748984877719711041249303794530677616720891994615335093220833940115128861191606642103642393403535957041953141054150817528925853538686389534782202437853737346681413564667163289005149907512827692491679645604032151505662903966426036149340526908388743360309704155643902314" }},
+ {{ "1.857389689084788551554083824157714843750e4", "7.3490044908232137962911245665509341051802039146423339843750e-6", "1.00007223974053029723271350039259412141636069806425386754509098025549121050837680692710943206684686658573776447604596802766176331791002163659401284496154417281082333498905606330772551902793976098371405853098920109852460783688567109865594724989116482969799710457089092798143235841330467446343910216945" }},
+ {{ "1.7607061517663445556536316871643066406250e4", "4.74889370868937987779645482078194618225097656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.45316765019878240189602403680427223818770335223288608146347951094991305163036799974448576646914163732716464031107846083674367407256925355345653200850687798959392811940414372053909694215614805160729642095127896071955737496902022738055554549005006428357198315347861922794020063710653902271293794797134e20" }},
+ {{ "8.59257176966675461152189718916361016454175114631652832031250e-5", "9.236406780605612709678098326548933982849121093750e-1", "1.75626791055079856222412335079669380796397627500002019826921615591957724636638189051537678939438100683331885757581588353701345439775420172078880839292692181866988352748585676000159933320197094086021294353349620582341779917757035411891306338495037492064154895428084541796948375617939605049956389592963e-4" }},
+ {{ "1.1837336674405312878085791417070993247762089595198631286621093750e-6", "1.6732627760162928912601384978664498248690506443381309509277343750e-6", "9.99977165516365318634154013098062676051482936340600676508115018286371174310194281664961388300484701624347701999911368618575116158865905431420415090042447533719781066713262060337264603666364847020671540664275635449461141562032657119830142469510330575908700332922190579477083626027776803818572001718803e-1" }},
+ {{ "2.7929704683754344451962481343798572197556495666503906250e-3", "2.9713508936206637842114552938710403395816683769226074218750e-4", "9.98254178388410952430693242810343707992963411946313883778028696826023938537768767830025754426281554000607392763511414140886618834915773502093937010404359418681811029932841236322654028803608283276794373781000755359892344545988755782370138251235941283542297935477464591913844965660089628462450619495872e-1" }},
+ {{ "3.38113855762533148663351312279701232910156250e1", "3.093016660149662663478742352651806868379935622215270996093750e-5", "1.00010890478594524709067739908022368917088132812449962876399165997211946438304504899291487317819472340328330375585022333633583894340550549675803507677712058170618442005704437605073252304959372965881786681685588681179433355904579852317919540925268445449423495866437480095339165546614783853750408452453" }},
+ {{ "2.06425930083115716229258396197110414505004882812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.22320068732874709382940636714920401573181152343750e-1", "1.56994381329744106645164401249639056164129850194015191524774235721349310749300345652229762055800940290782810800288250321003967654939060262541583665184611869025848444849240326580936044484294913651408991979990620894378054306407392449503735235963890733618686812461995281192108663576402590588669671991241" }},
+ {{ "1.340876954053071834493948699673637747764587402343750e-1", "1.4827341861663803634918679108523065224289894104003906250e-3", "9.97025233069613645577452155667707700431529405119046003459330154763708616924139333978711947517286910376855122315920165412886432318792826535847675162918439845483335638190760733366507881163660357422897573743052858674336878106847554903297760383077263299654131223242076136517464708165444087161451001347315e-1" }},
+ {{ "1.1379582983750003677414497360587120056152343750e2", "2.035002012363793124196179040730214637733297422528266906738281250e-6", "1.00000963457189792748049744783509653303667431326364869818483704842948351380610875652979437988682746278703117572921123081696661945181740330111308085604188704279357002138744426600265673193487995475006875655840336689027158444662492494587307695412667171074545903613666004574014189607190377465209019809696" }},
+ {{ "1.4373394351522417568614575777985464810626581311225891113281250e-5", "2.32214836393443135875713778659701347351074218750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.69028929542482647910462333162857910188985784876407542387662931701295222184216133407420608557785163630976401541135533394749225188544894532723554319205860877128881077879568220494222775086397987960274421371074192662130785663013334009285908262792624635778476059436229937151198221859566242280319019160525e-12" }},
+ {{ "1.4004427278933599154697731137275695800781250e2", "3.53744104780148727051880541694117709994316101074218750e-3", "1.01763558978681810389405573088195138451898513946030420888756116873548356901540068272802595421797514887115185086583712361722645481445016465906573909064890341678510048829617311165144452645678278211232399208153808746476971992206798944801345917584439323122735213774632862994806449009371980892407850308879" }},
+ {{ "3.3377061563606758021194309549173340201377868652343750e-2", "5.1634069105928119824966415762901306152343750e1", "5.74932879103617263287699269441230578657539752277509100498121992886363492927534654879230172186557771810338441534937330485904491247273189306610489852019997049552119104082607943340924820476508529648819831797793990936006114678588935819382061714015089476930073162215255275726210879447826384500950556498380e-77" }},
+ {{ "4.28996264268685627030208706855773925781250e3", "5.5584348273515146732215441716107307001948356628417968750e-3", "1.04758858160148749573207693865097611258682532053580644741708378607626299571741454781489071163331961478583318303704887429698138745438016282037356465726871543404600493318018423949357845164509841052287336032095968547544265578409278441961772371247405527391823186341452132702680834735192488255543508774968" }},
+ {{ "1.2811034459606310265122885994060197845101356506347656250e-2", "3.43418931353877687762121695413952693343162536621093750e-2", "8.61015280162581259611603041281312219714750672075712379519625520748837900282815093599469657102449329452585522609992906027038154076071639645146113938200595344162570525215006263974571317023675884323716943933613404725430584249433688012398115002318410911938391274174242791011414117839535968615208469771466e-1" }},
+ {{ "5.1667251794698457190158080720721045508980751037597656250e-3", "1.8038118503281862947023109211563962617219658568501472473144531250e-6", "9.99990502044552423124036840709042864832582112050272720529614683113869481837430803897286965523406403026476324601866776220157395635334324411401951420003880457537783083750584239021034205680737146324172685990190142433894632845319189846259349630351570776916287281796804645673831673367339618359511691534945e-1" }},
+ {{ "1.27899907316783210262656211853027343750e5", "5.2253602409032748332684548131510382518172264099121093750e-4", "1.00616341899333551359328361392752162344577264467244472586370749414301840554961173829121346442368844768868155278219296270614015234651325697529392935793355916715136924941286676982861345063267744784667777743656327428634674404454023683239192093835032100591051537658643852513812450455406749057692109035777" }},
+ {{ "7.11730850188353797420859336853027343750e4", "9.60788079495505627572460305430013249861076474189758300781250e-5", "1.00107405241322382059953913596876333435454811871669131165966566428674069591664017854016649566117750922070455790150785398980453750449040916943909541516125417685189264145037334413362116738563574347465747605135946915752491452923545893529316360034715492483804067411471432361687478500733144787639791290510" }},
+ {{ "7.253438265676650189561769366264343261718750e2", "3.29954091776851328177144750952720642089843750e2", "7.04970290589109038711395049954355776776342381310886782453562200726034000844667284742622588171082170563883520775218082400856123793786048177341878726458251943347876583569178437736653743701492064380769184875657546923031668880530296652280260428229230807500261114316496980898463695380987245993698126306466e943" }},
+ {{ "1.05425305597257192857796326279640197753906250e1", "9.4121156168923067464326948083908064290881156921386718750e-4", "1.00221940552517387456904940935153668768677803438018028587024892341085297549561710698873774378670329922261139925263482590967131460066291169951663366614190003024630959832086281000186573153943388176622129526851339850140935108594752581778544126368342198113455082270613501744317697800189856112116044092035" }},
+ {{ "2.06616686835977376654471804329205042449757456779479980468750e-4", "1.69516133890853029630996218202199088409543037414550781250e-3", "9.85720096393058346372084885893839606320554663169456270644249004310463500725457211657627998908535169742871675934174757999843761965159654941281377745862394591058408452525449223020548106433276286869407305925521861569746775217097838170535894284575048909646530082294345563168457886536304399266956794807072e-1" }},
+ {{ "3.64402451110348510332492821817140793427824974060058593750e-4", "3.20455824353290882888778412507235771045088768005371093750e-3", "9.74947852438644348963594070779458486239729374924703758041706549021145269914102751629698949629550481353884433142728878758835488685283460683679637491539837448325034596988851330419929610091798061933767303224300754233414005420110971299300889653323675957445130038468323617573447274322484402694978713617040e-1" }},
+ {{ "9.2924091843635910401401692415568334126874106004834175109863281250e-7", "1.10041539819032330171921785222366452217102050781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.30375096076042540689175588676000039497925847630595558133397707131285132566953633275113891277016515974090275087097707081223643727147456085023753621384884096242056199349318008502416132788061805089253485591443085259511013177192516510953942353610198267062490629651968866334656113567343023162640866499116e-7" }},
+ {{ "4.70374294317859518955657338601383798959432169795036315917968750e-6", "1.29316103610866321105277165770530700683593750e2", "1.15122965827666394521150958097124834553922749706241413675626621322918765539817839286128014659593143570942315119838489669350005299860384297452971974330427527438060831168176929743817135707477251203472467806027668891154074309800997369457141925072379579611854152032663703570089179850821080592817602489379e-689" }},
+ {{ "7.90111168678090834346927628928369813365861773490905761718750e-6", "2.50142935632569063386654306668788194656372070312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.72554973148662694166759157160166169303284736393781157514352684466477860400705537599392645875431865905681445772161441577785663278326674184262006684080907675404076284363331862467589217294540329968481020258307213288969704999028809892457240851077890832023610976308448700744934847296072460694151132193050e-13" }},
+ {{ "2.1947022453851494638854546792572364211082458496093750e-3", "4.5540294660816549310311529552564024925231933593750e-1", "6.15537644035230762511257501642891052274838428807882763659106583075479589103986905326616108567723817554261320425463998387402938492727716723367633134645452074625478383896044161060182209094299460842378984988424538062120485203568234956869861031978112571715328186447068917826940102237728367749115256994036e-2" }},
+ {{ "9.5937575276791223601383085117788596107857301831245422363281250e-7", "4.7060044781868145946646109223365783691406250e2", "8.34074971005352694977724271428304704379730503069979006543824421982543154474277701862893673330086806692863058917258547615336829675716810145864841475235135109391399496144355613620559781473891279309689200469472005874869702401500915898827498117462493418903426151104912981808366378491461635507492430973906e-2833" }},
+ {{ "2.2073016502121220128174172714352607727050781250e1", "1.0681513883705921275427130900936845137039199471473693847656250e-5", "1.00003305295163452281794976529673484400203041012190269638476184821369788032078572490628055955783906515975070132315405678121749687518303529356301281556543290455691541229667405975677836660331331546866945589821129205572181796808319706436826468956587053252695087454167269382499127173288396374118362076812" }},
+ {{ "1.857807898420785932103171944618225097656250e3", "1.30823413709633314283564686775207519531250e2", "4.59033859659617126254628613087390514142443448071790104857905386498498208916927300817260750485505223182216712213534955208892328370772179606978553650153083374335774046910050899642665243305280141884413167811281876091816572586748238812963621916941228650345907682195313189327181720960131248296641667634950e427" }},
+ {{ "1.28002693604745983830747735332522552198497578501701354980468750e-5", "8.28203848010336862728308915393427014350891113281250e-1", "8.86706798756547273034023259748332998697114154360428093064398895642136945343512222443801509462788398508116083101485126653725181025691107909977090006260480711914768000641955268595050193784354949171562687163857371073429271907026305099383798868693635018067191669439164014101281294813574568021616736489720e-5" }},
+ {{ "2.0022337970233214377024921759584685787558555603027343750e-3", "3.62365481395694466471013583941385149955749511718750e-1", "1.0523546079739996170682601256693200584550474946824826454017096763153491367530797919426756788342306442393933513442225888083878538329106122737524305933086973617593454993892855732284108545200057872375959005456512921309099752780291866382542273850296660218802026761451051971279229272132557960744013745380e-1" }},
+ {{ "1.469752780871477591687415675814065707527333870530128479003906250e-6", "5.86458989513311337860024252677249023690819740295410156250e-4", "9.92154549068701501199366439766982295808371482320630816324433379463381296202639580495789257638722760912167367897485745357403740992265341544963450873213458100774396760614353635868165234585261876587876465994053070011062897736386668244554072898747895651881702386350638799402464850863950102149208151366166e-1" }},
+ {{ "1.69869769328567166155607992550358176231384277343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.0945166435334793483824533666393108433112502098083496093750e-4", "1.00005799594795372584357977768556944656253178249587480331145989344864034282666379944361611058467140259982713730781408566683105999320504528967383185252941819780496432948156779669264240460517640856647134097150209519411486934323027426354907715934579141058953345456267906766103552413735697517517849566921" }},
+ {{ "3.151839759293328825151547789573669433593750e3", "1.023840290841496539209209970522351795807480812072753906250e-3", "1.00828189958217090945616829239889322422890752450091752768664294850744665096849748731214361917701488824218313674215416049035608435896320044761285630475680013499593324921963112908846599652343142683769107300940314664453753090942709855630290654440762603604322610449245678270429752911593206005276375357381" }},
+ {{ "3.55087476619042874403930909465998411178588867187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.9895693178775673004565760493278503417968750e1", "9.32018908151418417859876732852718049962350652342105850490583184901223805273843023839695354873994074279947349253543933474250055215956442663452932535132575000870445343325403706967004656960749057879238157659107219147411710899538754744145348815414311088777452109665676822468399972746650501593917415911950e43" }},
+ {{ "1.267754887968159891897812485694885253906250e3", "1.00502285798295979898919760842090909136459231376647949218750e-4", "1.00071834700218288240776940900136375146363527699090847426981092022769405513480212911323057036382071349683106853880233005923304991341200308955960878969600681793506999384869035120625501911973134511693383019876699301926591009688967553141397068289179934328294897849913598948019612426308123680588484240861" }},
+ {{ "8.1522004810576163436053320765495300292968750e2", "5.7502531130550421992198018017461436102166771888732910156250e-5", "1.00038554010810039170759525901230037332621377704113376782308969416671995519944631372963790226541075839243378526551356024850278824940678165140037685990966568856425831851096416371162933528342527414028064433797747326021549595783932074419350022816349807211737168691836224208314746714465025589975731455428" }},
+ {{ "2.65027968976974648285249713808298110961914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.003165491246268459235579939559102058410644531250e1", "1.76325996094662828651112161237788953415887952374670102134300653855113287125254830377423982732034899162480399742930099350206403828614662703257591959653574878666923823464038672614887656376458325931158457664475267311806542914278433869759036943522883194636568041344283954333960707999807543121267715345128e4" }},
+ {{ "3.651827512952488177688792347908020019531250e3", "1.675564512656399074330693110823631286621093750e1", "4.92218138915478317609234268428449378609898504811886050861657038624663939529613919692032879990877291035109701590929770282532279774612429349026418707716959296859399988519535881353467118924067126621065164445440389423581971051504964356883522778929468170495170856030672143818408689238481847643503940756672e59" }},
+ {{ "3.0606423484740545451834869972174146823817864060401916503906250e-6", "2.20328027949478477687250688177300617098808288574218750e-2", "7.55974238261708442675674596584944622380379860666888634356645875331625278958028151760326676909826129760886331850336797218123658397234427228603106790759796963957806080469839015421053939928057033567772138680185158581228274260396763090865346625773393191666291620910582819221973998350912562080963747333068e-1" }},
+ {{ "2.04040793254407122731208801269531250e5", "2.86284726793166655056666058953851461410522460937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.58821325525680163465105847555152044190569200388116750112228338962598195492329497459385020613020256287552717930952139248724578086838832538138376726496296560875204247514233017557960719338882649967806582509446295835645176351140001109236587197833843059204085625918013701386357232953416141714287393580849e15" }},
+ {{ "3.02716069476693064643768593668937683105468750e2", "6.040399597266724041055852012505056336522102355957031250e-3", "1.03510986044313446578771317219744132510998690381352607017246273580247626695630046904160285453167383058665284858123740052884532347981837364373948718495188424769656549948930405672217230120189497151355681193015659186537151773454794215525893522934864014682466868462268390720016762737891468184834184088104" }},
+ {{ "4.4755257017978976818994851782917976379394531250e1", "4.42494522046174552087904885411262512207031250e1", "1.11929646387532568976168597828914488086907276576025509760458985730962224619833220482536328707584889009590311478709195034015122056954215000823555978179815671349373291996702460104546989380293121918158085134301955237814810326108959984625471199876172816491246653847194071812034535823558646590118729075911e73" }},
+ {{ "7.8992094491693660529563203454017639160156250e2", "1.043723953933383654657518491148948669433593750e2", "2.67759107384668464385278885844815795751161179367906982405379998416580527424480738041217566954239691080320039512890036456504748798096287871747642118148076943027438116523332662829876900574449886819108021138850402281937549768122792675121441618853423616832699349260369305453263152392638804725787763327554e302" }},
+ {{ "2.548011737897549686127085522002744255587458610534667968750e-4", "5.159276612773364134589826335286488756537437438964843750e-3", "9.58205367007949169809279999461100360912902896399937272021332641770690450812544971532999275755132753113048328902348279538087441845456071781043743985319802898282971020600433571724744632298362925010469603804610543751544460798372376992115798540860563907814359172789945116001784572399034814979737998689779e-1" }},
+ {{ "1.899287505000893725082278251647949218750e4", "5.41078495521190028227920265635475516319274902343750e-1", "2.06563424507714690167714042623337538555278963530996591844954713364193688715643758076458567982650781640747670966188519005031306885869355129425908043628325745338231076914378682618756362764508582923824741998110533664940173863055464267380496758389944654061554957122449256611900453680459384297799878623896e2" }},
+ {{ "2.910204774159799723243224889301927760243415832519531250e-2", "3.10728022839575198851824744394889421528205275535583496093750e-5", "9.99890103192413085441074667861315652249320196657611339570482857071941674209639709864703891665811884603908304481549592842627180817065779143546842079140388383757073035382383336415119892457712538117493661547669850819233137331852231641783994865993482070326235283184181541427573679758103030801595943776744e-1" }},
+ {{ "3.148720015370035980595275759696960449218750e3", "3.43125111933481261039524667921796208247542381286621093750e-3", "1.02802334347014804115203210525086340106221839607209085819487247743041255274944512485633547164774253058201682853956553615818500164452268935135547407521495805328007119673698391733155607980906430692803512122247717040507439060960157575458288088753689807084410223837216910150868125550872659514690258206478" }},
+ {{ "7.5756156366840954807448382801737807312747463583946228027343750e-6", "5.5077687409354258996074804599629715085029602050781250e-2", "5.22360322691615293009344442522576915365414410103567546362459956848539698481031529793394942148327475172323264893580159766513287240943753652400314434832413344966940876720610075372213401767379175382193046077868122711719538872402153088637192089166340900530573304907112834730373371836607562222448960151481e-1" }},
+ {{ "2.627455089699745616194093145168153569102287292480468750e-2", "1.541165243980346986063523218035697937011718750e2", "2.65627927121210139869453772647172972010233396005753285235163657937204725700240182301143436917519389589272478600896823141333467649759723515447005854045233682059842082604402664004516169590843725236432591088329366055949159027684989904142732333954835416376354569871287255391194720780011944013876616447352e-244" }},
+ {{ "4.808176103728658290492603555321693420410156250e1", "3.8367829196169225269841263070702552795410156250e1", "3.41928564331678515981471338829811408659000181192686008443981749115702769340722053174798292070290561882896008338642826088125297911559295342634515669888076588557229523820060662923011009955171952757056636448724507715649589034168433634032429475749149003931613573665241664071010924406015748971161354696738e64" }},
+ {{ "3.205378732913250132696703076362609863281250e3", "9.12063633247133534681996835935535727912792935967445373535156250e-7", "1.00000736273879463173771441699203291296246037525214803383466819484064993717806192280443913585501602480713195981402804796752564583674811227808842648414027111557663920686825861938638104671353044668858964832448138218436863850713355695690765716750462185486284733337309942715764828383697583139810455212638" }},
+ {{ "3.6191217634682889062180954908853891538456082344055175781250e-4", "4.522771028821393922078608618164707877440378069877624511718750e-5", "9.99641674908429772727741716066692522684337586976236285526703123104244360091941899419901468194625324926731894302874406101537005325420303987745335631550541398216024526757166654981325659490102941309976706722307972204026369136295841549401634445497494285259254938938876164197916350437289297642860805084296e-1" }},
+ {{ "5.477271508647585385176626004977151751518249511718750e-2", "3.5462262102851867034622457275361284700920805335044860839843750e-6", "9.99989699815221047195237797415460745692681672883768835967449812852073485700626675461871958759788593113792388910307095890907937872017129700062714402629139690850899327106043179965950904385626167111246937006767223675683130961170323257583625795510235931710927527056466356951973276658601609644129515473818e-1" }},
+ {{ "3.15637438341709639644250273704528808593750e3", "4.72407848923734441370925196679309010505676269531250e-1", "4.49825547286670319702380922050187415294618434375837006137892453203122331928047047306492172079078511814726958266726273319242885369558258257128888847286538356045014816657847217085941522774109065130033471139571270092091883178037417387674630454737070888538218688730956097543661382768897165490297639608102e1" }},
+ {{ "3.4350329493606416508555412292480468750e5", "1.27250150145350989297488020213222625898197293281555175781250e-4", "1.00162336779090582285668555617540990956375149416793870895822616882369079038963730293631724525621870732184904017056404166569755879690536542415147024291651047693012257723344966042105272046767388935297934745863474716190137901174215179659999117641456704254362366255369408392878120515423933846401645588741" }},
+ {{ "1.0507424512953348312294110655784606933593750e3", "1.445127440723827295281436744467384869494708254933357238769531250e-6", "1.00001005416673874970641874885661095503816717227379033676876612730865335989893449582345456543451081149107465171659175604293715962189257810117721711365871006508720993220186972724366817623975260748578680835030711473739357905906032894783455531711583331359705157662673931729626022752940417931688341732378" }},
+ {{ "8.1865791008610611827547853813769052067073062062263488769531250e-6", "5.695354392083072300745349991757393581792712211608886718750e-4", "9.93351224746448996937113594504910401882994345207771800323049779691276470148213924723483955246436042747455629177564845224233210837232201105509371449087604601761437328836060853287056217115691403748052298316839138971392756481564106383080155540424716692745736592178985310629391299501759133150627938918074e-1" }},
+ {{ "6.947962131099967922343019210984493838623166084289550781250e-4", "4.0103218964951963698695180937647819519042968750e1", "2.23006490342279217571806140077665886981099414044595093418295957860943720284086984665743578056568297229139299500245761284073691802977046208070538242215508979634862568996291341587581554469156573033924350089621252836592701785348565193758908337598409016657851371246098654329684058361927838809573986193758e-127" }},
+ {{ "1.10592794589664117665961384773254394531250e3", "3.2526082185098381671650713542476296424865722656250e-1", "9.77248676688621920044634297401786442645385941311525110002800741928600473067163385046961591455772161080604895545524410628330763921136911631698147157554500689676133210576592147935248743333122279013651774018515939625427205237675732186795164784795174668611013924030393724917154265078516887725307445272803" }},
+ {{ "1.253916421410064036988038504993880906113190576434135437011718750e-6", "7.335796045204858728538965806365013122558593750e-1", "4.68392795308248572652843135364969720382138943730339914636303299072150410868121378543408470390954010868594468316840003936924097765196715356527524435528061810352989069642830612407823386666008449194429503821925534277567874494596141278120854458833913072506701454712189004957264318701887957792196559450829e-5" }},
+ {{ "1.4312473954279103516284976649330928921699523925781250e-1", "6.20942048850905869983307638904079794883728027343750e-1", "2.99052723424150661886931649071103918452644460542298398165637531920915224385808227208964029010419121462212498905692527594903577506198009266794868206489817939747878141799591393368960481067737790483228614343187263432824490432996787531286395390254093241449602142598445964130129975312810018929887788198701e-1" }},
+ {{ "3.43751575420593244447609038161317585036158561706542968750e-3", "1.512066870517058703171642264351248741149902343750e1", "5.57663597564430277353448388417312985615626273703902768815220625590828356254147933705830400685411299593103143556639123246778758775852967467852603984265071153374722320323459885871194691907711626373620710017973655475923376123554952810313797438555025227910644691182176423627488188876492434022067149277036e-38" }},
+ {{ "2.1747239559097812774610125607921418122714385390281677246093750e-5", "2.91971825175046888034557923674583435058593750e2", "4.50169709235325052632986882192448754882997090613648358141414144591089112598426944965520244801106015239482741658118850562377407270011579313225688643981938806077750575133252661340927273680933994486522267294226372481412223764992202845720067257372057887189374997685336348698935086839444322249450808054944e-1362" }},
+ {{ "5.6185681578075793003940532899243009978818008676171302795410156250e-7", "1.298760937531341988493416295114002423360943794250488281250e-3", "9.81481816351315594384727007893186507859436644672331091167617928065788693663352781510746621160037607384076966766971591864898782687655354341611390803359295084395315487119152362491516158659729010541073082819881189326119491997777097209681555255784910126963441436697354364542857530552913114970532656768045e-1" }},
+ {{ "2.69252008622562698292313143610954284667968750e2", "1.153305143347518879615165587892988696694374084472656250e-2", "1.06666279730568497198113724274678005155752498157046477782004178363192374164474721840040331312046115275560496984877594971350062701246211629447728806246316863840490103633689163217579393790965785864180257773316151663393300617519826348688668218517932804149442470238145344903593621930871763066878050548745" }},
+ {{ "3.16092590727489834989683004096150398254394531250e1", "3.48064997212848559193787423282628878951072692871093750e-2", "1.12772520348616005115304677929962056919100702599904589876944000234727659228749834981600423100421009690523247572724398560756474248595294433046382239886297029833469577515642633205214954504439619606667497183510745512915018311469959758235733226013623764492488909973197069967553629996698907871574676780407" }},
+ {{ "1.1141752247844277428842629795724405994405969977378845214843750e-5", "2.0751562277949120449704878410557284951210021972656250e-1", "9.37919294955190238371406645550683331410621638917073656116684574199081255090910984115004225393137968138900076398279876623105976571541314203892497339063273916638860131717065142379547629145053297558185567155580289078804833133323155623898592227362901992618266649001082738287327625009340169715002810953003e-2" }},
+ {{ "1.548186783606525160350564362943259766325354576110839843750e-4", "5.6206047199489783281964316863366093457443639636039733886718750e-6", "9.99950690212005897959136097299917160482075781519044088208212676575453006587694459400083447882136665068803314657182010357110987268971672741796887858729353234727108572424227132082469362733286450718291677866426969142840900462763239110268260519434037322501413834614893396154343681850902784948541773957467e-1" }},
+ {{ "2.28067710108071286176367742370985070010647177696228027343750e-4", "4.22516467629786623624865704584863124182447791099548339843750e-5", "9.99645746030268443121474912265456530387059240825775542503945117534294341852612112033263023994402497137577664903179947031417093395690539107266054577344864123860512144985801819409282408928976825661093887120497669159146596001826170808186934642139325551337232119779982282458342982953928951761806573163414e-1" }},
+ {{ "2.207390838128851555666187778115272521972656250e2", "1.6363542834888315915869635985835373048757901415228843688964843750e-6", "1.00000883141260854728883702175584015782702915499431300231183450474406119123947650012070542489465023521252692179702983050986429423066780728766911719282820886407479657520041375764406817735028802434658714254220988205387649994799335160542734586791578044041036401530550092162441750788372567864862832251789" }},
+ {{ "2.11115639194152252336444952618421666556969285011291503906250e-4", "4.9161117879115010964596876874566078186035156250e1", "2.03851749220927707096105838017357917405034340382528308320810037826391303266735158295669708446462859180309945589089175400795292926848603356140832744578280150360981737396616217244331933441226205091493168502347016694353942358220609837333188158011389094568440922575728826317171755408132992139505746448351e-181" }},
+ {{ "2.38633916347037029481725767254829406738281250e2", "2.4735015620527917690196773037314414978027343750e1", "6.50492562190358454748346649100342667975057580840217621906828483604765156733043048058740688210262627421835218492853562454601684989325985386603026971417507963657922417960947826930994787046883004260577743222590669257927836671693436821127356903028204248621426323317746936948905014560414890048500518981483e58" }},
+ {{ "4.1649649013569605901508019485390832414850592613220214843750e-5", "3.075261121906532935099676251411437988281250e1", "1.95708970459274514353705613356165057031575229424640773311770967490560575262481854947938662630918869775857057855329254545872812061129308665775656748897011265399787487814796202063476887242748791769330372489092700441649278984973352735989854637536188114328280137258357850310518955976767163293227505459553e-135" }},
+ {{ "5.60807874972006062050389196826927218353375792503356933593750e-5", "2.702445063506279812962085351557561807567253708839416503906250e-5", "9.99735500279497094553640363695299701240525058593455541261394700469821111611056791299453732067954961427582921898800842237144105286658409494042658058247679724238096009700396852983653186891371272750369926281385138909360300419604531575348226930671075101518323161673992501032516753200240811209353821343888e-1" }},
+ {{ "5.00853676861336616008002486921668605646118521690368652343750e-6", "4.006455503457152644841698929667472839355468750e1", "4.42868005311869594653291738037482789532744928595938052618021862026535850449639612018073258671047578104461913132613998217526422325806836712765473733283115693708797988431341752008408657974271055896785613419004497755473106128411938210880970972796033569804407750025332012993610194266901383355037197031359e-213" }},
+ {{ "5.353231678137881681323051452636718750e5", "3.62778514750403147104407253209501504898071289062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.05603230256580909333512613256181086069213372778044080861620436376260245170503316441303581724403388552683668422287401763124771418367914789920284987220255387646685601968642931765033670724000770308127910918065433865509022691461489073952236533017504964013454255542118759406756885123664390687006240095440e20" }},
+ {{ "3.229767642669518004638895547486754367128014564514160156250e-5", "1.890503050233357953402446582913398742675781250e2", "1.01732691727954660011725367716319147371899471036670702622303272300897410300692262400537048572027256759129565470020582895602617924506137374758437886475976576037363655165839084170315722377939735400391371695808916328159137254265306017499308291350722410467152148965233006027461767679652965168830636324127e-849" }},
+ {{ "1.090489414238134486367926001548767089843750e3", "4.65254774353689448673776496434584259986877441406250e-1", "2.58980988503590960516637371738014660727349100194484396379725478994088734700803526572947540745308063381145664972855458934861597057007568531182327714420486870282357356343021375166932444789575430439279485545025094851301007569967666444995213425647227644871269194317170084391746473828083433195180432304317e1" }},
+ {{ "2.447434794350212996505433693528175354003906250e2", "4.8299511254984222805020088742367079248651862144470214843750e-4", "1.00266010667859458204491495940561046268243246346579041029260554228176172232635197593622622290922199036969298596977304010218474771392718302157017833152484401953670784025973565870850532277945591072432075029519001358625355897190571211275599240174542923282378185576537237233948130696870807231732661924935" }},
+ {{ "1.51488749663457274436950683593750e4", "1.02354275702668705760531309145733303012093529105186462402343750e-6", "1.00000985234516448019885473896561732145157443536520866911511897918118736186775473199587722487758817093449012349451559620294147840372481518705271731392645893056248771116553702829600792931868987911801336627246125357506584399976395776801325943965572049289654345210028541577738692060413098304903948601150" }},
+ {{ "2.67331385687573711007480881107767345383763313293457031250e-3", "4.37764930215238656785459170350804924964904785156250e-1", "7.47571438862309533743624874136133366541454712127562663177399504286662183346894197246880043192629661657584457838166576178504996182224295507635623850476949534360416194135273172780271343507597813231256012656614579448387095352094197763495149376101171772035626900389244626161777607049448871411562278802652e-2" }},
+ {{ "1.018085344443409034909109323052689433097839355468750e-2", "2.7221184783694063469283719314262270927429199218750e-2", "8.82611384964605354323505795669056920339301763307089989948479130915805719954810517867370884785746904749334148062069679398152101779177523464996450923425943206891878509254410570738031307822715129842441609577961369156460374327926946469260053825787159767563643637983753386908235973617270978178126680100594e-1" }},
+ {{ "1.00731276656660706514401226741028949618339538574218750e-1", "5.18228984435489814508457584452116861939430236816406250e-3", "9.88175560346904726742930639398687086396036352224271818500936901685374885901648764892385495076288151387225190990418969616688304224966648010000551417499596854632379457426863173605879611399961688292945890600044144991480340984880181190619092493192482621545694847376381337620163394916517599662918605010835e-1" }},
+ {{ "9.8780468779964552975339509011121208459371700882911682128906250e-7", "8.4829576004481441486859694123268127441406250e2", "5.06922896545426989764243576324057040501874322165012440675766666713649225255160119756183042369835830558457195704471707778294936068250116736974227601059618844500705991834404101497665868066256287785153513125539305523985206318973305432078184236844170690028706643163133079135912179653756316354134757605909e-5095" }},
+ {{ "4.41825747491548099787905812263488769531250e1", "7.7982746222263199520341458992334082722663879394531250e-2", "1.34369652134197483793288072833308732535658609465509415675669768410932243039179437886058214288267645007975345260332874670014492568423533076540783205684921434471069515293441857790677592200203989418352589897685209311617733829289352336172155226574531882652742067029068005584363117523423189997997484568014" }},
+ {{ "1.5296844845662072032155265333130955696105957031250e-1", "1.634608212615425469138932812462883248372236266732215881347656250e-6", "9.99996930989216600191785450269008898634303181250066938686025190496179003638914112281154344493820093586185759774048968741774280050131382009162499732926045936023057461223555387483027406180587409400576483490119308402153097647327397891029914779646839934539999749442740222968027612552511977099477561837845e-1" }},
+ {{ "1.5459068196982534573180601000785827636718750e3", "5.8071194443214402269859419902786612510681152343750e-2", "1.53179160234960851931903141810390484338949709737193408192930930410912781308171727424842710235568081208824229115859793069399719735722193263870374052840504012604354910230724690998586625239385836126384899034476217672957422789468436133936022499041037971795682906772214055897416212584774512114169944288303" }},
+ {{ "1.06149875426708788185223286681946319731650874018669128417968750e-5", "7.825390041638166649384800166444620117545127868652343750e-3", "9.14272969225465289903926091127128136862591595250320697667906487225773277795209213908946435749298160698748843670986774816760975159538180372090105486573778335998950914987159909756145213525174507361115992516851061441846585401483368166991251261491681595295047033029078105940961946982855869715287402727788e-1" }},
+ {{ "1.7094285962280424476245066500723623903468251228332519531250e-4", "1.450141513690568874708763935643673903541639447212219238281250e-5", "9.99874220008245006855542326558513156408919554643242887993818629193137080289456989925446796371679686209603602304321606023129900225876158421172053263787015124593801332165057745276555467837973732533352070833078756655605565367486807321355073518225701436176826535604183999704696382097767183866284922545237e-1" }},
+ {{ "6.8916512912179988745164926911002112319692969322204589843750e-5", "5.0330071326271585974154731957241892814636230468750e-1", "8.0431310666453857009883974778955214813162656180917019674667856365061641342629676408687942955216557038170696029057610396511938999928187929291101943535550497469155161289193841088940635225677546354860358907449034170591377521605530181623881365718072538006198487060738937169647737729128339219664578636910e-3" }},
+ {{ "4.27946433404347626492381095886230468750e4", "6.700893693973940896599361671803762874333187937736511230468750e-6", "1.00007146201085226752984788738357625307865767014027631803309640949680577376696724418376175136252913773532105485594068985474036691750060444806287575074228772867146937453568465581121950409526897590340390497454647087617789150538474509489560078795836109491866150406233412810302502603589419003168433407796" }},
+ {{ "5.40162932367991470775092643918924295576289296150207519531250e-5", "8.23362153160343446245406084926798939704895019531250e-1", "3.06423742747299574139652654980590788059822860773454214351500321781043318590458743790589432652553137712034307825892416077869655718345307052092676953436188880309769835515354046500269913785918625489459139881331406660934866445646807527177908193314853725313276753369974838311556362819425625446719126859340e-4" }},
+ {{ "6.98480482930233392835361883044242858886718750e1", "4.824235502562374379789678080499015777604654431343078613281250e-5", "1.00020487356414235503163915728935712973913169358041240146118411664231468676920896629650395007895636986611826729763726166983962518312776000911959157822099221405201493001705233813919293314432879950393142137203274049451871519519207057550355386892818843802770417350657588091700213982000763521441126819299" }},
+ {{ "1.011744866879515029722824692726135253906250e3", "2.80096038819214743220697982906131073832511901855468750e-2", "1.21386628363111930567875501391228231832773971221469956618940994372919354601446271218977478634940587702534597215097311823723977361204234536761437991482874205192547888855528921579052205936359371957155208181288324241439984156409711039174371275245144079425493549183603159162251977135775037801563222969321" }},
+ {{ "4.585276426770756863504630018724128603935241699218750e-3", "3.2042680303031754671105879594961152179166674613952636718750e-4", "9.98276019906690498641979219227000354726256121309260540509550375256349346398739094196651394582546860191649946783658447448964727247382391275461932541094336719168645988397711787831199214881092736264632640564846015317413042211277375865471754751928875230345189863352333606975129830522964976988522205012182e-1" }},
+ {{ "7.605178759788278064490896213101223111152648925781250e-2", "4.478670111360627537067102821310982108116149902343750e-2", "8.91022318181765750138709868330053023824369950588567785742389327678334961200987486582852651651749970246817747258718976307116965890616698349626417133054222982034680094324870404036435780314465221090580409266996951521555820905007542674615310907131989836681135988524628981589839950536317534105789412104573e-1" }},
+ {{ "8.7444178759210960467018400321670412722596665844321250915527343750e-7", "9.167217375397957368141077516554560133954510092735290527343750e-6", "9.99872128426369981492114383609632051952305521589536821086005990494116094292173923739983506376030713210025133335713606540746004193037337306885070775500980783374129579854971973151969528024543815880504327167057351706595072153954661171897742253459693134310482723707663819212838281958152922341896338434956e-1" }},
+ {{ "1.91138738236028468236327171325683593750e5", "1.41870493681337528357744304230436682701110839843750e-1", "5.61393719165089070084284302313399424679983675134163509852591590498735859530953368982681984829992497504960254661066913076235623948356021050016415986014420596315994017260378613566207333104954408470522228787617243604128057260092817202582188202107977088110567991555379686212833460754614025473450009263444" }},
+ {{ "3.9593580509452585829421877861022949218750e3", "9.6634279823755485708258738952736166538670659065246582031250e-5", "1.00080082312808327988582209522378397852005304579172107085124537382297137225033557828343923139785908077173538670582197264674005612125502043965115623737220659926592486850580770115661984729610019606048664824477525628872443957605574420631353398611478369946179434030057548832782863477926163435959118485879" }},
+ {{ "9.527494822481512651290991300356836291030049324035644531250e-4", "7.36644237252481737243670067982748150825500488281250e-2", "5.99043290744436080750367189311776962864514898582236218043546095145053426015403970275978470316955018068268507145854768132371105755976745328665490014149700831691054362640281890694866429566348288921720874015164835895723114083232661342953621394611916380955923119767515256749281015210664840084139488728470e-1" }},
+ {{ "2.484228956307928110188928960688770075648790225386619567871093750e-6", "9.5599312498941491078596754960017278790473937988281250e-2", "2.91195173359063670429359403048505978785219394151399979472770021116863735850753993687072273831783588580026886709426140199445066463954822741869299289627867228462101496659941594784834735871174181621098355725481647468654367330416914560339262972917390166297854884128515599346578674725441419457079115897184e-1" }},
+ {{ "4.9491118980876490240916609764099121093750e2", "3.004862775930479124042449257103726267814636230468750e-1", "6.45161540440045450223953783783894469144373503171768310299316311211396701039652476264548018632004490940551121650475174226555299061745541449779441170912616150358121670452871969103360706271231784736206842228875578338918267487091360709713844820843854370488212897734417544669039756642667411365232861750622" }},
+ {{ "5.86830898821921187469285996485268697142601013183593750e-2", "5.157145004755338615898274667870282428339123725891113281250e-4", "9.98538706799650092346821769070662036641738082636479009372539733284347573229317564170016552698886694627816395005478215973507005929122925461962335439146679105934195547032542346569150966461707254588652749552262131982196536881226818665443124490222705261425197752741794319954946333545210933092733146260794e-1" }},
+ {{ "7.83501026710203586844727396965026855468750e3", "3.3878804079488164524569526747654890641570091247558593750e-3", "1.03084303369653734759444079184018763110189145271757350290747789171120440011979438908956047437954061198621891331998729346005011749200857634828740000563446280260144290233886419978479827799434112209614567540357757105949708290107985650241181647155069956615108211465282807906696708079090952998142539773200" }},
+ {{ "7.24040157384670202134202554589137434959411621093750e-1", "3.2139750306174955096771839180291863158345222473144531250e-3", "9.98962718742601158545306104847042012373529894592940838744141601234699871358047935296869274717524339141323620050266212255881930805755665793284647269071772742030623661802389270250239007055699061760303889999391509361560603832488400525248124730452423718749922363976939807153833465852271516354356322016570e-1" }},
+ {{ "2.3773749185601933398004348418908193707466125488281250e-1", "4.166703987089275251776143704773858189582824707031250e-1", "5.49589428217805567802447379970866851398217501608629580197067814528656191899243702632356211673360505654178344944705028006574948563210523891802606219873940153904076904718577079606890006710252221715434732369471615966209956056482424699085238332051063676105524207191799310422842401999054890360978090765282e-1" }},
+ {{ "3.0164787400072270884265890344977378845214843750e1", "1.92136460953186087863286957144737243652343750e1", "2.67051217459346602496477010560417251705712700254048639078839264060325224717762633346441800378240849611262512392424682983226473649608304764571881449403455973384432668551726106109236708017847884189936294979084049530151497877322166267026808199785689058092334141134841250691148642129989881676444005953065e28" }},
+ {{ "2.6354055582639710278436417922875989461317658424377441406250e-4", "4.228204328677160894756070774747058749198913574218750e-1", "3.06662853666315384518454771688957273896640018166337060934230580664851581626370131366235045252515485872195142490483479220526746937459904335480861408290098145258297721984393013560504944686230699800648442282165588666276252945193146150539010418085408269547841393316042913883904363908615604194055289620194e-2" }},
+ {{ "2.26046063075346914672536513535305857658386230468750e-2", "1.3627038921997222664650450951739912852644920349121093750e-2", "9.49669691356986597021713215820093379236513850713669538194655152931335203737791678558428932820631859896635045077055245394317491407809178976243739664980597540207413635355482092381212167318467695663002155241642388129246468412919845420697165678187848016391630764936016535264450983179524692369001196616367e-1" }},
+ {{ "7.443698646524410378333413973450660705566406250e-2", "7.9213801433691943820747383142588660120964050292968750e-2", "8.14010675669123183496921521116811427733135459824631474903189627969592690975861278168724266785431509343760131532834105760648359541103464859507378780843287835638142981311936553660415847409900494706845746029735940277531884780112929935900839635096070137371899495277565868989524061668633390669303733877713e-1" }},
+ {{ "2.587073658438795997760450973146362230181694030761718750e-2", "1.947141104726958928949898108839988708496093750e2", "8.94285469588168562425042075510651649105332456874498432065780910860149873485515925490595348642217083245456881656394030092730262652761300876175697759058061470631341983801941103052127203347591729319027059625352617883993869442078699806792081819748879905962225386908139580991345038356748418452094703929970e-310" }},
+ {{ "5.98084615325454649337189039215445518493652343750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.54141705573080567892238490479428492108127102255821228027343750e-7", "1.00000134883014846657688131845485191611848674206835683154280061306464539283951337684813473177431132125670490032207511582839375165363167348982592154407605611359695341748966890300250815981718309647127029989133813099179248600056821756358657145575917892530126627067999467459186401635829661375435200555943" }},
+ {{ "6.95026071869872530406553323700791224837303161621093750e-4", "7.3122523971193590860973010592260834528133273124694824218750e-6", "9.99946829922765932774347186827261089119719545372876939189761602548364480617029835514052044796339343249676137993597737045638155557799285710458997819509839368231591299591459306098956962406996519241338464726435617191918273092870466980318418139849371272285377732672340181070589663937610591450209282798517e-1" }},
+ {{ "2.240734448249001586894735282839974388480186462402343750e-2", "5.72011372485644930879419844949040907522430643439292907714843750e-6", "9.99978273147710365618565727465750018434266860028552780634511158239820481200127637360576082082285493761515451879661983436902590331857062933298024957408602175417434650700857480478630047039957552639826605254005583176460691229891227955796802817287827361621819443402008175782397464338976239485836367013797e-1" }},
+ {{ "1.026963361521984101701332470213401393266394734382629394531250e-4", "2.11791001950321867638993289517657103715464472770690917968750e-4", "9.98056858099165538580460452287541225753365554206313892868475688098072267264713973803329319240088967254425048329384938932204820454762680502689447633583472338302047491675207245782389326788006117820440333632657775030341985234164850042741621548603372080092391251779877542034296864156086357253603371919108e-1" }},
+ {{ "8.6703705286307886090924057498341426253318786621093750e-3", "1.52133920341677693691129213959811750100925564765930175781250e-4", "9.99277952718489198651035604747543743540115676651768417733688848831717723612326298765655588890670608573536137096893609251918929861039853578444897886108139617036413401117695629638378951997111811960041138307910848973294872108144596558607179052633028242671568000242144929604511881481654385461936722413631e-1" }},
+ {{ "2.52535597921406917976128170266747474670410156250e1", "1.67545906951556844433071091771125793457031250e2", "8.98282264364143312494924261974141234695472294090992155155562018911995536275433125782292778674260525238398016330461123980463532873852775335243553615531641077025771609462191107211129184970987736565747180479720790198029098762244705019025351383419378700872375798060833692002857187730789356240125924455777e234" }},
+ {{ "2.616405991228279162896797060966491699218750e3", "1.04737226836765842108434299007058143615722656250e1", "6.25310610377006493866619672909110501466370730517133791833746014957247005356303121141646462034804208859942897670276612700251850886627624409691966399085604959689485003780186276442904234165384933316935452289326908453230024435075360037297385764282630607352032826861327915100978947458904222670931759368924e35" }},
+ {{ "2.820025944394430328365785953792510554194450378417968750e-2", "5.2890336039443846876881294427619195630541071295738220214843750e-6", "9.99981126663120663978315445418195178347518855090095327320928958000002380082757914082726230053423120527749961157170801907113926659877545130473348116514066094356797962151622116993547396704816898570832090901788549840104993042307779674567777216024811187461718618588120530554820575895739988590245022632269e-1" }},
+ {{ "1.05597237376428054744792461860924959182739257812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.74456803510535429779793048510327935218811035156250e-1", "1.05450439582280470237419243848514333965208787934652393730167951372955494178606431812200728304139567804628971230701860498398849175230634941866518705534394558725303044357497118657164159909944927143807152603979711611331658711835035945317940163428557910521645089962892594811777021284923659424445609434015" }},
+ {{ "1.9223890780950902978929661912843585014343261718750e-1", "1.08349612860076613971363479471676782850408926606178283691406250e-5", "9.99982133131096723846335477747571205458555360592772378989843831769539959961315480174186773210831188200236203659966289556452394505676789152783853641019895730138295352465651299769502538786481056285110475730395967855975688507419189456451422446526295567348482093213471867865722148473015661603656725132323e-1" }},
+ {{ "1.0463193386008525267243385314941406250e6", "7.4762865805834757826353609289071755483746528625488281250e-3", "1.10918690854877106790971565776367526216180983995819057803660864422406143847654780992569076690586240873186597255294638451033694659817944978005382660886521706741399259776875547778479274738700590433170032223482808245749786294093246294856718197278358866518098957741521257199802713807166809120449267805013" }},
+ {{ "6.36259548895734333359697210141803225269541144371032714843750e-6", "1.228097727883958611982961883768439292907714843750e1", "1.52598782338450286286135450458954573598472802663327374811636800203700927786701774385033841837545251692421774984587119423266677067201879737268514092791650544542213882071172025510515697098553107823303332247548034598510867132891098061561608401432719775239528846321974734634143406918807796517003534735158e-64" }},
+ {{ "2.130622669214181965626972448113463087793206796050071716308593750e-6", "2.38534614031968601466360269114375114440917968750e1", "5.19098455118066498520013706754490677591984461696830181149035955535619874262474066374087254218809585126187088590005269981305550987677753928730521021427525334082765124171365549957770314171493849134109885501003714622689267145862269434956103582260650590467252136804225198053437675495933201621005291059680e-136" }},
+ {{ "1.402904015919878020213218405842781066894531250e2", "1.13722689335705595681247359607368707656860351562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.76476316747050528850692000246200519522360470716902181350858525854503943786512297020242024222896565430817144786078487939900580658865175044648134728561580288938753166434593435107710997858417174150763109875175878816362192204521588377137231081824131646740939989148534654273494711671253618986609286323224e2" }},
+ {{ "4.372017573127668583765625953674316406250e4", "5.5089836882907093240646645426750183105468750e2", "3.50016375413563777673770541325000240347503109832508653488647336857427144256430628344920480322962866090482161278435394130795573385145704869750655237320185554045574687208211132875092396633526114578443250901360527371315672281676871350085960576744972765455104647558784495896122434499365424664074824652372e2556" }},
+ {{ "2.826577182614404106300587393718615203397348523139953613281250e-5", "1.0106583572245043299792435775863452818157384172081947326660156250e-6", "9.99989414562934374733570123984537478193847375990023521202992404597564318809152441993727777418090556514104681985844118458823465596529403699968559686663737740106923387493303105200565503166558779713221587331443491180025140468746214432126679720477339697928392369627582889524402889778083449486287091857918e-1" }},
+ {{ "1.8213158806543649700926401635570073267444968223571777343750e-6", "4.6651819945007291789984549268410773947834968566894531250e-3", "9.40207373373989750079079577094631199620167306803671706440022399491116271902378455342284164919251165911009699545436187010204381502830971843813249510091499154307328869929569251004649662529059388775244320275509563520973233815719214546857449027774185623555318990471004404713606927167122651605783870374832e-1" }},
+ {{ "1.46755915364810964092612266540527343750e5", "7.890436978365517006750451400876045227050781250e1", "4.64484232464543513497888195163429809804134777698713994865506287396508104602871734408178720046618390944324170991778876210342419644694461221793882529660281950244593440074231456401876196827229747637594809904497759425267031152839358279700896103069795279548051852526590187125738047135851503597639320208298e407" }},
+ {{ "8.3043328767694905400276184082031250e5", "2.526375713999676198007193761441158130764961242675781250e-3", "1.03503345548731106338710812130725055986503423501253010837510324365889248445099107670056377581266593900575457325985155519568071726317821696776190852210129272438899726884098324950090040468317646989831449979292183766681690581501814228892321721246601040936202160676525600474705308542633568308584316650080" }},
+ {{ "8.810761098079578951001167297363281250e5", "7.333727906319231770737587794428691267967224121093750e-2", "2.72892191263152309368418398483858745615162148917317277888912958706672096823639413941816735201743610855503568372158123380568416223942437204395543055191166267974357638190306465483077702922759360128463612732981531386413914170095452050612671264384868877433570747466951378322325020744405691770060335633788" }},
+ {{ "7.53729022560753492143703624606132507324218750e1", "1.44997674051331170439263495985926510911667719483375549316406250e-6", "1.00000626746844722828444925305995099577313805301524404103686494009081743532235207019307339151083010194102029079910572707461595043287395038108777455456317947638812268175715959797135803525856300281211049078122806988241700281453385528141559419083370029575853474851945010647429584718991721854559935746944" }},
+ {{ "9.29196125311857485939981415867805480957031250e1", "2.8736407594167267740004056975067214807495474815368652343750e-4", "1.00130310607123242618493657884019907082179077698498276221909900016213891825242765534255421206798520599892641330780794108614272121210817595736511473642012182311222406630247676600611837624670300497417793849558413334183751618128852678982366003027694097779362865347129226028454653385495003448455051752341" }},
+ {{ "1.43727353532569850358413532376289367675781250e1", "2.29608176142756548188117449171841144561767578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "4.54783993491495810650470280449947427623348347028981499281421336796280567779408506141109574684107695839213640033321254129078108321583824176685378348816016878194065833488610016432724082665467588150668096361892027109844713789484964974482948538692616206482165899790288506924374902752205806598101379280087e2" }},
+ {{ "2.70759640224985531631318735890090465545654296875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "7.3053673155641374314939184841932728886604309082031250e-2", "1.07547877767428083419096142604570911700485352561609679581466039671852713698452759329634869067401784752327384511745999840407965753203664746748858043080448574928987130431330974864221970333531951352649388383982665219131905566066113253186390249711325528920747650049981618690921655600270254173866304929129" }},
+ {{ "4.86911459659213416298687016059432153269881382584571838378906250e-6", "4.644152955186586773095314129022881388664245605468750e-1", "3.4101267379164705515949071061179798401970959719776627431996781118094045712804741707881326020834426423441290104362376100384993102590570489653592904886896014643278015566215567423158647343389452934468386848973834157280506928166240077741426052002687656557079088494350099594841014879134383100929203824540e-3" }},
+ {{ "7.848546904342432184442657217005034908652305603027343750e-3", "1.462948744347492002759736351436004042625427246093750e-2", "9.31540724563669307320322491667157973956200661651434919571593303846115863894103669513415833366999982869469042192760040827577397824232012793869428364179080549290195624467934132481201575233560543620306283174662613044511585064238810137330925608875093333350849757044686376810419383361338035393598016327803e-1" }},
+ {{ "3.721202627829229459166526794433593750e4", "3.94908530795382262112980242818593978881835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.12206584334504219728846621264973553250302703946785171831645645721830894010675262018545815052840050758849380777393422282576480781495344500008748097426459462508969278927821357065182790433439566919608820582252667225317461885443234193297904549706413625058399088149505555110903375380342716569207812657836e18" }},
+ {{ "2.37172835747338208930989900125041458522900938987731933593750e-4", "6.407577645033786170603029574976972071453928947448730468750e-5", "9.99465320336479719185464362393617871174305860472162937262848024567759736497677820188393809529906684006391677099787283285239332531375600773760223206100883246634220752238455329498878968166316454533321577818353913376078773928516840980584615525022113173652501922620733886925072518116022140332545581471584e-1" }},
+ {{ "3.53605103337158652720972895622253417968750e2", "2.8458247691311680682701990008354187011718750e2", "1.83532969791885885135620378353794410619553188299174712267165316998085251325072529407513466403156971688912550231810700054288873685181499788137652636209514628912399831379317778239395084315052983947372535292000124065735878003968456173427606734312841500343489942261612441073694733682134245803236657004841e725" }},
+ {{ "8.3104808982436933329331421593799689162551658228039741516113281250e-7", "4.155393517188396557138219122862210497260093688964843750e-3", "9.43482075927723057531497663442495255886217925614713738709933378320005101165593393456330280592636199704470243210249220699112677280162135519833702952111992891673206729843009842099688221317242192847449764385413153153282253151503752131156497992327652425308884952829049613144312048128169217759285595530627e-1" }},
+ {{ "1.1466602000178882008185610175132751464843750e3", "3.3412765154888893448514863848686218261718750e2", "1.74479451169065114507177142090694649425184490446641781570460948781576584635840991601731927655494758023459925015377386019778946251375096661299820054396659345784163916943122911769409035509491324432205386045800229510005976694475685559497072577311014446199955236237444975977941360792089045512126998703937e1022" }},
+ {{ "1.592844639464667579886736348271369934082031250e2", "2.373685961415714085198658267472637817263603210449218750e-2", "1.12790541394790276732931574594592716168427963234746835691403175587826006982488095536822241070760245600803352183137207993347315747261870544496930500337717553335079860285134922718636682581363247953489931749833309595523465412068635376914524529775388476847978990731073661981262435307448746968442209991247" }},
+ {{ "1.010374635480884575322590990253956988453865051269531250e-3", "3.8335008475018355511565459892153739929199218750e1", "1.46827959515471898774763024079995706113716782750728469166998382738205474672874505408339070961454993286360763402251395607969974201963555866889613983970569781895238062738547839409015372756811222082668539050479266568911339662981230077013588037391296361362960017408451588351832195207411208108858157498757e-115" }},
+ {{ "1.66695565004290529032004997134208679199218750e1", "8.71804015666434395370743004605174064636230468750e-1", "1.16219309185108283690353246115834277672387666007297244563945515894098174972467389980428784832971321037184548414733298149740082669071577857913503517445753714679820984984835536300423998074680014379718142053804437180632038614386541542054507333387434066222641647278889877313111291185910035634611028423893e1" }},
+ {{ "1.2846460229611635440960526466369628906250e4", "2.3245763842937037679803324863314628601074218750e1", "3.24945391385140670639469572823424256394544549042741674612450176003078448450232834405677926416541827735839125915448795224664876170676948629996836691342006517593947756961464160491430339434651171508096026536520981556090838358776179831242252299597098299062165399439487062435923683313278394249407345431587e95" }},
+ {{ "1.04339649065651030425752598951305571972625330090522766113281250e-5", "1.573485708305823038699600147083401679992675781250e1", "4.13059686908080605126564483508274490473647130063580548021629986277623406548383789633827569651948273474979014022501027829260141472868965231700274633764760142846471542740886183449424861759202613481741450387488820213753956013540876031520080117102079251759436887925675362188501650887210343405664270909838e-79" }},
+ {{ "5.98527292754746476077798433834686875343322753906250e-1", "5.92842618905841398438405498438896756852045655250549316406250e-5", "9.99969570850103897852254602475534171540024098089888531491644885537022647868647455296214377097624078476427734613966180360314627711193584708132475074727707481960045949327090840155765239976195485323033627665295521041657350135494380406033384926325020170964497589858453537791112107981125863527921983931294e-1" }},
+ {{ "1.201708216294719881386821036528544937027618288993835449218750e-5", "1.83573171858579975435077358270063996315002441406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.28605001646404799122123246583375017811401439409264242217956456924187147921073178601773640157007541107990624712528914809901097933653148466740296742087373566926721281981068789281547799916665066119657434350735735616423796448248252402292977828214490771898387468010213868209841336736006316556313401379158e-10" }},
+ {{ "1.790278581302762177074328064918518066406250e3", "1.03754584982387711988849332556128501892089843750e1", "5.63044664995037750836987820374386953646551425036186940515842751543311970070428773125366390621088048509415536569966741084563251083225715464442813762547476523458275835451374563942157742199280762833831415410370539590912680755089996665637460577287883121257390441169299493248423283996313182295602073608455e33" }},
+ {{ "7.710751773353188842641259270749287679791450500488281250e-3", "2.641820563533838139846920967102050781250e2", "6.43972399050369154988520798910605088410360743083682368257478281007222478749780386934407011016164443028717189065642983648339942330570417348717676304330188520673656075843370307967688074309785894752170432378373350782687762813282030251151752809306457995236444306078641839344649086096494148698382826630683e-559" }},
+ {{ "1.225859617238612845540046691894531250e5", "1.01372669446815572924860959780346547631779685616493225097656250e-5", "1.00011878102928302779143036441761880708224532433147368168056931216968198406137164127175122694955536795144107173837990207593653143943257391177552069467355860858316175819319731322452047752960070552385154812027281420138955970684262089648831370958477699568344849874652831370849460274952408206982772881433" }},
+ {{ "5.82595149644963838930777910718461498618125915527343750e-2", "4.8505876863872399547749844628263815593527397140860557556152343750e-7", "9.99998621052671820010209082288722125377109323080442152434584440919377662337625060557131747020218413297035621822998191924210038600199853200536989949496907248450515440309961142400248274163420688419892365590086355187405743025995286488853302886303794885670413483577122364857720736276931131470386157699818e-1" }},
+ {{ "9.01125395544224438992841896833851933479309082031250e-2", "8.218060702910854331548762274906039237976074218750e-1", "1.38368157061396129371090614663532617206257134398324144105974743560347038187851945959992361814602150755480311739774866352614225040566667708793196627370259194113771020229764238603211377558658426209396490633521450588911944454397547213176293597692411663128824894095155297793732492904564527595779976674988e-1" }},
+ {{ "4.409654394722450909682720521232113242149353027343750e-1", "1.024539904317003369271787960315123200416564941406250e-1", "9.19534075097294910062427312364961024864527797483767863624171403928319226867976521096128692940847528103007338680691678979870596291215052686966371603169090630798213135736273205172476019108353742027081191692977102801637543740660392501627319952653856947188066651067307484842658131091249553304134437847486e-1" }},
+ {{ "1.93717944386320728433759086328791454434394836425781250e-2", "7.08574263216941169218898721737787127494812011718750e-2", "7.56194064144518235667018224449588679976819296337783156090494451036523029483949448332763991177580492553296509263765798810431727918219796862387760870580577134565230417714219352767669331762365217747400655499790736729474440290141888015988952364748907315410294417222286566628219298383793200309754712308589e-1" }},
+ {{ "3.6647989268164383247494697570800781250e2", "7.71145011595037033202970633283257484436035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.92304236247268349096312573893392045307545699411902317264880124837981164329935084560551082257778103184407170649203234984204658334295355705120603551098245781624244872037069412927213696722873101986921044921101077821551960590243440000669839151585453297946266135519928259442687204452169702512081165606273e19" }},
+ {{ "1.32708985351551091298460960388183593750e5", "6.56531833894015816668887630669360078172758221626281738281250e-5", "1.00077473925602097877583679698815018000110220247989590351745049914772258652489667683543311902850183669682134777670514222872443151397469262756195899010288195180434965887160900063533882057343026426147190468334739066751949659071732450855977621834587152702675615140712006936143437739732339126497413250346" }},
+ {{ "3.5277504526489622094231890514492988586425781250e1", "2.2020744129417768597534177388297393918037414550781250e-1", "2.19164668712694362712251058826210564533792000244902438405631163228898011483361552530774835675890492313952004188178746361986328169935055931569379688204574777223286241370824460769287348812931304022631646073013552253933784290828875633916987679684918077103703055564642008994164871305721849760321403415697" }},
+ {{ "5.2672115056769689545035362243652343750e2", "4.0259402110544599204255966640175756765529513359069824218750e-4", "1.00252610964243996116042029581448234570507107619387893463104238190901401098561255564385433004137657583567661490188312636640964083001255112695679226528406143723662756570159800308402030438165398677929717369572388554610405821138849352686065896479954227526563362385890018562652478441542017212666618852941" }},
+ {{ "2.85382232656423795447153679560869932174682617187500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.216220843310176213947215728694573044776916503906250e-1", "1.13603045090195516704596534175318401579207918841598587146324536013529784552205952203801294482696233870522877138037982641276177183524409958004888324787356863626406890600708780844863240402886258989044381114275612277702992295412653204859730899096318397139691123133990243168861782693287239971524166152533" }},
+ {{ "3.9338169463328451214145786707376828417181968688964843750e-3", "1.02640519319720624480396509170532226562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.39863675434390989723351064011214037513398262547140577736762821607782111942948883337093856726075063500818067573716198405459606323946322650536233861891286348318106161892821504014313663700097828008365436512713907896457061009150442887680100088324705807016079909429412724343222986472982422270499720872159e-3" }},
+ {{ "1.9072397321581938740564510226249694824218750e3", "5.1298095404607061765026032595926608337322250008583068847656250e-6", "1.00003874831722429751496737922917004435479965257235816453591525868492670813319281541168275796018004391940278219820598993631669244673032352035813333397881915928790424205764915135090114218540888704442481908590391442502493189810976009897523082978954781479402200004590037271385433077485827559023806478611" }},
+ {{ "2.083523763392070122790755704045295715332031250e2", "5.7732837226565194486916851590585508802178082987666130065917968750e-7", "1.00000308249415661310193935943862153702303875909245307529450912006821815453371252563642757366042171762708256721399309832054533722706035892679765533583739735266608823632317266441068592608135365434098808509810551746075126687287986572543900322800829577692516676548344312574211742425657072976921014511642" }},
+ {{ "9.71724513689399464055895805358886718750e3", "1.5360000160986392791703791793622713157674297690391540527343750e-5", "1.00014104020491665960642725547509974756116986496973147973056122194845971531406444606607453003866992922578566310810305178136382912507500272971783788119308610688740112803511843108270710764262658648334376396166426766278251188688321297859103006142315969456950763638190401996565523343208463418705191958244" }},
+ {{ "1.398026293941192073040993837373946462321327999234199523925781250e-6", "3.51936644048749802671238740003900602459907531738281250e-2", "6.22241870897130620142553713444278896319414844301127628403550478555392596780554049192378201563747768162180873879073883732945738916895322915439456198565943172406197196260279982663959045275534018807122490359500452521705604768928620538202140216274727339329295923594705918674314862791990908520063913560002e-1" }},
+ {{ "1.827650077322046442973579871704714605584740638732910156250e-3", "4.8431895026975723794748773798346519470214843750e1", "2.44507161334831975914976330209249902713146345349963201960249788428960802366282255229864854849664361912073985037641790912699757539023105844864929631975643935921225809946412808629805438733741027621604921419911409131275740749522537202228860884159853851509071131465735369871648912668689687943767400944117e-133" }},
+ {{ "2.4987224228926152136409655213356018066406250e1", "4.7047570824358175833879158744821324944496154785156250e-2", "1.16348084392128872602170011561254935010976642009637548196335495165701186585536416597718806964461847864028617635977334329848073696152520245124091137376311572172062522206250814543168673719325221226847866492589752767830775399781911226358430095279351842770613889036173222279808875420192058143269430231674" }},
+ {{ "9.7372871127818103271014948951744827354559674859046936035156250e-7", "6.491316379063438724017487402306869626045227050781250e-2", "4.07165047632947683093273589058329846367047057355046748020009102510780065766705586588667687646255828190502946698129852184038457736930348397388946238687402139213354445146888181529201139114650892414118512134805367250310852437034078342906915160983796227481872425495472151960083249503055095175373933146792e-1" }},
+ {{ "4.4155834567063219006644025910190975992009043693542480468750e-4", "4.025802670302487543466107844380985625321045517921447753906250e-6", "9.99968900351231822950433739312428495072856038776486153703336951900488129027691896751286362525813536862927182360156159008954621569331770038862723809677808006540779343891491372231781933232571078612298233285052166498857617406809139173150092488738015228536389093793575323664246229233166651636689627818170e-1" }},
+ {{ "1.694399654820086253970146117353579029440879821777343750e-3", "2.7072429437320841283387551357009215280413627624511718750e-3", "9.82874963902734961145255850699575978876746826231267390332055952052622176060893943203741788304684214781121351119738947541263489494899175563981247061980860747331222509426652450764505228926170316851952179492921780437496906593243321687842665376169899786546461700589626075813241454757704572169462564574837e-1" }},
+ {{ "1.033763461817003553733229637145996093750e4", "1.289890172095206274938128387930191820487380027770996093750e-3", "1.01199452382152846374481951076631164582584661608322894290555407864227990207508639820617740715279797178581146570337346215682655494757376897027306747771093102874076785395996716253897920655609144243672317898938847395985100637001354712944101351050038536687079382428227717980685264632621156939159222226580" }},
+ {{ "3.112833052343313977594618791044922545552253723144531250e-2", "4.01353477046427009958251552745878143468871712684631347656250e-6", "9.99986074588519454560640521673442935641990554362956049271045530697088039943872329332770296441408515271037076808977915428133116228156704302455915102356256867263136007644093137679299480159178566422686424390921886424606676712277018147908640199369062110318937373042728100659267805929813035245614797996696e-1" }},
+ {{ "5.28149186098080924978148686932399868965148925781250e-1", "9.1665797514525820588460192084312438964843750e2", "7.28853014056156731737794697397317103994217559431541111572375406126519183769444357872853226505354592130101907012445487770770781129901235873025553849331106253792412404560306141938477978026852566898693906386886543485615404988699045603447639500571979436388663669239796393481965967462640474331680310932353e-255" }},
+ {{ "2.2225059936295621376700637483736500144004821777343750e-1", "4.642048948494684736942872405052185058593750e2", "6.32843078440077439221637641999286892206805235377727400014747144482178933184733036820827184969102097810334387052048590277206436733653974464975608297721942370810634826788083279979408768576378602999295622590369226553818034587114239802440932660296228167167346743576531361276267309223102513376997022773121e-304" }},
+ {{ "2.6440159763177344575524330139160156250e5", "2.48515468216955248692556779133155941963195800781250e-1", "2.22595558957063988125039996231413212457799685089809815878697787456948885300739760428233740293311835672030485009491199517382307607053064251483492857230753137256332086797523013500249415836024187602707789116720162609479623122987122977570646771495383250532455162474303561808394969890452286012410188771582e1" }},
+ {{ "1.09582116879168154355284059420228004455566406250e1", "5.1206272980605938016651634825393557548522949218750e-1", "3.40731230607113577867418131365007953849097556433032366687124266265609534681297061468250410931194577479128955229993084028648709681104213544161468193428670594705798621530529153971465865443890890717329532471903443507290510241292018220973611927868861647858691705199882686680328023542042496509604517393163" }},
+ {{ "2.8765032923235537509754067286849021911621093750e1", "3.296369943075922037678537890315055847167968750e1", "1.22908880787878338117870181426636174855444573322349359087228723914632875946311491878034980145023441888073390972797385266938998183475968716718276000295270333868881283934630328911650991709812223171518435502540229986453603655260898220094106548795285001784222894626512051690586979041086530161063766088286e48" }},
+ {{ "5.4319233558115521650136447995294020074652507901191711425781250e-6", "7.054908153364996056941191304723304256185656413435935974121093750e-7", "9.99991447218133598413920881391105179265568552579320617946001886143605253717825160221002770761833078341617996929941439664383856515269642825892255570319730959451798678974258583863414985420861854967974576953145352608585972242996479479728931155364675877878808323939895254383920003458645959690646207544957e-1" }},
+ {{ "4.2445062073765684948489784744651842629536986351013183593750e-4", "2.426176577767188979883883348520612344145774841308593750e-2", "8.28295177297287815001307142572162153750668927480049029937221930255174310738192949066940496577252702629998657734311395912708887847618250337367575924375521236807234588840327753338387239581722861162855798729933237542178055913633273793008757291901196363208416962469352000552707123078294608807586649015685e-1" }},
+ {{ "1.307332736315109170122106263534078607335686683654785156250e-3", "5.28858724063975630660591753517962843034183606505393981933593750e-6", "9.99964885633207072968580726334787422174518544602461721143383625224899368056665861649907581709049484723249000855383620986446956783244965088674964206494776757278305799759524067667215395257158003498553463221431113016348494389058271382782227321845047125985119505752219731349818937084514014330356212827292e-1" }},
+ {{ "5.05693319148356598344284940083070978289470076560974121093750e-5", "3.71295988486159203589842547899024793878197669982910156250e-3", "9.63937121881680868303835544307084885674388908256423717510775350630463810161245157254316013064889945722190309457613724784742119883122943867724213022530021363225255978426044946346577578461808416905152263622045415849140604671011655772958990313726815312540544848648362428160986497782665450731113127323529e-1" }},
+ {{ "4.844239692035090411081910133361816406250e4", "3.984134589118280486697010189800494117662310600280761718750e-4", "1.00430738669558002031403659131744896728312485313631409231096866927631637993851247415735380222493024677897434245013356617271278547792035688620287749522586547267897264556329014249359221662180556496497208175354676304526200770138492165863545577626683932270268515447259703077574615595169323328662157853185" }},
+ {{ "3.7078480365654198358527082746149972081184387207031250e-2", "5.5250170899286410453044027235591784119606018066406250e-2", "8.33573197351168666887962631201029384882638323647836131662987813863879776215233605661322116050262224430353678691583537529582375506359810080440891529163886160078411813398386404062767305381544566179454141780145518165423921596307439563187082576279320332050551415851387221311994490392675793780232895364275e-1" }},
+ {{ "9.716555147724156995536759495735168457031250e2", "4.591663841877569041116657899692654609680175781250e-1", "2.35377653844658353569031679679735299370922232948810544763027212743048187579990164187893014793934410534408779634667801500692064187926463087757507629287841868368096408503740782370080191376158895711024144836742418575636184986247750729343991462010937031402061673932392367262371858670977341473615463130359e1" }},
+ {{ "2.192645859365482010616688057780265808105468750e2", "6.96729316179001942387419288316152687912108376622200012207031250e-6", "1.00003755636032301823537943813016356575902489314188145066916221494580392625081472816947024292161874513732270899683702071327371665141574567958235034154797657204764921080200596842458370044167411926333595258330617813605034939486089552138840272033589961004832483480269032835319807553392086565465392533307" }},
+ {{ "3.079132493049849261801398370153037831187248229980468750e-3", "5.05463804011641570923529798164963722229003906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.01796919571840276681288861157787148204747502682382876961304668410493347723226232435621763407251840958497596600197906374696494268910490419389807332560043086656936398322936521311486726743408171670806339766715147358441693728848925652781609216889389399280179459317545232154188799226490332505068768929180e-13" }},
+ {{ "2.72793625008602248271927237510681152343750e2", "3.45107876494454290927649253717390820384025573730468750e-2", "1.21356364414706225993709314217781803611734556534595777181951409142649823132949473277169982486320740015805393683502787636048469072138860871755431959907851351864995912275227191432009279405103766593019141570051245200073079914866268809278471723253071227068595740039873872137154853304817823898235004618070" }},
+ {{ "7.23608622250063859837609925307333469390869140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "9.31713845716947162145515903830528259277343750e1", "1.20546015073919711264373148066122758661068546232444031541084969085534241548251886930568813690809866385000095984750691172127616802373754602142656508934912781801862005537086317665378844206989588374435568687107987862008034665185792976330120721552229886514045101504253350965371418298181204870517230728955e80" }},
+ {{ "2.570723035364298993954434990882873535156250e3", "2.69790274993758974475532852466130862012505531311035156250e-3", "1.02140974620888944930305959435799702728843289682449376214925750857783066006891649041158724227299321084257799199351924992147805951706584524451302681812312203333848599297059927350897068391576429287666840858314350106940048605718179391844174140189607359928083054157216235380992076831905704302805940691484" }},
+ {{ "6.270713787727346643805503845214843750e5", "9.7721370519921515454195293237660280283307656645774841308593750e-6", "1.00013045496457016358902387902369248820481792505684604793782357003458740283012026953971512527832247937686018956926918760579827820618149654974789601261789353438501933209142889274324701479760186259188286221595702693452369288516143444427753506877231697874469255361407264955531595418134590240336559943863" }},
+ {{ "1.22109376852135853575020973948994651436805725097656250e-1", "2.11543635047828820815521422282756702770711854100227355957031250e-6", "9.99995551589729160336804918676630911396340574056049766519068518427735361038006808700598379055737548489964622176597729664945550621782605173209704608243388212974829930345797712949588621847644770093271093043600103623962707878170666514346008821208975619634087411931268385031450753049330763535153583731711e-1" }},
+ {{ "1.529009903540106893315986269499262562021613121032714843750e-3", "4.07910792856703210418345406651496887207031250e2", "3.09437152552687759915144210042422837004776738858769798785362828201158918075365450163702134968526881164477730298716543350719085306748967317190021537573795780001155496528795641888775374745803795044275135632851107711558035622505495812638847592959079891240357223230602055612544312975892640303394964825816e-1149" }},
+ {{ "3.3357488035001949810975929722189903259277343750e1", "2.224099109229280202271183952689170837402343750e1", "7.53927322890034742368017335227292720005783821228941858003370629012694382557138392281089806659775813675293365836774015539525201899124038456550795641920581579865504101847353382339574548922971435920120403286201070202878099356466592276232925556211910029587973272230882852354333961947656943741233580547242e33" }},
+ {{ "2.938860932228841704727528849616646766662597656250e-1", "2.8315213921096252973688689458242606633575633168220520019531250e-5", "9.99965326837122789351065801513643019379691746234431978717545032882563543159129029000520238088911519893688798595680083260598269929340163335960195938697476035130411906261845669886681524297055544969116053569875568029319976030656002722062158836225698022385486930605555120535915405105091329811282147529892e-1" }},
+ {{ "1.0536390034124033263651654124259948730468750e3", "4.51733416318811920042719521006802096962928771972656250e-2", "1.36944656525417845173858897538026176879580880507614615066496128471220543538723767528991906038383446820702565624708556443997649629495841259671527437077527127938789704415913380536996498286764720566639200198900869760387706475703380674649201567096875423075710829719565752777057995176317511826228555593581" }},
+ {{ "7.04420993592731428016920358636809851304860785603523254394531250e-7", "1.8351438488835314366554030129918828606605529785156250e-1", "7.42999851704960956730922360017793140547106959683768718211070193339741510527923658661871542385815054985958418322575081567325471819065963185600217971978825670497003073742499873659741487280818814513977323524960437583297927902838999554519027556228317521167236540123085211060151247184818776639943050911394e-2" }},
+ {{ "1.364533448228305205702781677246093750e5", "3.64161706602405751964646185570018133148550987243652343750e-3", "1.04399795038635921897857958256316651977445152567453727222518284598769789391999595233661749274120961391885225992798836625746470159354169324537076101684572935560321844745400772917299981122731280255675880379891143456808614768985468915540339803333726839718219814716863124296189939533443325484535601906033" }},
+ {{ "2.96565824250737205147743225097656250e3", "2.516110448737411964259536034660413861274719238281250e-1", "7.47522068392867838732450708572135930567101005550555468267204809080882851453167258980507378379243415338266777301093835073449659828508711197010120745211201439735694186362327003324753635700543968787946652069972776477402704033680932298818937199049452926851734709666219333409709557278942834445272506685923" }},
+ {{ "3.49571885007329983636736869812011718750e4", "4.0503044287507061760322812915546819567680358886718750e-4", "1.00424637003637001346519445137047903985527298734444205998841513031143713650570988838061609722582515075163633719319500702266902153041674931227041528924269656845803454259997891649918404783522081199789884938037449889035577760958358376931686006190221056227385652828889051574541455553647177469994824093880" }},
+ {{ "3.48704350707848789170384407043457031250e2", "5.94470451369696548105103772741131251677870750427246093750e-4", "1.00348622623956426654419790365515385008204532308719120294458056691444071691627567637464093877906643804041743573926720499607391861016395825332249134843376717727039444569339034648222083969616342813466476442089528251404075917497087087133158228565604726619218594367232783173627524996497743616209681950686" }},
+ {{ "1.568663540524837252121415076544508337974548339843750e-1", "2.923824443941481013298222535468084970489144325256347656250e-4", "9.99458548775941655985641049562781270043468152203580071617312952591624765716886645437516907451083025631663787001723138256606416990037410952933773901687094742927210507959414283830075225958048767485241813607677989510714884949211624158456814965576504829085206941026015695802504061055800475236320588403791e-1" }},
+ {{ "3.02555496695998127343329997529508545994758605957031250e-2", "7.43476200926107111399687710218131542205810546875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.07162439112148019358772224877510168973399161717373536875684406796915754460308189843582561832996734392043166689610197386058626738901780367190433337506557349349095623450517180395264699151519926104197461968535179024894054340573408793813826035189319052898390671701445304365679647915192850527101155372317e-12" }},
+ {{ "1.1330105736971599981188774108886718750e4", "1.63391498739915612750661644270167016657069325447082519531250e-4", "1.00152645922689671305334533143447522531808487470636607472600090062282095427316474560067944838274073843864628772883486893974636361201579261003896147984190781801313303984627253458134496161410984325183430174864002871499528387099093919980953756534711057395376377803880481128200568335684903772454493560544" }},
+ {{ "2.0028908021549927070736885070800781250e4", "8.6391933296204024372855201363563537597656250e2", "1.92699766759603617897105296135509926340232009672802063778499835631207758035200425882438232730073541633716557508264570905405926283429555595877466543065569320408150504538307810614249593452939955155496934950121411097262064539453295031460705244148452908856502571794692573823194011760644101511653087442625e3716" }},
+ {{ "1.32507839540064445080225219442127126967534422874450683593750e-4", "1.518878628834884239040547981858253479003906250e2", "1.03647722584318600030967144335207527953463651392633257231597431308252840118498779108498324584815641015064709374407448575779770810144009458027431983385495055750280990347720737478088901276233575808268895728220588756650828610378844764861577519796740508015409537773234457412772265295624580311112182954835e-589" }},
+ {{ "3.5760343141490902318935241055442020297050476074218750e-2", "5.25925527701659852259155614184749083506176248192787170410156250e-6", "9.99982482017295343923291140868824543861889706024267738325920940955163642168596277387382324596268313941030962899361898533933991225186157467591500415565798572470081783136017764613428509329263882432996891459823007909353566621634663513526224023265569627278594547455316883257611223218894909706813593928661e-1" }},
+ {{ "6.37895215316995745524764060974121093750e3", "1.3360686442100041778149877025327896262751892209053039550781250e-5", "1.00011705660623425091805720617137318115223118739797033368829524572193511821979599497313069101487866374165387923697805554918674050522785359139471078208862147954503878603840716656103170817064574728416607854591674468869938491395161398773239010400175784333016262331344116781579064223044329496394945074676" }},
+ {{ "7.381043432400802295489938842365518212318420410156250e-2", "2.785260961407158135936038001467807134758913889527320861816406250e-6", "9.99992740925564330652806516420746938988010148239633275154076421571630454719695668630175026322867662102076692387029189869547293172340508820534949790931051258505036554857756821592275590340005422029182367955076901146714768419205676755504470790282646601620852828276821380880075367804416790635127471984294e-1" }},
+ {{ "2.2460666646297293482348322868347167968750e4", "3.5622485300151595311035634949803352355957031250e1", "1.01973918494886267810001894567464669163247766970377570638787946610322435627850446066260492108701967988500602281478606685233882133420407449502588207373547970434356681888963673609480451591224779378429762251379481389292664486026843607177275521955621777327928762357765933587555111806380884809909558908126e155" }},
+ {{ "9.008001827101250191809356238081818446516990661621093750e-4", "9.6443272576535524209795369188213953748345375061035156250e-4", "9.93259995118943779913113450886803213157300236441759177808360979990670369813799397673229074691051859756881735508284831070803950318509897851789286938821324800564473083981421925321740139076048924264684734691750703913517330543410997193207195299362629750503027996358069377923999788650279477370768077765657e-1" }},
+ {{ "9.4182003413893980905413627624511718750e4", "7.774193002886642601045527611880459062376758083701133728027343750e-7", "1.00000890381075384949081595209139696411199492416870417459364082687864113657489926105641478106668362778068330268736600393352152923274282322515415108939987073582719187381060734722668227714154297709452559911296248629890116220184188866083605360898785001127921221360852853375996265543887873427220880943937" }},
+ {{ "3.7369273199951797900797423324092960683628916740417480468750e-5", "5.54122149350758519403825630433857440948486328125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.92632813942166735469252865298175146289395053013193471532530902730842579927583105349449489218906918310069151271847219223504300355763614013961247019308729802033635205970100220700085021558381217246935232153985446384879850169504304149149649141113162707552300166988589633450196697040655835196191118606631e-25" }},
+ {{ "1.3620738122341888645672192126312438631430268287658691406250e-4", "2.62468618182947011518990620970726013183593750e2", "2.23349312978912488484797519539255018773821880984944037182332190114599517402131412348320914129812507474815113624208263309735483442308554370722059051755362465566371079854655405434396337539491832247301779055162543337811300162664812836135792078898777055591459214033387458633919871456241380657515870584905e-1015" }},
+ {{ "4.9943935269132489338517189025878906250e4", "3.826691408876888544909888878464698791503906250e1", "6.25800762575108176129137940894321369236803059535403474287787709049193999989553876351149791249607106743078893765328229169808063556877194151113548299740103775991789375636892691914854010648529483996498522632062568652379746122433944483375027665116468292026500341138320088041194003298397510386237462266236e179" }},
+ {{ "6.485392961276647838531062006950378417968750e1", "4.190817698307106042854286442889133468270301818847656250e-3", "1.01763841928646063179945311430619776672100366204545937731495139936077193534063748395270846081233643612207997993464082794803985613863394615181696471224069637239381759785944556677466232970035407360811317566511537057177507901702757204703329800142152099723806486139061978862458791045685416916469263617024" }},
+ {{ "1.261853587411265742446175863733515143394470214843750e-3", "4.1870787456376986138129048242717544781044125556945800781250e-4", "9.97208954505633083962348848418154736485944843062550245347612203304547965531131555025237286475690843458460809325029245321285039436520603179307117618768371875438665250167675789128497710216048233584274468422162333906486838232593986287174975031846178589748114260487176217087771250070897293526267935699686e-1" }},
+ {{ "4.35488942342848749831318855285644531250e4", "4.98678835531215099763358011841773986816406250e2", "2.28936120581079817550967747499324146341809782859497306106568788729215792440868081012592482836115918565108733027645928062811796100015424546044055914594061783213133483941275372186699846142681689537346156745852091720729474664315028859269079769914368203114147150204153490030106741528606576208240181832379e2313" }},
+ {{ "9.5207914036902785426264017587527632713317871093750e-1", "1.08107909706786978198955750940513098612427711486816406250e-3", "9.99946912731466247972527890006754510895764819973853843000662583785640845446566388520861934833991540886888853432324685563515222422612660717906957938307798158191679485565611171204322088502967506340693425660800080176478497228519680488062210430869030836704176100634086409155754383655120084467598988079204e-1" }},
+ {{ "1.0409068401303045448003103956580162048339843750e1", "1.936739214855335831089178100228309631347656250e2", "1.11210338662691592819619664979726597449100163292683513479170961681889868927958630114518483290408310841588879531996056535646660865328863109763975044243074863201932805945130071457158971557983161341534770079019284360491414192422030250649176833692020314068650401152520803465262499102820988511235853988648e197" }},
+ {{ "1.971498010271299783369158831192180514335632324218750e-1", "5.08739590531112617632913952547824010252952575683593750e-3", "9.91773157361409781701715493663763866515090466561690289420891165770114164193580683686846646130438934752909209919079027125210567061374829822112866779201464446464651026659338435230202216580437945262368984290532688736997482187636274012593325315635831427955296981578931251003363149110123293975764983649974e-1" }},
+ {{ "2.79971511541740710526937618851661682128906250e2", "5.787218752022283210778574868982104817405343055725097656250e-4", "1.00326623969490901566461359485954800182836515927200276988639325398663724684484176518830065683294723102506600723636309590040090118084917994679575687454329398419185701984750026134555302778342008308134679599723649132979721129657717437355628051914400727321111879908949789141417261266151891576137055521720" }},
+ {{ "6.471802775221924264315020991489291191101074218750e-2", "3.54396046637904049703138298355042934417724609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "6.11393159288848940315388484390073955173736785149894558116032886653088516351969818186256818732041463123159800744120590173108691581334056179094211775690837141959813271450679799058611736101514220405786918675156348944553549256908731766892776136986705072991002327432436231317606705791658862062772822668961e-5" }},
+ {{ "4.6847849382473068544641137123107910156250e3", "8.085034584903098675567889586091041564941406250e1", "5.97762155395492793734284548790084346203097684458052431296538227291993735975496781864258983550151454075639982388971649044469779839674940147551147838593024539580668837295332526092577626791361518961708496544368414553255175123291725694241746786254191457634438577633532650001615818789185478534006606741407e296" }},
+ {{ "1.5439145955192981607417834766238229349255561828613281250e-2", "9.3029150204543831215175941906636580824851989746093750e-3", "9.61942064374907006758472323953419672912600288860094391695046538452658427001421356899386802781741233841276963853691331000772213773371503948038327239870459585412114416103967368390201886001946927622637207918880459451317082626408706757400699845882572764664471363683650469561537447695573432201521718527705e-1" }},
+ {{ "6.48003875925739691865601344034075736999511718750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.261210824526329004127700450510474183829501271247863769531250e-5", "1.00006094496769763278820872383817879036100529479018908630432836412716347076273911182394224909321200839758060396148281450949863621182268008379068612869939290370399199699187329868380547441347229000962054100848350577521278040241049817698210922858722233509600098748764436396006044192563867258556456726002" }},
+ {{ "1.02255146268133501052943756803870201110839843750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "5.8993269109875526301500769932317780330777168273925781250e-3", "1.00013156917767091552599892235129254853484398955770015153844565825349128084659104946293310766324345122756751921898192510410177121820174080396618577123202206891707775599129806431636068338328182197155856712217515198962725685962829886150997851437588418591804207516238583892908865355284748545102405714042" }},
+ {{ "2.81888129121324254811042919754981994628906250e2", "4.073526023631882098108292211691150441765785217285156250e-3", "1.02324693289074461806065314601130588099455748535483252525100029761881094483032981058215632709470546862166291555062468221229877852679809354657976457141823806639541535849041446001105725715917762334478759524935613974359759936992996718201195710259035985781666122257084622777055529931477121573215140197696" }},
+ {{ "2.0718540452792653982008741486708913726033642888069152832031250e-5", "5.35292300705978618680092040449380874633789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "8.48850440195174823298359540121818302112603372945421421598869878434979555804675505735326375593302973038814914197710751833892726619856756218734694899102028024355384042325664532283875944124268902285546831042825514027899847395159917919088321233227951525026080119430650746383889735094027434636578283016912e-26" }},
+ {{ "4.31935286049695476781606906513388821622356772422790527343750e-5", "2.674460276028911646364547016752055696997558698058128356933593750e-6", "9.99973122517169758868298611393816315674468708382437784046013092517874934197350186005397961789565235843871109955511656116413964407693637441952651815512224774438246717669200447114406421198392169132912944363201879586414171509537947822165122722681222879324770937027844102716000158168894762456660415032672e-1" }},
+ {{ "5.6072865956525586847219652653073751480405917391180992126464843750e-7", "6.380308531301886202031017902847054301673779264092445373535156250e-7", "9.99990816207746297627000228090032149940299388165914304992280548917955938225443662692605137525666097388080408339273626056667955459490552137971306327684500228508064672496432612203803093818358636762048072433804065084080756285538210846111127149390742779965190790248566867146590543170273767758612958658971e-1" }},
+ {{ "4.943658727909295636307462906700038729468360543251037597656250e-5", "6.081072865861608534032711759209632873535156250e1", "1.41889634080305711655291544430541860422410170311666966191109605478799772032330347327796646352426019590688459329571978188218768772574725991603534645626444629132445446486278236532522655245444099755490849273965885852698636839519891473821647868673766453693048753250768728056307822453273785810806442880557e-262" }},
+ {{ "4.578630412410618737339973449707031250e5", "1.279961392849584456143929855898022651672363281250e1", "2.85252911535679891073378835901479886089967576299789401385670015780551662533990060451545346245206661914640102653229509656129118798311517873586006356564037704026911300448200277564257378774264510533411693099418541902845247573044373703549276907520323049567611007543654341177174512295005876331502328496351e72" }},
+ {{ "2.08423524510303792567356140352785587310791015625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.35070210371325316600632504560053348541259765625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.69650994818884808551478851790421398330849110943521821889862054443832715742450095948994740658527477301306542925058870703929885411081233767845292798598894899925369153906803097693018622562446710881324699679389099964263723003154543262693904642747226514772235244787350437914151428906711221635213885798789" }},
+ {{ "7.0350735533994179782268929557176306843757629394531250e-2", "8.66736311094788106856867671012878417968750e2", "7.68909935340978860422757035820741960584342288164122209394216788923406587897458745269054408633969378408300698489680800368145152233150125878615072546588959342193206959268161227822392820692595901101440058139059566058188384350410226233241151749648406111214064140648607944967440645591239738930953785109368e-1000" }},
+ {{ "4.44777561798017704859375953674316406250e4", "4.37314005329937316446375916711986064910888671875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.12314549862845492717877595964768115546325186339715764453604920761210996544623734651949041265076846799054130789000520895961692269440989421981634150513113011053879079524507516981642085862682964932699084859566571367826867471772759871670601934760070910316789800074922999274803369631048113774053097073929e20" }},
+ {{ "4.78949184649386006640270352363586425781250e3", "1.791833511743041071895277127623558044433593750e2", "2.79637132177375382162263956935980813855595791264327736518378404210637984016731507340572257630052502643907564502937056932274446805895054500000116906646009851736492937513833076602489625307279653461589071484812740516746714953908730424736460829219077432204380475346934742691432944334479643432469277088306e659" }},
+ {{ "6.22325830215437599690631031990051269531250e3", "2.25225952793516384642380501190928043797612190246582031250e-3", "1.01987069469372759270453628912642728954230513534833089604954661995171725801656380902963421144934906141234552439696120736550210382743489449329697576830407056888118360526079463661066722214220114165138840831176499526985462507289995825151030297233511088604059436353741508088143154130210563278515547311543" }},
+ {{ "9.1240044070163778613946625739572482416406273841857910156250e-5", "2.34400553054916376341521022652614192338660359382629394531250e-4", "9.97821977486950583166084719161557689663568325790003522306021158417755185644936647878316368235185593329253132043532554677812935724747863173935255764658313396824835230126055857216828346612262350441572667853382236006603976105644273478945602579828808105896550462847104108659412377316272488653010471184196e-1" }},
+ {{ "1.33795627811531119277788093313574790954589843750e1", "1.4818381285251529879158291502783129089948488399386405944824218750e-6", "1.00000384349299045776862801360403732363545774843774701655200272080627739941386437175886379606902727479191090187794979610761904053274682140855025508483613322969568848488035529156236560186742600966591613965074184599845133474883618868818832890976311295886503114503738779326119140373893527826165039256344" }},
+ {{ "7.0693904131002636859193444252014160156250e3", "7.520701131772273129172390326857566833496093750e1", "3.16601617096668251300410633861451144300904853213668949893514704576723535839139585890152639279492333481781656085682222252609689619088940700517823681224990153082715763605916833922234577262387169239662906567674441665483003247288718595609022710170750805174093013421029787059183231600348513197446175716344e289" }},
+ {{ "1.4680947481997885795124147989554330706596374511718750e-1", "6.551502580580362278261929986911127343773841857910156250e-3", "9.87508829078291473496350060709599928627355203095913409392108636898471105714839831302147923025254259824329731513966469918955762532776229610929533035120642195606951641982085398951090528368050382553009140996960228822308531093162518295270230167711636888797942089811261515649759631850124542086583338696866e-1" }},
+ {{ "2.13403424835757107302924850955605506896972656250e1", "6.748819597020269678289139392290962859988212585449218750e-3", "1.02087023232278898673025082821180943357336233310089987611387411667231521549575677239762600896132782138671932320359043850059141855317509884880628897347559802452573752440941620827448739200875424446592178873469737214134752340014718109265906882735838254335143242217171430272779729156476847140495477447567" }},
+ {{ "7.9523384475269076610004503891104832291603088378906250e-3", "2.848516784813468483150700194528326392173767089843750e-1", "2.52320441273088937482705455163451804728010853035570734024869989669472225400000323970014547943529070869582874785761555559916107563529628329435884632549334664560080647778917243975126257892837384804686623525333256233581024540617818741704180357848449262419278792476592443919338009722004675820379508226554e-1" }},
+ {{ "4.86469155616132400629658683044453937327489256858825683593750e-5", "5.2287743444463866127058793153992155566811561584472656250e-3", "9.49398596693121402232511551773946216238940594887656584112333721649128338309222255715733045830942439483758414668436262063880698192055748811167639524982228502529443333539688201437948685066022343441584667892362197265423697997073104183476242310932155094648160217817878533689247152065556146288540676206268e-1" }},
+ {{ "9.97061023610679164619341463549062609672546386718750e-2", "5.8806435521089213125378591939806938171386718750e1", "1.31339250305317586137103280435203540286641209041963686984564977317675267872546421630007855518104235103746292194256810045376453068069833982650717834727768128915903290190711155087191155109113681049655966851631090461344965018352997694452739029417934674832819743056725077543693812469593253205921308221308e-59" }},
+ {{ "9.250672288777586627084303927404107525944709777832031250e-3", "6.580410957004390049007724883267655968666076660156250e-2", "7.3479441170322764076883455903714667808123745049715180864128469285725740507392126144584630714483987624811982136825764300996419478406647597069868650694836325508907243957328574154916156467594981153576656803869050960269309839419957622805799157028500973756402769602128058256241358541254395091132685326210e-1" }},
+ {{ "1.2714451115926221973495557904243469238281250e3", "6.1883631944992800733018611936131492257118225097656250e-2", "1.55634262177085310455272777009125596103461766420555774353254576944288801886851836915203973701385795773437574206488784269131348804974222211728133676956373754063980028710578189114584286886146802067657659439377822750677886486205610448378645450751753499248735236114037268909383185086028320044219137753422" }},
+ {{ "1.422058718410514757124474272131919860839843750e2", "2.49175822061007323782177991233766078948974609375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.31499443769464065089935605375459683035642863575091614297392875457512297919442473147075015935528487370816930373009973708163470195938036050657595355692444453780282744702410807810566482106290630446087507470829783752836539009991223629616484834464198297022741851935670638283977884632514115384409382379451e5" }},
+ {{ "1.7983084647168379888171330094337463378906250e2", "5.15740741801222002740900940409574104705825448036193847656250e-5", "1.00026780930725147708425182905646433452420215464014520968261578887024273841780021979940791064143678705875846798937060716374571767664452465951073901977576420551043883735274454852404885141087100496560513919957329201186421887438051030917217421635429456043545707951122601188323754670287140035060211268236" }},
+ {{ "1.416174937472059980336780427023768424987792968750e1", "8.06659473408631241819755075539433164522051811218261718750e-4", "1.00214037426842670551611147350147052752193345171802567422360034056719592273707967867550926051192650203531759829732673928643729296057128383914827597014066465351929167430158631190618779931772000386360976972135737607634338444086468691888473748375182457345550820744493891034677687786078596412978684852640" }},
+ {{ "3.036204456962959472021701401445170631632208824157714843750e-4", "1.777555595293553447611145656992448493838310241699218750e-2", "8.65907453809699509460147409829901675941527854788885630333979265214696163822247505595008528776776735251807610239492515526114770917079309768787319965003601255566849812163333057688474056980168539317656182802355025321396669769362336327872219770789870937515083196007462468888621524361865732646086424336453e-1" }},
+ {{ "1.8815079698449000716209411621093750e4", "1.96075222779542400530772283673286437988281250e2", "1.33268783679377583213014321394305562443708551652324893198731298378098553656636607906131354129802125769805603337990709647117721910862833606977379369954861887407787985331605230823250624512728814254652735899657072127956911865541366861599183456838203731048557393074731179271410020592240238165188774584943e838" }},
+ {{ "8.89727582886910006720881938235834240913391113281250e-1", "1.041279960771747739589621062350488500669598579406738281250e-3", "9.9987834430235824472224814411122243776265486577981177293571821321821517441659311658576556678112989769575007643432909365063217328716826322973493501036244864951726160136161783061801068077323413577888781728469725649419290963386640028890564993827733767871754809898250945769328951487990853772174957746180e-1" }},
+ {{ "1.83083205221824460440238624414632795378565788269042968750e-5", "8.5130581526808327907929196953773498535156250e1", "5.08759465190948202575969824985581134108808966132826957045953621966485495100532942367792704772987024490520063202480279983957515910756497430137889290866515761789926914423548570454774810411630371091100113544891279153106437138536746735808516608107152208446229082973737250416694137957514739571766896873306e-404" }},
+ {{ "3.346653408259039663751391313617489231546642258763313293457031250e-6", "3.7868598858803215989610180258750915527343750e2", "3.52212078787830927194297643296251781134291925779877466674871728836105722487573580131785145484495276918545575844013070305855330551951353365366550132397674036846629030890995284036782751533644901503503905390007269189142085867922573306793968734446410118933272999821289312420310855129959801669881803865858e-2074" }},
+ {{ "5.3392773503090527415166147151559528083453187718987464904785156250e-7", "6.207661898675727671229399029506623719498747959733009338378906250e-7", "9.99991034310800110010707678195555035460840436574922962233018600570397473321611757701145927433415065972844383465094874922585959664097551124468322387734536918015102243687653110114625528443011692213994065730522520240541725522418247328328568974843758308408263849244150678651666777627782107985602066092068e-1" }},
+ {{ "2.19994195074324068173154955729842185974121093750e1", "3.06707480325778616969678580517211230471730232238769531250e-3", "1.00952545862365855685219042115608145190455235613268820530406120489310419092421063376518661644406509494089174786391890344365290616699827245940846567812410266752069452669091303167176618868615804832415636793311353407444727299687139263635273616648724056070625009496090575286667611858626054037393426920940" }},
+ {{ "9.494261316265068537459392850053063739323988556861877441406250e-6", "3.33658593189578134285966370953246951103210449218750e-1", "2.10953513637051167906362488703903898283324995313357160919327331939686921714903739192273840983847338772103005796728222224591772689334463276313863779738778665022741134644128703431090827473653846081611135627094959784765932765625500258444912393296945910143335619574776807349923037475968356403544804516261e-2" }},
+ {{ "1.58204381201744226359551248606294393539428710937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "1.699670888752343416014042865036515195242827758193016052246093750e-6", "1.00000077966919198536118506000604021848342587459233214812502825319036185927111842640720441778472762148840769009480654434988580516960635247026640481971290957649218368276357248615028690535272593446475039055115505472342603119011692356413204456935489635677140077206818440909527541341514742179392759484948" }},
+ {{ "7.89159836081502775182242026552614788670325651764869689941406250e-7", "4.816961061463680380256846547126770019531250e2", "1.94147359401180853490618926342983857830809890106752620847948172427377774972592621604834694930262822082783398795004418901297871494637794539318032606545630879764294273346094400196886499691750495365869112152459387957968585556903274684614177896724684391146995388586545846815713970966406314356957705636188e-2940" }},
+ {{ "1.289097083842133870348334312438964843750e5", "6.9303987741382092058195496520056622102856636047363281250e-3", "1.08496647090160629262865176257751429047729744058064486558757367783712447981236338124011887293782800275409466363098994983981904989007840757365461380428739706364354348918768376442904733609028311603151255847131247523710764847675936168535507206845244124708518371354311381017836653040028826211975497871572" }},
+ {{ "1.88979339146257488413205294364161090925335884094238281250e-3", "1.507462797900369366743689170107245445251464843750e1", "8.76918423991144038304021445193438173201942067819279237648900596695575024236585474624026460405210909663314261583560910578839787952809598740673148266220449752385049510413309645447866767727463403580780664879153239139760411591518829772808581212853680494395035365090735562853954119264286528501466090236373e-42" }},
+ {{ "8.41517212362860789198748534545302391052246093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "3.64690954096749919699504971504211425781250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.36385641555849335879047779054573450503531219143280186506059811952516602814802026798922317458022305556248077861115239238036534162971730930403784483407045473794360984711531633071954017599185535725837014265828161774595330813847033913388549400091383297967089159291617295023155265969142242902513558326176e3" }},
+ {{ "7.794539153729454028507461771368980407714843750e1", "1.375701859744113164651935221627354621887207031250e1", "1.06022076559461302576262215724290203547920286581395364873074659478022575993646868223512587189711310741927159850526321306597320278985726000202501743927791980296512242522543006053260060771089791556404973296770985910119125940674256012428243689156025466514102435785983398909290409351186888763744330929933e26" }},
+ {{ "1.53996830801468109712004661560058593750e5", "1.5575394558063157535165998979209689423441886901855468750e-2", "1.20447431374301175187511662239775886280442123057569989101048717965641664163683965122530380365781626549245733448495292659434928101251174655724999866929500920292760069066534315397658186379331270528348085084759405281722204998903474609597521346801285181467380964556686904383585877178604246579963496131145" }},
+ {{ "1.58292085642406949773430824279785156250e5", "2.39839658341223938009534322191029787063598632812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.95369184630899349835322600435195771430552393938403392920497743251505007693757163085390208500076347439614593692001276141903681987497427879862172599262551403341684739246319058993775975522937386429303489479759146923528741632009619169067978673180741577543638362298805900307916877489621750277562246056785e12" }},
+ {{ "1.3400796278978785267099738121032714843750e4", "1.930784873528596304326221400060603627935051918029785156250e-3", "1.01851774851557016267678896947673493426952146980838508956199625705868791978344101642179134412654468177801448310465798049263061832294449615311708734175434429497593168411288076223275335865898358255932555661831601275564405349791579099870920484601878548075981946266790952650050188664408833668093366337128" }},
+ {{ "6.575650904605106461531249806284904479980468750e1", "2.95349579102368409166956553235650062561035156250e1", "4.92883670959819008737323351550818895693909971573197862669756297233542900030950953480711710193053129535412775508169382249001427538228339649766961919628309117712145393012207284297044617755253176225355208718450804357511545954540599873761726532747435308616642768909463909723766874135347528684022648860560e53" }},
+ {{ "7.73401481707858096115160151384770870208740234375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "2.491481202776960799383232370018959045410156250e2", "2.21022119284238444262099118632640694751857489911985882302778583637174384391251394588072250813144879442061174245455228341031066580984347413608919792407019123272438031870871777573323381609534176617167457318208979616222032754767955294734636001910121462806120247278470491361024670390806812831433737112379e221" }},
+ {{ "1.109788988632283901134001347088542388519272208213806152343750e-5", "1.3221937740391638271830743178725242614746093750e1", "3.07947867569658321194458380597181231565685445537647073748124994390202466909582021155440785847623999110729024670271166064504654713592331835440877924887265726281088902886492996205474623955394661696347608605548560131153946508949187941058346142181719469523416895370937975489878692955467549849494731965625e-66" }},
+ {{ "6.01388538493091151515557157836155965924263000488281250e-2", "2.600229311077009085274511224206150927784619852900505065917968750e-6", "9.99992690524283092045041727666257712294170472055655983655789156306985603524706361035867762480294454684826579379760817381252880474747063748101481751389649370586878847928039436815138481244723824252557644191693486953238362877605577315573573222917218930477592061427550313462645068276263623663297863327092e-1" }},
+ {{ "2.155348014323840710737556491949362680315971374511718750e-2", "4.0581281467163221599037115083774551749229431152343750e-2", "8.55799445393602464144976083125961944702079982479924287374752573999342183140040918969698718557087349720031284500593972794455976395816766982409031253828819168807248785638632014800512514311905184872890032777260194266023572565329278809193542262172193713145497824126566400120337339261082686915643720103934e-1" }},
+ // Integer exponents:
+ {{ "1.250e-01", "0.0e+00", "1.0e+00" }},
+ {{ "-1.250e-01", "0.0e+00", "1.0e+00" }},
+ {{ "7.50e-01", "0.0e+00", "1.0e+00" }},
+ {{ "-7.50e-01", "0.0e+00", "1.0e+00" }},
+ {{ "1.0e+00", "0.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "0.0e+00", "1.0e+00" }},
+ {{ "1.250e+00", "0.0e+00", "1.0e+00" }},
+ {{ "-1.250e+00", "0.0e+00", "1.0e+00" }},
+ {{ "5.5250e+01", "0.0e+00", "1.0e+00" }},
+ {{ "-5.5250e+01", "0.0e+00", "1.0e+00" }},
+ {{ "1.250e-01", "1.0e+00", "1.250e-01" }},
+ {{ "-1.250e-01", "1.0e+00", "-1.250e-01" }},
+ {{ "7.50e-01", "1.0e+00", "7.50e-01" }},
+ {{ "-7.50e-01", "1.0e+00", "-7.50e-01" }},
+ {{ "1.0e+00", "1.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "1.0e+00", "-1.0e+00" }},
+ {{ "1.250e+00", "1.0e+00", "1.250e+00" }},
+ {{ "-1.250e+00", "1.0e+00", "-1.250e+00" }},
+ {{ "5.5250e+01", "1.0e+00", "5.5250e+01" }},
+ {{ "-5.5250e+01", "1.0e+00", "-5.5250e+01" }},
+ {{ "1.250e-01", "2.0e+00", "1.56250e-02" }},
+ {{ "-1.250e-01", "2.0e+00", "1.56250e-02" }},
+ {{ "7.50e-01", "2.0e+00", "5.6250e-01" }},
+ {{ "-7.50e-01", "2.0e+00", "5.6250e-01" }},
+ {{ "1.0e+00", "2.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "2.0e+00", "1.0e+00" }},
+ {{ "1.250e+00", "2.0e+00", "1.56250e+00" }},
+ {{ "-1.250e+00", "2.0e+00", "1.56250e+00" }},
+ {{ "5.5250e+01", "2.0e+00", "3.05256250e+03" }},
+ {{ "-5.5250e+01", "2.0e+00", "3.05256250e+03" }},
+ {{ "1.250e-01", "3.0e+00", "1.9531250e-03" }},
+ {{ "-1.250e-01", "3.0e+00", "-1.9531250e-03" }},
+ {{ "7.50e-01", "3.0e+00", "4.218750e-01" }},
+ {{ "-7.50e-01", "3.0e+00", "-4.218750e-01" }},
+ {{ "1.0e+00", "3.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "3.0e+00", "-1.0e+00" }},
+ {{ "1.250e+00", "3.0e+00", "1.9531250e+00" }},
+ {{ "-1.250e+00", "3.0e+00", "-1.9531250e+00" }},
+ {{ "5.5250e+01", "3.0e+00", "1.686540781250e+05" }},
+ {{ "-5.5250e+01", "3.0e+00", "-1.686540781250e+05" }},
+ {{ "1.250e-01", "4.0e+00", "2.441406250e-04" }},
+ {{ "-1.250e-01", "4.0e+00", "2.441406250e-04" }},
+ {{ "7.50e-01", "4.0e+00", "3.16406250e-01" }},
+ {{ "-7.50e-01", "4.0e+00", "3.16406250e-01" }},
+ {{ "1.0e+00", "4.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "4.0e+00", "1.0e+00" }},
+ {{ "1.250e+00", "4.0e+00", "2.441406250e+00" }},
+ {{ "-1.250e+00", "4.0e+00", "2.441406250e+00" }},
+ {{ "5.5250e+01", "4.0e+00", "9.318137816406250e+06" }},
+ {{ "-5.5250e+01", "4.0e+00", "9.318137816406250e+06" }},
+ {{ "1.250e-01", "5.0e+00", "3.05175781250e-05" }},
+ {{ "-1.250e-01", "5.0e+00", "-3.05175781250e-05" }},
+ {{ "7.50e-01", "5.0e+00", "2.3730468750e-01" }},
+ {{ "-7.50e-01", "5.0e+00", "-2.3730468750e-01" }},
+ {{ "1.0e+00", "5.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "5.0e+00", "-1.0e+00" }},
+ {{ "1.250e+00", "5.0e+00", "3.05175781250e+00" }},
+ {{ "-1.250e+00", "5.0e+00", "-3.05175781250e+00" }},
+ {{ "5.5250e+01", "5.0e+00", "5.1482711435644531250e+08" }},
+ {{ "-5.5250e+01", "5.0e+00", "-5.1482711435644531250e+08" }},
+ {{ "1.250e-01", "6.0e+00", "3.8146972656250e-06" }},
+ {{ "-1.250e-01", "6.0e+00", "3.8146972656250e-06" }},
+ {{ "7.50e-01", "6.0e+00", "1.779785156250e-01" }},
+ {{ "-7.50e-01", "6.0e+00", "1.779785156250e-01" }},
+ {{ "1.0e+00", "6.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "6.0e+00", "1.0e+00" }},
+ {{ "1.250e+00", "6.0e+00", "3.8146972656250e+00" }},
+ {{ "-1.250e+00", "6.0e+00", "3.8146972656250e+00" }},
+ {{ "5.5250e+01", "6.0e+00", "2.84441980681936035156250e+10" }},
+ {{ "-5.5250e+01", "6.0e+00", "2.84441980681936035156250e+10" }},
+ {{ "1.250e-01", "7.0e+00", "4.768371582031250e-07" }},
+ {{ "-1.250e-01", "7.0e+00", "-4.768371582031250e-07" }},
+ {{ "7.50e-01", "7.0e+00", "1.33483886718750e-01" }},
+ {{ "-7.50e-01", "7.0e+00", "-1.33483886718750e-01" }},
+ {{ "1.0e+00", "7.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "7.0e+00", "-1.0e+00" }},
+ {{ "1.250e+00", "7.0e+00", "4.768371582031250e+00" }},
+ {{ "-1.250e+00", "7.0e+00", "-4.768371582031250e+00" }},
+ {{ "5.5250e+01", "7.0e+00", "1.571541943267696594238281250e+12" }},
+ {{ "-5.5250e+01", "7.0e+00", "-1.571541943267696594238281250e+12" }},
+ {{ "1.250e-01", "8.0e+00", "5.96046447753906250e-08" }},
+ {{ "-1.250e-01", "8.0e+00", "5.96046447753906250e-08" }},
+ {{ "7.50e-01", "8.0e+00", "1.0011291503906250e-01" }},
+ {{ "-7.50e-01", "8.0e+00", "1.0011291503906250e-01" }},
+ {{ "1.0e+00", "8.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "8.0e+00", "1.0e+00" }},
+ {{ "1.250e+00", "8.0e+00", "5.96046447753906250e+00" }},
+ {{ "-1.250e+00", "8.0e+00", "5.96046447753906250e+00" }},
+ {{ "5.5250e+01", "8.0e+00", "8.682769236554023683166503906250e+13" }},
+ {{ "-5.5250e+01", "8.0e+00", "8.682769236554023683166503906250e+13" }},
+ {{ "1.250e-01", "9.0e+00", "7.4505805969238281250e-09" }},
+ {{ "-1.250e-01", "9.0e+00", "-7.4505805969238281250e-09" }},
+ {{ "7.50e-01", "9.0e+00", "7.50846862792968750e-02" }},
+ {{ "-7.50e-01", "9.0e+00", "-7.50846862792968750e-02" }},
+ {{ "1.0e+00", "9.0e+00", "1.0e+00" }},
+ {{ "-1.0e+00", "9.0e+00", "-1.0e+00" }},
+ {{ "1.250e+00", "9.0e+00", "7.4505805969238281250e+00" }},
+ {{ "-1.250e+00", "9.0e+00", "-7.4505805969238281250e+00" }},
+ {{ "5.5250e+01", "9.0e+00", "4.7972300031960980849494934082031250e+15" }},
+ {{ "-5.5250e+01", "9.0e+00", "-4.7972300031960980849494934082031250e+15" }},
+ {{ "1.250e-01", "1.0e+01", "9.313225746154785156250e-10" }},
+ {{ "-1.250e-01", "1.0e+01", "9.313225746154785156250e-10" }},
+ {{ "7.50e-01", "1.0e+01", "5.6313514709472656250e-02" }},
+ {{ "-7.50e-01", "1.0e+01", "5.6313514709472656250e-02" }},
+ {{ "1.0e+00", "1.0e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.0e+01", "1.0e+00" }},
+ {{ "1.250e+00", "1.0e+01", "9.313225746154785156250e+00" }},
+ {{ "-1.250e+00", "1.0e+01", "9.313225746154785156250e+00" }},
+ {{ "5.5250e+01", "1.0e+01", "2.65046957676584419193459510803222656250e+17" }},
+ {{ "-5.5250e+01", "1.0e+01", "2.65046957676584419193459510803222656250e+17" }},
+ {{ "1.250e-01", "1.10e+01", "1.164153218269348144531250e-10" }},
+ {{ "-1.250e-01", "1.10e+01", "-1.164153218269348144531250e-10" }},
+ {{ "7.50e-01", "1.10e+01", "4.223513603210449218750e-02" }},
+ {{ "-7.50e-01", "1.10e+01", "-4.223513603210449218750e-02" }},
+ {{ "1.0e+00", "1.10e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.10e+01", "-1.0e+00" }},
+ {{ "1.250e+00", "1.10e+01", "1.164153218269348144531250e+01" }},
+ {{ "-1.250e+00", "1.10e+01", "-1.164153218269348144531250e+01" }},
+ {{ "5.5250e+01", "1.10e+01", "1.464384441163128916043863797187805175781250e+19" }},
+ {{ "-5.5250e+01", "1.10e+01", "-1.464384441163128916043863797187805175781250e+19" }},
+ {{ "1.250e-01", "1.20e+01", "1.45519152283668518066406250e-11" }},
+ {{ "-1.250e-01", "1.20e+01", "1.45519152283668518066406250e-11" }},
+ {{ "7.50e-01", "1.20e+01", "3.16763520240783691406250e-02" }},
+ {{ "-7.50e-01", "1.20e+01", "3.16763520240783691406250e-02" }},
+ {{ "1.0e+00", "1.20e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.20e+01", "1.0e+00" }},
+ {{ "1.250e+00", "1.20e+01", "1.45519152283668518066406250e+01" }},
+ {{ "-1.250e+00", "1.20e+01", "1.45519152283668518066406250e+01" }},
+ {{ "5.5250e+01", "1.20e+01", "8.090724037426287261142347479462623596191406250e+20" }},
+ {{ "-5.5250e+01", "1.20e+01", "8.090724037426287261142347479462623596191406250e+20" }},
+ {{ "1.250e-01", "1.30e+01", "1.8189894035458564758300781250e-12" }},
+ {{ "-1.250e-01", "1.30e+01", "-1.8189894035458564758300781250e-12" }},
+ {{ "7.50e-01", "1.30e+01", "2.3757264018058776855468750e-02" }},
+ {{ "-7.50e-01", "1.30e+01", "-2.3757264018058776855468750e-02" }},
+ {{ "1.0e+00", "1.30e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.30e+01", "-1.0e+00" }},
+ {{ "1.250e+00", "1.30e+01", "1.8189894035458564758300781250e+01" }},
+ {{ "-1.250e+00", "1.30e+01", "-1.8189894035458564758300781250e+01" }},
+ {{ "5.5250e+01", "1.30e+01", "4.4701250306780237117811469824030995368957519531250e+22" }},
+ {{ "-5.5250e+01", "1.30e+01", "-4.4701250306780237117811469824030995368957519531250e+22" }},
+ {{ "1.250e-01", "1.40e+01", "2.273736754432320594787597656250e-13" }},
+ {{ "-1.250e-01", "1.40e+01", "2.273736754432320594787597656250e-13" }},
+ {{ "7.50e-01", "1.40e+01", "1.781794801354408264160156250e-02" }},
+ {{ "-7.50e-01", "1.40e+01", "1.781794801354408264160156250e-02" }},
+ {{ "1.0e+00", "1.40e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.40e+01", "1.0e+00" }},
+ {{ "1.250e+00", "1.40e+01", "2.273736754432320594787597656250e+01" }},
+ {{ "-1.250e+00", "1.40e+01", "2.273736754432320594787597656250e+01" }},
+ {{ "5.5250e+01", "1.40e+01", "2.46974407944960810075908370777771249413490295410156250e+24" }},
+ {{ "-5.5250e+01", "1.40e+01", "2.46974407944960810075908370777771249413490295410156250e+24" }},
+ {{ "1.250e-01", "1.50e+01", "2.84217094304040074348449707031250e-14" }},
+ {{ "-1.250e-01", "1.50e+01", "-2.84217094304040074348449707031250e-14" }},
+ {{ "7.50e-01", "1.50e+01", "1.33634610101580619812011718750e-02" }},
+ {{ "-7.50e-01", "1.50e+01", "-1.33634610101580619812011718750e-02" }},
+ {{ "1.0e+00", "1.50e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.50e+01", "-1.0e+00" }},
+ {{ "1.250e+00", "1.50e+01", "2.84217094304040074348449707031250e+01" }},
+ {{ "-1.250e+00", "1.50e+01", "-2.84217094304040074348449707031250e+01" }},
+ {{ "5.5250e+01", "1.50e+01", "1.364533603895908475669393748547186153009533882141113281250e+26" }},
+ {{ "-5.5250e+01", "1.50e+01", "-1.364533603895908475669393748547186153009533882141113281250e+26" }},
+ {{ "1.250e-01", "1.60e+01", "3.5527136788005009293556213378906250e-15" }},
+ {{ "-1.250e-01", "1.60e+01", "3.5527136788005009293556213378906250e-15" }},
+ {{ "7.50e-01", "1.60e+01", "1.0022595757618546485900878906250e-02" }},
+ {{ "-7.50e-01", "1.60e+01", "1.0022595757618546485900878906250e-02" }},
+ {{ "1.0e+00", "1.60e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.60e+01", "1.0e+00" }},
+ {{ "1.250e+00", "1.60e+01", "3.5527136788005009293556213378906250e+01" }},
+ {{ "-1.250e+00", "1.60e+01", "3.5527136788005009293556213378906250e+01" }},
+ {{ "5.5250e+01", "1.60e+01", "7.539048161524894328073400460723203495377674698829650878906250e+27" }},
+ {{ "-5.5250e+01", "1.60e+01", "7.539048161524894328073400460723203495377674698829650878906250e+27" }},
+ {{ "1.250e-01", "1.70e+01", "4.440892098500626161694526672363281250e-16" }},
+ {{ "-1.250e-01", "1.70e+01", "-4.440892098500626161694526672363281250e-16" }},
+ {{ "7.50e-01", "1.70e+01", "7.51694681821390986442565917968750e-03" }},
+ {{ "-7.50e-01", "1.70e+01", "-7.51694681821390986442565917968750e-03" }},
+ {{ "1.0e+00", "1.70e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.70e+01", "-1.0e+00" }},
+ {{ "1.250e+00", "1.70e+01", "4.440892098500626161694526672363281250e+01" }},
+ {{ "-1.250e+00", "1.70e+01", "-4.440892098500626161694526672363281250e+01" }},
+ {{ "5.5250e+01", "1.70e+01", "4.1653241092425041162605537545495699311961652711033821105957031250e+29" }},
+ {{ "-5.5250e+01", "1.70e+01", "-4.1653241092425041162605537545495699311961652711033821105957031250e+29" }},
+ {{ "1.250e-01", "1.80e+01", "5.55111512312578270211815834045410156250e-17" }},
+ {{ "-1.250e-01", "1.80e+01", "5.55111512312578270211815834045410156250e-17" }},
+ {{ "7.50e-01", "1.80e+01", "5.6377101136604323983192443847656250e-03" }},
+ {{ "-7.50e-01", "1.80e+01", "5.6377101136604323983192443847656250e-03" }},
+ {{ "1.0e+00", "1.80e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.80e+01", "1.0e+00" }},
+ {{ "1.250e+00", "1.80e+01", "5.55111512312578270211815834045410156250e+01" }},
+ {{ "-1.250e+00", "1.80e+01", "5.55111512312578270211815834045410156250e+01" }},
+ {{ "5.5250e+01", "1.80e+01", "2.30134157035648352423395594938863738698588131228461861610412597656250e+31" }},
+ {{ "-5.5250e+01", "1.80e+01", "2.30134157035648352423395594938863738698588131228461861610412597656250e+31" }},
+ {{ "1.250e-01", "1.90e+01", "6.9388939039072283776476979255676269531250e-18" }},
+ {{ "-1.250e-01", "1.90e+01", "-6.9388939039072283776476979255676269531250e-18" }},
+ {{ "7.50e-01", "1.90e+01", "4.228282585245324298739433288574218750e-03" }},
+ {{ "-7.50e-01", "1.90e+01", "-4.228282585245324298739433288574218750e-03" }},
+ {{ "1.0e+00", "1.90e+01", "1.0e+00" }},
+ {{ "-1.0e+00", "1.90e+01", "-1.0e+00" }},
+ {{ "1.250e+00", "1.90e+01", "6.9388939039072283776476979255676269531250e+01" }},
+ {{ "-1.250e+00", "1.90e+01", "-6.9388939039072283776476979255676269531250e+01" }},
+ {{ "5.5250e+01", "1.90e+01", "1.271491217621957147139260662037222156309699425037251785397529602050781250e+33" }},
+ {{ "-5.5250e+01", "1.90e+01", "-1.271491217621957147139260662037222156309699425037251785397529602050781250e+33" }},
+ {{ "-1", "18446744073709551615", "-1", }},
+ {{ "-1", "18446744073709551614", "1", }},
+ }};
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ T val = pow(T(data[k][0]), T(data[k][1]));
+ T e = relative_error(val, T(data[k][2]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = pow(T(data[k][0]), -T(data[k][1]));
+ e = relative_error(val, T(1/T(data[k][2])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ //
+ // Special cases come last:
+ //
+ BOOST_CHECK_EQUAL(pow(T(0), T(0)), 1);
+ BOOST_CHECK_EQUAL(pow(T(0), 0), 1);
+ BOOST_CHECK_EQUAL(pow(T(0), T(2)), 0);
+ BOOST_CHECK_EQUAL(pow(T(0), 2), 0);
+ BOOST_CHECK_EQUAL(pow(T(1), T(0)), 1);
+ BOOST_CHECK_EQUAL(pow(T(1), 0), 1);
+ BOOST_CHECK_EQUAL(pow(T(1), T(2)), 1);
+ BOOST_CHECK_EQUAL(pow(T(1), 2), 1);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sin.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sin.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,337 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+# define TEST_MPFR_50
+# define TEST_MPFI_50
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 101u> data =
+ {{
+ "-9.71360659712083391437631022096936715962104815777147739346439739644168480837178969413799829610404829247283169084501281105e-1",
+ "-5.95431113317256105006804890684659010940293672390817519158205264611725147142085353698349092164137652363446368483953564682e-1",
+ "5.09924118934356013545988500545586843463766955556781588535384546070893806324487181574368899833574915659357543038822935347e-1",
+ "9.90602974910637417521410554344955057938063175873799034495811832851567842600306335485818201417146475654562543760051881571e-1",
+ "2.57755634110962773819397192502372718147953063328591480930319110437537556577887190430547163274290595074462686853519200826e-1",
+ "-7.90852129665907861812449876176102241731921451584589870529143390612597378289323905030142878920134443274067663564142249906e-1",
+ "-8.70636054394434218558219672958497111094237434037462776135170928197514857325641761722162169311905082223410873872693125021e-1",
+ "1.16142192225871586802402588799179588339908282696987123538816621894316618250692422106879105583060486278819650782761165055e-1",
+ "9.60641850565339311654365605083646127348817546384991780755200411966145627086231307074524787693440076802209868233548778731e-1",
+ "6.28318825240308217440049590303028869715272770671179428040549526344092598897275498972932981684079339892035243316790587027e-1",
+ "-4.73718579778960595001132927360485548840577209745936881040433718918629103032639945353908537818475936329314134212199346978e-1",
+ "-9.95432766494621395340223548609251497842694553405493731879049259799325119533316838972006879914623359183523219011870805961e-1",
+ "-2.97704078652633309130390182393607392013126109733352620573058826659738026681661456497779386104992235762190242017128767206e-1",
+ "7.64723391125286889782047394187107836056829439952009227196240883193721606229047061163517791688110517783506991004016374431e-1",
+ "8.90335717074674250432504838435892622513509178529392798127561987551398090841490265311069534613651712468228001675091153605e-1",
+ "-7.47469618974513669394515485690188234127771130501791709462887130373371023385813212165673231177548426835629029005547008861e-2",
+ "-9.48261778982069330544079494960981900232314056127899219497335245577354566418258722147558010380033694835705634428764954401e-1",
+ "-6.60119969404606610211922488494059074732492583049845598285779387022002845776084527598443564095143849120847643366330179739e-1",
+ "4.36693827009658961576344650626557410722590226545637608661764593658572210930294024902150766064738444736422263939746970132e-1",
+ "9.98541130824430070642243744636010968399851408459030982248969144276197147611376115185206245742327729890090526273555800490e-1",
+ "3.37137695943362070360548307779555944485385294617304662646987679063953108310365389494460188124285214040163147170304540339e-1",
+ "-7.37272196933518190054375156317136276073182897209685319124536092629865074949247291797880288692223977281455156619510259042e-1",
+ "-9.08495699506960201290293288218820500948312195353635174830883006841931398581001427066173033535720385301624330783999899511e-1",
+ "3.32224697427099307204044509056982627738295866011152619834749776109067529453431741767996787924292629814505731320175556430e-2",
+ "9.34241854135599266375493853147210486293657026766576383005045752264274587199837314096798394557243705656211732557069413970e-1",
+ "6.90779551281016826784976005137338585011513089446563025258584317423906941741640583083551185645679047405447557105684226754e-1",
+ "-3.98913888475082839741071010629509607776766095858433376450534753556286110518195743624946499527251336022805096741714382999e-1",
+ "-9.99922692526403520897313527841668431397204867244750030781062964701898557028332255650446046614062333174844253917288331438e-1",
+ "-3.75988292423704532504216998833472116186771022412627192871974303806891208635376610998425108046077306043945435504842144332e-1",
+ "7.08546019140379445669962535829318394094758212505515423960726677977484727061149949358051741627739138448760095710063342839e-1",
+ "9.25084597170819667485373176055260044057716794391569156042799693611964098948722923916237050181882167134906470192542857299e-1",
+ "8.35947487571472125423673177137150279693224632368449469153892167972732129345714981936363891382927399742266512920038864004e-3",
+ "-9.18606321039298722214219289469027246078943851192917449117591801249272620492502932760495762195965214412326830491755901723e-1",
+ "-7.20244550473164405555518647469765134103488938825118543602681358279149452868549672550326500728323814331193184035259160414e-1",
+ "3.60444097985855629825697367385029316833790934188475151408740160657889784929257301330229580694580194294034115152177674537e-1",
+ "9.99575062430677992414643463029115424067356090568060307410717467085018957489304987413609313388961297483138454662118061646e-1",
+ "4.14188682766963304833862149212585018360876819555612195218295874225032162838027842720351664698295767693697842043579048219e-1",
+ "-6.78594534657286312316409269272929566493548786915986771929001823358451551885758307761400157853363173388867780400090112946e-1",
+ "-9.40073722462713282312837596921874850901167502371739429501407718251639587081137893231736511487958940802467918593519005653e-1",
+ "-4.99269632411748222821310824324558181913141458235676771744322439351386139493233963671531219603373207564905654915871172017e-2",
+ "9.01382218619061521491363679812206948759377256420255657634443270431495336446996377562469573885297156497163691224107230524e-1",
+ "7.48464012406957686684753003872919309910943477238245908909177973105841950470333390670719219379167068809799710776770734833e-1",
+ "-3.21350982331168500558883709193541886146178412146971245706190880193067020283050714591560922441331235332970961845050217575e-1",
+ "-9.97498841702838239659412520756556451623238132913559678626409839807628110807613195403956929948379909495726426243705794281e-1",
+ "-4.51672806064485973599605876288778011355969815150135195358334589946828629430271875346142404286368814526016297993583170592e-1",
+ "6.47469539349743367777844577149239337681085253251300560380374646379682072633705733561446355539618404778987844138766238618e-1",
+ "9.53437154306238691456130012770111782377503876017231780889420296856266641153714110120975772709549811845909173386912105405e-1",
+ "9.14081116365893107669584386407698218216480671014671832303147213716318806206478591012619084058741626713939006968851852873e-2",
+ "-8.82599332954202005638662236444958997569939600897565089251125658458817750203393016337212996488633688567918453254294067039e-1",
+ "-7.75389136447631492669594511701990356678047393586968390929688701894781023967621486245394406725747074772996680491766725244e-1",
+ "0",
+ "9.21877670451674413245307018032333288624288893879527153976730741889055419244554390143014969580425598422296522787223865492e-1",
+ "7.14420247379307162288182477560228852605155250738051326022559557923361829606843109334201812861061126243914893718333771523e-1",
+ "-3.68229061503980158220203193441625324286779814470455045264018328963975686564161509474566417124652588774892207244798533238e-1",
+ "-9.99783810945210864429782835782052003838999970584938136857974918523615732378678641269300999292060748749245257644847852880e-1",
+ "-4.06565491434208630299086167510578859920684132980243005899494321151205958987020300473732138517681916554185382528057861016e-1",
+ "6.84710967469127345624707128760638003100107237269026812211460044517359789036617753689648451870956943571853410785082804567e-1",
+ "9.37190534692875414284475879207349713030454322911019395907169592096165438597133651606167760904128838721803617281109050826e-1",
+ "4.15761692057244148543310701200534576325308397337003695681679007540324069366547327722258885686349619359915993749152386902e-2",
+ "-9.04970579658619470380865991258110513843850446973806499697900678159194774744593408797468966041695053471205276923200577190e-1",
+ "-7.42894062146919717307486895770712177633720181625852464705801879158549930143011385755502810839808877188169347497140463278e-1",
+ "3.29255843672460745277513964057060067396377984587222455665841087186879420769340447084849343957766905952270152874052907066e-1",
+ "9.98054859318969984153930327705164465077718593220578997216979734167429154849012382322757855259404199572095265136279871773e-1",
+ "4.44198837297768694342150710437773511448850303134514239359160353596186338967438818161771076138440975975069051604632938785e-1",
+ "-6.53817599431343721060913145888825198919543068369083977787231740776950274433927919565042681494795499030972133972973154991e-1",
+ "-9.50882691455803790808811011811129940528171185220498569922200361836899859377942311459807744784166538095896117442350480286e-1",
+ "-8.30804396823694462619418608693397504202900045660409997788297791645107264729830105800672434941805906654953509298579082883e-2",
+ "8.86498500176738212245618093138553877114943127333459437678466772704535139826656179981455385901664422134192971441152486596e-1",
+ "7.70083171278361495868782270594413506070341191348346709317329019377797940394556787220273230008072684372906392335068211595e-1",
+ "-2.89713235318575682157337623325710322388267200178020040738121279630672170355171163891332847251952971324782327373734923025e-1",
+ "-9.94599945986602107902462030221489305674036413322184167100620086215068494963807086265519051279456167270901961176645890910e-1",
+ "-4.81064018790479216363003919039401079745827607566793090566247167201506427394383426836725220489510187378030886775425254046e-1",
+ "6.21793567954698234151923123976248746751871911018984490371928031737872104124834908200003970971778452547150523318639635937e-1",
+ "9.62930462544790791995256817531759605974030310743258985429278608944994805716203043054967792555227147404499205611680348343e-1",
+ "1.24441037037160425420824052419427892644210865386492893504553391973646623439822770473194845274620957661128504291608680469e-1",
+ "-8.66493376243885476034533210550037276824055111358129259572484897399197578809821587005093985112028866251515011805996119334e-1",
+ "-7.95940555954229526911811786010975888490876487056728372525209250018208474961217211282867562886053609351620626802054272020e-1",
+ "2.49669618482792917975718339302754781070461300705127317300546100189317933291972223791458678771914034385073586648459580423e-1",
+ "9.89425045617789945796335206411736550560149597573171983909624851636680028232543261568285131480585113303281176722731984359e-1",
+ "5.17097284014384149171097163430722725596083616428334032893201431916692899725128152827282357887267679461332587145165393473e-1",
+ "-5.88694253013035419947972745515246684318073372460957150709985237608958241550865774225576562359889367149484593966586261944e-1",
+ "-9.73313013442224866478107643999632554759604190263325143130961313777287157745245701134838602677190253924612391775436901182e-1",
+ "-1.65586435334914172055850479429458408174448669771862313204835451683387762284114799645762688524058144409210946183564694437e-1",
+ "8.44989803230758608979729460217254170202748876564967551526138387646760352687916491884649142029664716335759879232648284164e-1",
+ "8.20421500340164168068753907367027481963552257850283600606773656660614708517253273174848291641569969886126754639035754147e-1",
+ "-2.09194241612317592929856274655591551278574667482924447651723415490434554354833563537792618079275726893013991849104465053e-1",
+ "-9.82539107299636472172005507105476251789057582568202763534005396813858490465264145708502581273803767931004018272989858624e-1",
+ "-5.52236319725534543207688775430217404447704139560595336544456138148662731976576062425879410116209671353021251780801885578e-1",
+ "5.54576894095302137473562870411642498454159878739464625116831971740997730359915227524075717328436463081497500485416831879e-1",
+ "9.82012389338213987427432686899213579991770436451929205950504261612336440523069987734051927060071228336651935114247230018e-1",
+ "2.06445480789661722781085666935934466710665000093111315471318244086154187788240397407764949071589419997001126229699279918e-1",
+ "-8.22024967814241172490083350373664443948382772873119098939533117836179462362265599942085298240078400862839510315401568501e-1",
+ "-8.43483668915081157881609334416452212500481988371373212797897630926101856989377353686006695443683562952698091745372956064e-1",
+ "1.68357099807987317797633647903674089665368628422558854222230995142941489911909308417314277825877040168111682241442337249e-1",
+ "9.73954039060780508698548127540108987785881109985102169990241290387386676882934112332475075476604334818263785540220696343e-1",
+ "5.86420359093869515237687266954561200160006212641211187483350874672859136679499954407470935299385535928011115437979374327e-1",
+ "-5.19500491219840443397382144913775579016253538466887540765306393159738082663675375499840773403952929977354698339617261390e-1",
+ "-9.89013546180296021750901758474634735102493497248279924875522015911873550276888689676425102442986261848126775556194306727e-1",
+ "-2.46947514812703938169894550153319655995779907820829748198209521180129269232387596803077057086642606505827139155491603712e-1",
+ "7.97638583669534812597149574893980942155226403291812660315816507318428697361476484505958849067790885048775312980075497096e-1",
+ "8.65087179683067252708187359165577777305998628817518314353161876891989239932835217904989326717355654871984067712207255166e-1",
+ }};
+
+ boost::uintmax_t max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ static const T euler_gamma = static_cast<T>("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1");
+ T val = sin(euler_gamma * ((100 * k) - 5000));
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = sin(-euler_gamma * ((100 * k) - 5000));
+ e = relative_error(val, T(-T(data[k])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 5000000000uLL);
+
+ static const boost::array<const char*, 51u> small_data =
+ {{
+ "0.010890646307437399028563191160252839599929232814970922208664909237494716181484215717644776933044418903207919912063594159099133490979634344811936925144447725948305353257042599564404885434349760121009797816724142318243738364307036155852011004353462651092012819894667485840322627440332163428546845499107471983896711023161969130462687924045508477090891879273259947713367290982391204265694893491531721581439",
+ "0.029754394000520972141380267705677256353702996169858414168445272181777338962866552847084800544086743338130195210005002660881957584567978770485056322086472328896988088721899728258224129935989180857437073412730903070983582129359565450458299328041955729258476583848159389714290107649243089149974776893563078190705561325124542669960182002956940545214147678093802442811362846262655415145897575707676223535749",
+ "0.04860754948595027759689273751438643634234576398271158524070718139962965653841137425728738193533514318422431877217110239554743968609870039776938201724688048349972662394084789924867267405853696017478160702683117974766657840965270625814482422398422216605490620054574252910928068433847115132429726072853170339113804838625536981361490008602432476302086066307320875870985443111858828925332085101376920451257",
+ "0.067443401266329792365583268418977022587089806595860818790246293104463576184436096833111903064801552379988362224633198052490234517656318474005568709048710308123967082103235230201516378834855764348740505470176912466587139988300259624310153055247378188811239571439869254255368050758213303082097176168650573121101094016896349982672715603054645687782535250201448606757920212668324401846105554332382154705308",
+ "0.086255244004175604199645786226683865650130764638142939010554245919172299560583634262067769465886944689883333394099120765964771092069938753689253686543017871063587988437235057514131760587649504670117933814486942187589706655157340717185354058186603027300571692666150552274324933749082047517987509942119060274537912867956274549119040817359639741746006374702951412541338483858389306953539029174581171144916",
+ "0.10503638090893519164596691292161072193010174143933600597680115817738720676321226654184308409972393036413684625874294713490753271261380987552528236660688624108474124469034444076627315674234385578608111398112242272762722849083801773818689342174907858373883192220827687618321085007917387951532673599267211035785307947515638810735621964273183425401191468313574763898720597251843424536611952986478638938787",
+ "0.12378012612096459891996422671239906394195356627713556749926735466337892925173796651675302282473738808218327028589606894825728784823540605065317506645900565980161901287116410208049542818796994171203890952761651470187834173644651508025088970034800067245131759655003164127161058084682831906406941473650395873577925901419536540828468001386512234321890242266327761400155849351025221609783793228816606096155",
+ "0.14247980709161433833827358255114404185333478069639957369769805221957506649654851981837061160249376538785737485777248817812720592537597263252706422066438137522011148566625861552209380620325080441618503257506798981598559897331754555335688284111417797211888381141445522536739542765207936516297907076923899840216864191777039028622886076254231994264908278499537587536902686114072117102531777746791366147472",
+ "0.16112876695857673825462942280040873226725445145336882995544646098546697397681955191516861690559627281570477802647683153249828731761062718487424104325152088763220776831248566486363299448443795266104568555186977695939803420793575204146124697832793773870449082377964029658283741910741804550762511379894890589132658450368609377005630322641674351408014813725947288936865021810537922503050280596331958949813",
+ "0.17972036691564914131189073707203611766536704952071818203835281740755093560444625679032703078557333645546302532200674729781663838075105196332695024246509042831095553050804767663788014113177991938252225120228302734228632787082072480689719322299247090887229731260135165819595797392665106642595359433094386743214852929965104946276195924300495453775467378376551444126292108291215861133471208854009513721707",
+ "0.19824798857606934571352609051549058593435535174283382080060738672122306773474119459815363636791069253463660528114022041674780565798655265640072669329819802234483545444085426470661233958030668844326674768815456315879868376252722369574694411591080512527683145774214215193268992508938562109669843137270238454905091555179756374512457742554641355319960601765568460966738628365652972463731882673979926092423",
+ "0.2167050363285819704223187876642169717474346025766606244643176750460657731203611217470241676182041675112171974414875203007374497968642376196256262296063879827128970901451226217571636202438144440234868076467587220541438440149682254317134405302648426790500751310485432990930185087578150399032543990173811106465656404530116032387260432178319507278340110997943206401370789106214680733463126804159766688178",
+ "0.23508493968539701289801441539326267060915175918342580386836036980227948313782327655061004506711767031388143537081826986030990557707922203603349984851809173788402101756510017046639631528282698404857654444279509591873678208318484036337040837844539190863615310872984455261973647897667843302241773795592355085118273592671348602240382153223466391512738221253451636183066773121830262978729780866153048605159",
+ "0.2533811556212047542679161173582151227103672187769971543582388259784795155332622779547839459016647290250036005712168909799523370471647322112833886051217950625710683025675691585734514265087749450457714578451290681140064635291501640395753290532318406110106892218388811781561305402570000283806458134435822529043797962340420841850011846648265787470508569124672250211852546600514370101687713861131209463861",
+ "0.27158717090241435065755609312085387589073221253701701142877476904254125053252466469600403650634482409879186635717002370089097070045821182432642232618427944489732133359996899812980722107011126957850576210476679069162561257167921627603536603943342268770727524690332400255408587654094512383349857596775777725888982277559281982571487656535560758087235441872907962373375423740325723506626374882319859924962",
+ "0.28969650440578692965912855479777150523900698183973110358010443581781966348171378962307935462457921708108325003566673849851640304571019200113280406744551445148200341554501141174444530008329262826786160080931309057528673711507934822659456861163197618813727062179453555460400169858233923358238607875306523866767536243361049306545596678120228677505849040202788510059415993219975440657979707947898632705847",
+ "0.30770270942563778634443222550824378057595253208974144909939396933701715445493088586920897452838893301853350676955400357197838773823140696209649573828382477454711986806154497998912926265388494228459988323524548750870702083339285969468391846533348589851520262990720843670148790211009236063622194282315540801467216625666505663699480592080398449845511909092071640909885054719301078547683325662349532658001",
+ "0.32559937596878634249263192973385963275552570142977727375619908690982968889531407133936548327912894149757305868454394002531385820341045863161146695151908269553629121372700695833373968533510661265854738947940689721812230819575490874211279007289828369964583273676393398981064015459284982970048174649094549631109312941188691838118955683939990881732219088392629316401227525790752712758279892546851835776728",
+ "0.34338013303643689435259984865624959352259286039436985939426483729323987764837568376066164703227630278807584950278626035763399164177429894322425866236150336898079573258157833074772287354310049676029566569737995054499018518699450946056626536479822852758163848528920078247789349605898976290484284018984355696648190967701849464571286257873661615051036433297599097073117151941857301740816310919312668936753",
+ "0.36103865089217782674224266392907326208964452822379102503439414768728197653534265911503054023760783622236800804794470785631737993143180071550223728801984904852623160397230839644629077782630949486339104760008566935013234195735777070582106661423219379374522941522832331186147905332977726043795737008218909226025962294880541867964419424128310806148008435847967256901208159302482322730929744194185143496647",
+ "0.37856864331529191294683302986737462527422720295203122486985051910813389831630458742420433021640718832999264813674938157273375290592788753133996741859965258034273428657399863159488519434113093863042179261649202584979828347495161391780592433454809420632605178105958049630938532568156789806946629309375790343585791884755866400295470651281289167454617624179556306285775538273640784278475358303871406797294",
+ "0.3959638698385755489557710011250921602780605301308457595569865098132061251227321128681128349835212212508810246299921462519655630208347321575504292305860152320513799100372630595769065936291506594220617567642210250680560302662459931036815131767702563357378794733903424219866581554015722958062178902473414883933807190920961687912191470152974845756609418554739641361171541363409996648143043979357302190703",
+ "0.41321813796987028521091431473013916161596830805293649687424341688961507413716621591649879163383882641673238540682782626959358955002216003316726344623613626809950993449214457071292961126188761860214007662067345193545393653191742497646193189677890657992964660139924463087072704096969748995358605459064076775540679952182100013584273877612509536257834358450242426357122974687246428904315337788603554112487",
+ "0.43032530539651581726649227346608528709372859200683817125277384462849187532000288969537766724897319030479860713591459932866508254904869456423088312945970943686450425589907227275358186473310644458353392107693439475272544181726520566221333846008220008702070460626739342310039148106649726719665728169819714333172605016313499067227953767878741853545763313707499816244740855778447731454065384788859848319503",
+ "0.44727928217193967651655712666040617006236300257644793444619887007723922383970962870988815495150987337761018019128790177957898245520422485269324604484642139354461290347689315448558082058132330317789105861674569680430563377440355102600184370927625450804550114009478901349833826102470780452480255838220723171955252412104006070322080932915859579006653276371401264439817338080069936810866666557553662506811",
+ "0.46407403288360522126660904671571257203469668709200603873826642103612288853249598361813813213381052968904786566929537791978751985511297321991996818974870946807510786919602279514706154473236597480481149516597293844121405001964448599792635426082163120478756812832932606227610137817312140031064078333902425335570730565173883252754294319888872518149175050583958244086010074110878967984441526026195572046031",
+ "0.48070357880154616464768530714893198018226307768872832018696934136162055774617690112915494983829868655926209174893609677823844628976682666861087174925649829592164380174433963170047900751735818142724368678683601091750819984658303806035572915499999180599872513173096429390456178642478189724903758698238722978406369084171804020040246631229610021517925007543961283845124822740019511921386188934760298241688",
+ "0.49716200000672278683141570737786924159326600032981923078600441023882683095816876734389429898823686013764499093454507915253215528870989821318738227798745591597923864925733083640574132559603114206682739488541451077277291582357627881380008066440685837422009543184722898767087492264154499861112499590934108906196324393034778681622285346845867860458748417916763883649390228287689107774312170267691257606116",
+ "0.51344343749844216224309565441486087365890516381683759696704839526386373494321578458551193514743669178342420835082611868891019193801223760604220552152028015878259509179672236586872004169442377393342941368136686044214656339879518691219516228434732537186028321245942076903928921929607502848888640267094590400556200402256089794954485061564115688273804254406706725374971267431122825004095102239220991848356",
+ "0.52954209528009218542956877037980380998240467111773187487177084701668417706002935457309027480414979338624119758863233287969233845786459113619958146654397106933375312089626001011352424174223416515118670901639015699899005014886945323983797633471828049323917701068414699189471811508040323789047713536270617216249222074877291822920747392986535291960399633972613345908694327479738445245500914715996152461985",
+ "0.54545224242244689926647810432697721723945987179773365856990386707254353534614807468692870318816991084937065603191754270239773531928848863926268254420020634174904439920465735399587679402503040251639815041072160696029528969373711375024524059535996077596844557011786411865071706766713049961515353664484996577751962474564968659755104983468313555304855249829815310291744255989014492588353749587481644931913",
+ "0.56116821510380861353700162760755101727268623115746212675907859515911800480855365905235006799852352328451502804871577600277181740574994973635138803211912076695967558806493981733454148905054449991651227073996616835900542604367257843601995979944175684600136575098939764120745952964355353589317556067474680987527548079297833539998258342242865222215681747969549869015697939554127499557081626950060916329896",
+ "0.57668441862626054773920164705882295031880435874490231795930393597704964539534854834250638055542815083463738683146430082379073149079998953871974990605030531115748567904948229002538680465351816034414085890696196467615521969543006224204433997063527288514443404935419253943724579872472854300703798475966107579038880496698051818375532546368197809806544115496171522444187250876233927302975709248591908972346",
+ "0.59199532940731223634617420193837196766186356068263223313261061480558639436412180991021350240470913092271149633483820904350945127229180169976070379470147429711011056203078210298313829635000565303787641997857930629432231274870246836108452732993007541125359738273485061324228778750531830069944570036169084871305329515261365955383178502917713214334808810726412625844210978481512366368025275438632291862785",
+ "0.60709549694622869462483067245797028399468956070763942538530335526853282815406226053099893555611232739741099281199863420254333016184720313024881100010161759837083928797224725640021095785125988238992410296927225409984765886863313873892022531648958451940083661715815760806237878803609330649695132473889046508160482887768573723088361332267243452286610176948724186843039692112797106039213976473403724518188",
+ "0.62197954576434335539696684219824327976988998993669475584026026679831221725774460365328908947620452777457191790806959938899059379387140391128845696987642418506611453321626607869801717870254836897328796165084605948086983949944714226464644755644542238083403302661596239269476252222614109836597348873471190787660391585694078779921390758232910639208518119325492789999941075221166054973249356136808607130253",
+ "0.6366421773186640485920116318191204083389644098160828009666722635549477083039305904975813615643101060893999315509501318081025137289051787335454356108133761354485193083183997634369795655283340428506642872565827559825155045924936470784378552800563136355526499002558162019410271880717338646318471375684163442601830537613691628498474632262547856029932241457937391840960919415488213025664314613747543749464",
+ "0.65107817188809080279752785471799265973958362274943758073000075578938519480042543196041314945170036193559782763524413154927612489597355144799562963417455961310886431794132437757357185377007718709790504976900339191552944965308823754898079933186431693664015814010551367365293786806527034958873669211570906132849013497458819941168651227792824572805777219160376304646562062564773441718051418178414899683019",
+ "0.6652823904315739978766556052897347198651017349760138699519597733553278561013395851136458951983261597283585391502588949649092379467069209284755289821255744166256794329589771465045421874634188329764638118238723545310838064785644468083837991172367935880462068347034222894524074808990476036821633127927532229213401486467496527893691588255513769781016943243185567913995336109327864083859254466073492381187",
+ "0.67924977641755138662041086036801948989088186294785002709809874961811116536667286127777672928127306388394020078452402417993836722984523906631302047812425809759286220237826357465064765092612104224837992075711035615650942777454297235908308024053950635657488001916036801234116581671119069849133344664024677517075723660642709275823456343659009540444032487248071553674961012055521740306092600444870718199652",
+ "0.69297535762401272778114932738244728669670875114228232862389083194872888693112134130021641463393969624412179768291914405554577080353247136859984307940401373940521815913274464950964347624918449081645304540343160683388727015489772202472645406318288749244334156857814927405528763108558137488794292057315715995191324964500528600378291562277858608403425720078390497455476055579003286296442406491998525563297",
+ "0.70645424790855122905182233963742667718470686911515869065744744473731249895412640632516625097411541437953942564566468313798077366853928608154168668667806938130662439220702019172328936889436324187304262248463334787504456805683070026006307765178787997020889111556678907849442591478755800698808480163225125777511828352357189284217101098738405458071150544253514248561787426067001460586251699075230390564367",
+ "0.71968164894777168289159927814596788937422432901416956306230349431557362414856173295064125294878325237342190029914430775648665560145040598898117000971783978541799092281781000633902779626437866517288284324732827083065703448279654800632624171861777710582293639879819116932680545313562525074940809403693475624332169458744562386580074420532959714281903926902622613852892104465683714186704831143197300465955",
+ "0.73265285194543608674851404628602868786755398311878599262050209465658337331457767882450516660833910207846986678480603058221329185506983962144302950162737505562091432645466997334653618075359372680522922578429510783107155224742867979206003853893418268095936450823867623873015528453108944563276576646508412198497923383466470895808777876544429706485835161864475122029711660543090876323595451165397047981956",
+ "0.74536323930873866831066285008063416514858255428941319323031554151661731879818806472410911187787504167842137286019020264008471692607030872105020489874402631524823767448432915438225335869622093354538021006314536198469136634364850042715775621307965524560308901397550829610851125072518884822515926626213581949190024268711827023522012804341871590177804438418738255381261594827085100659777173578154500251787",
+ "0.75780828629211358196731753685850074775187628883294491833833279769413437275246840580617185041212744084038976069700142887035937511309419495512390089087847775651833369173386038513330257480188204696687136231267595399438343156895032682495327740328291738325217778497473260463740600852973600297913238958828132336080624048815574113414592522918778477418427876829087439774857073733879539765547872800792711360592",
+ "0.76998356260799010064124325420889481428942836988785464918451704687709959533402569414853910266075223008145347866420469852220997470992987183595134711278161994827010482478666523199914707457365681979989417199177427808129308850228595726632468139527316915481709465938257650120793934685421343443942356060396291075752713480402305699120964704579260218579751719693291565685728074939857101460901984240449471777639",
+ "0.78188473400392189344901888012886357289691591193533323711550248487573232160560048524966536928562079994581390209192526509899176077393862245482807165569409036943146775931090958041945317489351020506180957959482939768275851398130892970557450783138983566392455270904228057175489097967314871299150832712632639718878702471658606369540854496281803565819545728647765960328269135853132407415684491934581417388002",
+ "0.79350756380552895006859336306152006552993066088382163294295016384877329185292344719536879395060919553184640006473875955257330264813115929942877156894433233876161573894628944452740080653935089289153173836334040374431360850336851424574668632837338016740333716530963434291489645017931035529052587483629111178971917421121398732580060101294617212337648611654041575132820234403350225337355214099696493406567",
+ "0.80484791442470288298134387731514331459831415420391927496917008531718727007136925375073869996549995938671025493755987802316807560672754205522916341547950527416285009447065632296220924964603370109747266700136618832767813938243784759073035555035361911772169687111972294262096081393656654067512785827139608367560009298721819281091010743363153063005841441400130721362346287552727162527118465104052539630019",
+ "0.81590174883253870457705586780548750833668862852238889952372206236774966573191832400412494946116015154305873210759963247859431688393192829248700535837612167242633896627292821666890819736549652534738107012873094812825219601489880060491958385552979476621004236099490018887651186347086675381603801017940808290855340870383683075409122477045713172106217670870448929077822708030574128623585863036730829850118",
+ }};
+
+ max_err = 0;
+ for(unsigned k = 0; k < small_data.size(); k++)
+ {
+ static const T euler_gamma = static_cast<T>("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1");
+ T val = sin((euler_gamma + k) / 53);
+ T e = relative_error(val, T(small_data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = sin(-(euler_gamma + k) / 53);
+ e = relative_error(val, T(-T(small_data[k])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 20);
+
+
+ //
+ // Test with some exact binary values as input - this tests our code
+ // rather than the test data:
+ //
+ static const boost::array<boost::array<T, 2>, 9> exact_data =
+ {{
+ {{ 0.5, static_cast<T>("0.479425538604203000273287935215571388081803367940600675188616613125535000287814832209631274684348269086132091084505717418") }},
+ {{ 0.25, static_cast<T>("0.247403959254522929596848704849389195893390980386965810676544830494398136043486821690984848527973792338327197752176516138") }},
+ {{0.75, static_cast<T>("0.681638760023334166733241952779893935338382394659229909213625262151100388887003782753145274849781911981438190343146876189") }},
+ {{std::ldexp(1.0, -20), static_cast<T>("9.53674316406105439710335272649306549801506698739838753888815787489707114648106832493113326022411646219016312547902694921e-7") }},
+ {{ 2, static_cast<T>("0.909297426825681695396019865911744842702254971447890268378973011530967301540783544620126688924959380309967896742399486261") }},
+ {{ 5, static_cast<T>("-0.958924274663138468893154406155993973352461543964601778131672454235102558086559603076995955429532866596530638461663378937") }},
+ {{ 10, static_cast<T>("-0.544021110889369813404747661851377281683643012916223891574184012616757209640493425707075673894983216158293824238262832286") }},
+ {{ 0, 0 }},
+ {{ static_cast<T>("1.57079632679489661923132169163975144209858469968755291048747229615390820314310449931401741267105853399107404325664115332354692230477529111586267970406424055872514205135096926055277982231147447746519098221440548783296672306423782411689339158263560095457282428346173017430522716332410669680363012457064"), 1 }}
+ }};
+ max_err = 0;
+ for(unsigned k = 0; k < exact_data.size(); k++)
+ {
+ T val = sin(exact_data[k][0]);
+ T e = relative_error(val, exact_data[k][1]);
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 20);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sinh.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sinh.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,261 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+# define TEST_MPFR_50
+# define TEST_MPFI_50
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 51u> data =
+ {{
+ "0.33937643772780730649735035088117439284797964277099188367427256402032493952288848579083622213428182842627923924487560393743204013166230906610274533504451302298480596207257724471359936027198954417317381228420986152562253196896619001418292769103034561794393400788635610424360775622370491149170501475453034747306600304507650361914904138327962144190354572359428689767990353722392457982930942617983634601752",
+ "5.9746833446871871874685235810964396457491766537010251792063372398172074828151074989468673672535421045923659313715467371148678693662985453590831122722616951299822923837410906027605763677066945998696776562438704017846907508677186762421899376364636371743116519071733413775650991880222096045615827530741679305666041641331859757012015389431793705875600863391408448065773828563483223117178640044499399723744",
+ "383.32826140718915582837967448860824902040431804683461630967288341613741467095168380744762629948507973653220772087887989292128183196493611623766470283358542341824134250511562240487252437079958429586344329111208041197054162309164204144237855212391474938076935722386012246677813568519769393617755607372817372398764101401294149353978426057544810680225593132066193858006901125069663362991172745649465725272",
+ "180470.88334757918167934673473709881208559849920820465419382707969109187448281704429118605409224039018180517847684905660962429505828088398660499158213746722168139372781263849989865384042531846290813274318773753295025006473736660333640052386121946183935053629928496714560749082485275242374067168149435272169334475060524974384307351757201698786200303374802146857634893509516262245925287553380389076772488",
+ "6.2781497954189513207977998975338639259302378413658035459603622432839117790845430762753614618299222131433987986511235061633658516824123179660244932375967566163895461895213509376427850290780942550513918615228886566287592461085762554208269169000672149592375451149457664991726947185145469263932975075681560662428417041932848357447220175607720561540370653825438750168143857523868718856189519864027430308779e8",
+ "1.6137831147508521132232267071463247985636947830692243664921522457394294988129666666745854084767325882717254318322908201512400243137564101564235450151960593110176457803621675408660678871179456625850704076654060872094257085919134755925910859520026379969099492921728083639989029675808598278170215911879751320574053132699172028082102336989338403081942130794464992491330850160862146024982135931859868176809e13",
+ "3.065121004865094886953119667134247741359538615435533822684602797608029400610449009335078883525336625519599034934744634528257351124420564267197918749480389135525897886434344884370577475363556341414615470556433033106705280531443046669163916446454890662947185057748542735928453570069226294801221403438864013368364219717148075652123561545773399076318560221173734215703610924057158101731263882232550297741e18",
+ "4.3016893602106215864771434464025735547192956887049374680649926707919814241961779812200280749930256501997849507695395125441756421661413154730888574483309057229943886742437071251707738990393977398403536175642762242808350076543018009682725019125106175929448866428526984370017465117236484653179596869643117790492866002064306593104169410537341890174831622159415936125041593936992634719906123727028419057537e24",
+ "4.4608685929681360001024935791890661655506049487122331222491789265929503651540405036031990380918459104583255735620288691363060079360758406339887417913286769718423759522832754263499878135869223253358698774066131403822428286318351390574838877307934317251880890827523325360658275060099119902102399714992704146743744108968362755624325107486994088414126705458507082103811086372240878942983212662081104875997e31",
+ "3.4181315955816806472569357441100390029536003312981931954091744304974491527743599822230006760631204302243855667216955365986192324833652299336285826148922073950348547795494738267861098328516497599288314822606511466743212319770180141969147554023326883651348621187276823849839283609071336923316655316828855943689100621619083822127788284160652232283630351386798636794979234576432977468152969056493038423561e39",
+ "1.9352946282727908101414530212785249763640776919052480158881659190625166733449770912626442628329346416132299268886589920690636914906717492301836773331460154604580407945460359957380672599434023197425489039882987443681919056322268437224184910074985583829184831034293865504101338027818555871946080687710035062238789949143319550108801094190098446234092310048150477274502060870736716324117412815209633124145e48",
+ "8.0964449511890098565841496436016431651692307764702784234901741408135381374668439020986470675941110923614446905696410406066640351065195237123718468440597743167713019447544827353458477844468727834630038609140168354634397475741840053079910210908251252223665806813131724262334693137656218010287981601097259534068903471812189212459231851835393208367369054618963204727992168556204168791513644815218096463093e57",
+ "2.5028257092625174549175008952222569141816383637904981644379473858250736896174216539673733521627607209322019413420937570273676341726636306931304501320694017061891400181233108050930610234076339285157392030024769366663118692571469493256243952018705693924919037621083041696227375589264811876761430035546270312014570431860268644276406457398485042029556392894799022733858611415899182421526634018060028309384e68",
+ "5.7168370213792649967466315312864179662895170192695050789061362839510836418124645968032989149068311018994324517420345278843446068634292140996241291031113395887824145000873531937856827299256489358571593850210528248202703396455363364446996158929674989959483681393263782486430231288067231095140919741928337466492665857902913114664767450432510739209971738097074002526312039248809036478310948111740897528204e79",
+ "9.6487261169670031207955841899729386502708125098394777808615183927342163909284025992243201020435915122698808649711566042372911206942311277943247994427354130507790526857797833309691667375441761513692598664419973302444660838882173718713387158013802112502169254860961105745895124415352002289485483908952674562396552790441656755711709645516914188860464353624992313010889765422981069429049436524222321550149e91",
+ "1.2032977660238608232537005158851668311089986235965463249220377778638489972355974848209035082333822309902237165042868213438627625544096344578102199846440476859557339736747791529782018329078191477783605471526120462726353510147373798347292650122930289404816748193194907382572774906323766342758092979989633448828636445074016110331338699464788279882402189027828261039788079556739180915346692779065476431369e105",
+ "1.1088306081278288754492401130897590262404571813281460605683836139669281218442501421935533170636990866165181664561596333701204545493730707210930818738817252706131805203538144119244917164949716209095542194899833868499263375700313934257155600824601418042452138211549248837967344874095248283887929145923103153332810091693393888809653081365270947112297406471162377655179657693898463736926911943490619163092e119",
+ "7.5499880591625965663868042832675300901799245732418501707646792135512053284835138294796976048691668315442427834949618514094329533376442442492757936744857569785450769927581802961191319878260712808001736830227501518832554201816224207300614310712430470538022948957433004823102746037654096845266998518623332118892916505020627868405618942429551700207476696585635930562973459491424179233918050890206232214765e133",
+ "3.798536358006797624025033016530070695826982685154937173246022092345982280900791849578041210970037835270398289956157015064696375146357207576854029748413680946201805214954504282866534528711715039215051307866373994662368105368505465037259587291440042344663580680646178313958620437868058550744621854406871361710599007951099013146571208384054250556080476992977623024059268095813712424244902009427293468485e149",
+ "1.4121319341572581270215359848706630542776633675711529687593487346259283960708095601494823112486631023721124235640943167173029348028743563902367757599140008654691320430919753414890689949599421028277624880392344132646738394546195638261279687543208503932172926275294218429086816560213399180179494004109164546844899632385177835442946174653663068675983237955855108059376913611877439522917217336109804190399e166",
+ "3.8790307719997974510664339744260233373881096199933152202662556556779783775106563986911859526413282055258612522499767709123313205863879946518297779104337686883587019222829967005608205535314284003183828513113021722123872387036435113517356676447376715595408179555267871947671679098986651665719279348025058713817796876795915844151719103197410787508530261619841035613531487094949084263218956635085585632719e183",
+ "7.8733605373835840397434523264038598405672829925651165847065668324385430746087633348848905637835428739401439679896923081980364912472282573695612463537585283007941057172128277340402716645674443632827653710173742423648839359547777694778576675604645880219833375227941998426325886558435214355022240854563558864080627758653439429917072753785194675103766900514602432580639079224631229479607396935864512990879e201",
+ "1.1808262995038900942517891457926200063018079695348469762725520377876370005771518954251015338402886097689762895044056273430051256244413916763438966705458118354189107806216991150264176024521937328179762640422127608560103802431672144866013216405157197709788484197720057702118788168789816074560208078260433548283881535909071116553897893659656781376448427981358955547508806938614921874867135186509274509121e221",
+ "1.3085817499987842655130548827168955655838432140245228169691892267707778790498773914833199368916114043966197329562444577848635313938483757629541576533880917215885485474416704968999200090496252044959849927443732134176975867869986011315975625868009065373046224716063168977788103866885720471095547385342868632018951910603936835789387464412366605713487321530237148912677199033012777178113821791621549557963e241",
+ "1.0715308148006899161903881353829644069217121138682658034413051575604561649576261428568888094218620444635013220705511245290719605273316790249367622122178650529000528086055415007045458486410501636380119413632657994999412652188430063128470336817401482172580366374079331295129200936246446347832380606353293858222758687479612927181530236387227215663399410099251455256898414199913458340065553949424990477448e262",
+ "6.483319651006309502237640505955012384293570932602353784849377890534620180296272226076424490097577093511886503973590409376477611667988893542117173598716788837179265384921201772013611631892729250835822804494742316330406688475091973437669111728949960922002370308207819760146543720499389938855072810566961589413895110830251224194598788696990065693705615156654866578134664648091752361824241438921952031149e283",
+ "2.8985391304542768293172709775230767981477721528885408305355619530690119426207269563049756824939397157221877775531212262059946098575425050827283362457005503261796116156917077778477251551070762614233325253060283603452216492681531839154649232080928787066338399915850327381614672456102374248950210248266796072457623370079195574322846594267768883120374288952014885152055438195794090975578878933873824774214e306",
+ "9.57524433627083921372674145950563946532138741951042299439035158875449060589509856903496678820625880407684156184675763001790613289835869844325821965070261880894138207436003366195024403902162467929095155787852409710735775347490909311196315332711680552044467458169615366116872469435840608534489425322247278926672059747911266981024366989976214521515026692183039600169984107883592297128416659318858313127e329",
+ "2.3372734503362369375381009524197350830316472034721759761797536237738670471009423543542251572488229045699598160834162677357730620072441755506075897500940629883044875771104686291523502165266242030847074909362622098365719455332359938746138629161304717385265309980898079489959955157644566232440805137701071311495653330606071611331941246434767948905863368638163788562679785940566685500460815077065003612487e354",
+ "4.2155879126937199240969909448599186868484717887298729605150033299123534992857332918168135230843738695925698383815575417820480732378749635394939513838137876524333991937836847074991505476867647762082587225838063325020413513077128321581439429001485977751765798011101092072613053687422983352140468569171564773941232256057064161142341661775359191159220450305300322654184921617310753474842253496677498824723e379",
+ "5.6181811613375701248970224378256740494692066242437602652469740512738297599235414593999616891945156186827736326184687322137498447792007445397397290336810468925670064733464757082986791232916898141597610692740388799796632396708149027243436859752526805112778790645096555770227809873695589969805678601106157556386974221647669590827712353133603091803570183764883405340587430017053183637835511899658145649708e405",
+ "5.532511069282205350923830187073466127274584467195468607886763750877294392993663821432158885753563495238131394373865428654052604326264330104646257659760161386620716716703631608643312613245804625511813964275109451513736558514977338129201153666764317441936156609643185133981728847167450887861106642311329612564652645663234240748195490808151911497393974690166034839217817023634217121406163178148652748479e432",
+ "4.0256666306761331240653217136731531623017017695713942917027851762705346357330788586411431378972009980532310757689380174461664677676028378924382554201434975574729861177781849023768222381429947872325368088023224591306630434887529215459580760863075907686248521168590309636468448648513752893851767315693469638980874648457114335557202115472595647478331668869318302753802858726588719006447471192697846325955e460",
+ "2.1644237346681663424601781769159797919834245365230735589058796985974745594485988855971413936820871935714602237643458356241187573307428309041919648027960168541647193436225977495680484218384107820095589356463058222584008532497069179993678533431131233629312850771528970443634604290143149079209513868130585713006080733488491160321145735562062411305931183571279530201672366980412430529846635995189699318073e489",
+ "8.5987580981195983662047247216936066485731760315371506386077056691409579856014763032619539539935299716110411688793466397984311640631361934500807639285587334983206556915704635831992012926186843826981296831658998834850783404713050829093753126189556625095994621605300047199962332098857236359801681157419606676412198783092816364336047306243999363335004760439115355072350465422891365411868472688286678516314e518",
+ "2.5241673163187127276134610716954724162270290228773641734420864618245211926017624829840685860130579257772126398622324109858115624706486522844752512951837805396709793171502497523431473021570806024043139443284538862368635312799539108264084028032731295487282188616820261689634926427135060887942797635147693849950058672753458576476491733064455826768562371858057444914175251596852571637211466017938478085247e549",
+ "5.475067911823387661325942057081957044927796274441278042805014835144678321092623034147031518807063234976073102574257079170283458172046752719724152941316842521196069804425876507927418423409523739261726681120662097159943049401039490818332686968135012747332468921142470970507219403290422458185430415836291605355383658657658638112408092789126678938878667507151950931633694006471359998448912249374833586727e580",
+ "8.7750549689950256776639468724574158629603320014390275681028674550826357080136422399476213432791376656222763800628593282303459051561266270006921840049305819767639184391149913915312831894296821356222752594264134130151457242713539248421883837353442181724530706933220158507240760325182068001553294949268596178418634164323874971937997072367419479635154591248667559627811893588163238012665671798461211917208e612",
+ "1.0392000158337773273751156576416024664653679689973856373456304843339302977923254238376497044027728158058903302390909588333829463843362779584402914847447592731182614369968957680281500946805571235013941407979569788567794900810257154433592958167545186687137810101848000107335074486050959387974516414654638879740966175786016492797845169374594168995878543584318334800124941205910589727264397237600733483158e646",
+ "9.0936326753636727240574546678839170665019169110943878894933093211555976995701468041449327370073681898690638466136204694745206283652338526673125958055131610409923286526192661778126811265116493171283319361595267283588121098349703951929669281966675596890266483864217591555707552765565756842701056144290075867893520379419521775913047964393758374891516340929062076304350159966063972713118995033247759001609e679",
+ "5.8798281636930489964162009429009257867906792508058801627042121953599912951265315933723440185825519080102988056836911095299854840387008575164090793635997912930561430335216151607097220208013034399895832350235280120270626904356196935166701773768680311063264380891331021514518757839220818506905997847228783439015252768055166165941582030353226255576433910936297965207260585437762430381969160714956727596198e714",
+ "2.8091881292911108404345975896815558958477835260737794579417284512413473388968057587088555041266297486841923628702282019643659456724373332519583025947015025975126598748630623031951723754960589046233996595466021913942587558326660593063197905288573353559106884645285531497626940379800500474282446929237914568534665868703742731713632349090897884403966643055728471509474896855575286123275564417626861566706e750",
+ "9.917129372597671132067673866739246238179742417231064062960232866725337575281938597212073697168000155027158148165861617400080837699968785505107579831803685516054837447325150388867488754170677228096524224392410232206238263933144338637103531441623303187445874039234973380151391274490746625993568552049954630793219419614845431626975962881182662815760423226111647056071831411664335144052772436215105801395e786",
+ "2.5869027163543111121878679987081647715187872826677398475096738640583659800068967379551376322170347537454918190603891312949716382621902484616361664158953484778255247083652726854621059785392022847887382779010079407502679229021085320675903109573769331277413372272363218896397965662581357886739691376204316908974081821980432178065394228926767529685562155837452626029223937027004015040825450642409597700449e824",
+ "4.9861251931207080923785686798881789193813879610842675205361210155894774686328710893906543682447029206928934967525495260314937837003448878215156341411477636831113484416124080974502217578408248150338565305116223944900839866528622960352723938548713319425798453345402992146078868053263606234074443024155243450623634720912438841022969909473424559262711669905282193529250216454066716533180418518228387188393e862",
+ "7.1012569014339068241101751233953234216522840280342406520909288232012799547871960723719836516359548198842749536961644100550279020276709043358260853581760590386456213180291689322352732545965831405519844109680619067101311180959399339922706596098526969148981173519865139508665631317310424178378833370605922449094745510812618563813537347841030916512147874232760564378443782164868016244561788356251308121716e901",
+ "7.4730215360486642135431754747074885377840195683583018254892502245011973712084221116813364423492802080799768174534590613188275471080608467087354983850284805514875889145266688973752185071777341375422809910165581997555433091939959406569831183459872344778707098094941193489061532160249775856426569696127193453339548371679229676272663084782830276508737129506676031759345288056484158647796152349867328841634e941",
+ "5.8109375364209112227579654658730977030869454388607076903639465992296616832002964138000947668837140543325908222688655359602408511410663722770167244801973012245657865182739637159804595049180263175014778215232564251739259624759589953677661356104554831551073263668188283861123521688445132164147762321111597028523130093864153999974376790494383016372210442340324038686843345053322425194077414241243050491297e982",
+ "3.33875955701899627718146291382268063073604182131575843695486667154496711979350813988644889979275310892951143249901398447859083674739840084454465850475774696325142148671937407108540250845900941142800157345665761403930889797424808979569550325271558518404559007551625637761142662107757913763221912282957681784053564387104062317729788737215450574233690655931888608424916152893688106181220341997128198692e1024",
+ "1.4174672877823334709610117319768830739080734407353905145632612088824955720198734996604261250019291955883620333545750761619015467840567122066622229379056280064206319780047687015558007624774062399477328822231085767309831266032616053065858739373818651687128093335640388513396191118537181280334430292439188737524362269789272308905723812818882228503013875816702686587035844437102478263525616196832018321602e1067",
+ "4.4466189016791091516801723880812533528438597080549410911235655611382010503145789286158745555771483577943662768773465284793798720178177605712848440200402906836390133865748188969184005230383247111166918721449908133920663776952786683837038180436264738937354101153867171804315769471050303182129269442292354388037298125177941217926845803005587166270803697433886463469168814941555804311717400657004050157245e1110",
+ }};
+
+ T eg = static_cast<T>("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1");
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ const T x = eg + k;
+ T val = boost::multiprecision::sinh(x * x);
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ val = boost::multiprecision::sinh(-x * x);
+ e = relative_error(val, T(-T(data[k])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+
+ boost::array<const char*, 50> small_values =
+ {{
+ "8.223167319358299807036616344469138485821440027829633696917375433348917938654659351596020080036406671343718039863220496616e-01",
+ "2.526123168081683079141251505420579055197542874276608074880949653019810769068593790606537020961198741487692473633089323967e-01",
+ "8.342981744595282037256218647969712476322487890550784823763249893556153270975172951404094950587944959561849750490537201329e-02",
+ "2.778135016068299789938671680845480653984976507019542653788637161116587306168290886761259072846829249121589698206609261524e-02",
+ "9.259391565199916442789400306996794489540862711193761818262415211084389468754315525525896238827358889826875006042447587516e-03",
+ "3.086424653287772358219607529932097884435043040527155440187640095572710676452654803730003577747633690318001961509535020849e-03",
+ "1.028806765851002064810061084014826478832745077469708149635730407866217436751337520417458090265791086156438275231514030381e-03",
+ "3.429355348425226988441198390119109217716503769838753365112550442738406326637684639052252898314646892490045395290022292013e-04",
+ "1.143118429558603374406653541544292690548937361618336125287018361332072426474632105217297150810234138626767253281422813482e-04",
+ "3.810394757818873406266877296641684693312194735341898368873067089928172619067423751257049691985638480762032673977695116880e-05",
+ "1.270131585666421832817527834137477593266387525701388601975733237436369505733715799310429349744168792375082834509467436523e-05",
+ "4.233771952120219947940459634636576539101577724347428305072378100562649548884420218224692461748739725090626754420296122389e-06",
+ "1.411257317369659013704209000288436132710449162963127340562961271337242582661013580874165903770246169179192268836124421074e-06",
+ "4.704191057897475365825409916786898392364235667906752767514580467152163619657508910797742266406961516358439252434955007668e-07",
+ "1.568063685965773714045928492719360014894368531987759414833778466374819836545157375950693756664550256136222396871173634254e-07",
+ "5.226878953219226673524993193392503058475862017726848548717100658392470633650387274004511940515056405069137033934323251644e-08",
+ "1.742292984406408185991240874995689487745140228031202510923711784729440494088066989430128101759261047316736074663327672115e-08",
+ "5.807643281354693692124967044009687283114597355717062156493618245876910131607338183944830908381903728560328284173507220743e-09",
+ "1.935881093784897887701686451485601671131342930785061493703969418728524594573922282309665275558709040519461560600768780392e-09",
+ "6.452936979282992955422916851920785543106383715381924626175995859924351552325880931187614903984801793287071578640505194508e-10",
+ "2.150978993094330985008279519046512957825521218238790792201835497215534851989750722105234826300738623838446309250309905466e-10",
+ "7.169929976981103283311786261663531258230547972690500493476881079295129579131280734024784107219045379345460886663104148486e-11",
+ "2.389976658993701094435441884684454421835327948893136184573938864819002944442339456827931472237274353903634036758669394620e-11",
+ "7.966588863312336981450798799860506345287566898810744342680146925029151178981033890759916168189916177504592939240995619757e-12",
+ "2.655529621104112327150241298135440075805848488054800577703768668100658036999584228451100239039042920681377381394421710121e-12",
+ "8.851765403680374423834128412864530361591097252230621965426275532533242581680245794741067906285298655116802944992368126680e-13",
+ "2.950588467893458141278042461784956914687338675140497707333871358819185395356569206661450997145748756956497959702280685427e-13",
+ "9.835294892978193804260141412430145318398649753331401112621871794012928366988233744354238387090649589382104704221708773516e-14",
+ "3.278431630992731268086713799445120869198593899364655036314007566906378666339665297288092596796135684816883503781385164489e-14",
+ "1.092810543664243756028904599641030626636532928735904320784337625844108091213506619051042206148385975354700234586478575025e-14",
+ "3.642701812214145853429681998738987398752764686754626492252324567456938623579239392678142797020213493844816454129960310753e-15",
+ "1.214233937404715284476560666243942169089106312534317920490462975351305354471020532764015606315872085933262687299655265697e-15",
+ "4.047446458015717614921868887478923169619805517194433471908835726595116905187672132801369948377551282604828733616045843751e-16",
+ "1.349148819338572538307289629159608313551890152969010184597042496758528297346351553643241208769191557898925543369605617734e-16",
+ "4.497162731128575127690965430532015584807024576774799020494128293451281927637267192489558050090835454302448780391749096414e-17",
+ "1.499054243709525042563655143510671412452985626833998379862387948592418229228808284088934491020852037924756758483008288052e-17",
+ "4.996847479031750141878850478368904541825005460277179305602161748681654262243578435201096986093377131577325573917436618470e-18",
+ "1.665615826343916713959616826122968174447164290616980189746184851537351248309665330601503343215376981550822569162631313560e-18",
+ "5.552052754479722379865389420409893912541965834349657578615232567585047309856390957625702896178052275806406957076143469634e-19",
+ "1.850684251493240793288463140136631304096139902769381795814754672989850701401641374814254071564872119933498619234778448524e-19",
+ "6.168947504977469310961543800455437680289164351695283493312025632359317744715643192414807145394613572397590534364339391526e-20",
+ "2.056315834992489770320514600151812560095228784236601072113743484455321300338926430301421880927367590178440922006775473367e-20",
+ "6.854386116641632567735048667172708533650333231531203539518552950777817440179277823487619201513258000884052637516041835420e-21",
+ "2.284795372213877522578349555724236177883428507451482660054557452824460619777642844796449091646418601791047308814504431261e-21",
+ "7.615984574046258408594498519080787259611422468149787192854095139994568043598766360557598146279482678180281335390895949036e-22",
+ "2.538661524682086136198166173026929086537140604567639372655275057673980680372673609490963070062819520295998328327889923353e-22",
+ "8.462205082273620453993887243423096955123801934429554813185698344472203995997708879527322555715697860578416576045982358004e-23",
+ "2.820735027424540151331295747807698985041267308484077168753311108116374235508697904826049959781116012127075951788533527897e-23",
+ "9.402450091415133837770985826025663283470891027171945709804152456669015193736201020401750153196590359525341207466344738924e-24",
+ "3.134150030471711279256995275341887761156963675682933328476437810109959425395050019306074135780459168092270327572635795510e-24",
+ }};
+
+ max_err = 0;
+ T v = 0.75;
+ for(unsigned k = 0; k < small_values.size(); ++k)
+ {
+ T val = boost::multiprecision::sinh(v);
+ T e = relative_error(val, T(small_values[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = boost::multiprecision::sinh(-v);
+ e = relative_error(val, T(-T(small_values[k])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ v /= 3;
+ }
+
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 2000);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sqrt.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_sqrt.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,237 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+# define TEST_MPFR_50
+# define TEST_MPFI_50
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ static const boost::array<const char*, 101u> data =
+ {{
+ "0",
+ "1.772453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665416226823624282570666236152865724422602525093709602787068462037698653105122849925173028950826228932095379267962800174639015351479720516700190185234018585446974494912640313921775525906216405419332500906398407613733477475153433667989789365851836408795451165161738760059067393431791332809854846248184902054654852195613251561647467515042738761056107996127107210060372044483672365296613708094323498831668424213845709609120420427785778068694766570005218305685125413396636944654181510716693883321942929357062268865224420542149948049920756486398874838505930640218214029285811233064978945203621149078962287389403245978198513134871266512506293260044656382109675026812496930595420461560761952217391525070207792758099054332900662223067614469661248188743069978835205061464443854185307973574257179185635959749959952263849242203889103966406447293972841345043002140564233433039261756134176336
 32001703765416347632066927654181283576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136",
+ "2.506628274631000502415765284811045253006986740609938316629923576342293654607841974946595838378057266116009972665203879644866323618126736180957855655966147931913435480458123731137327804313019938802647150234465504898425802329413862779668683613033675823844181156078490095600041375150275291651461225843861864920699060926664091188015739697252377702538748247848633488642597506589513095738763427251926880402028571859249736308099784525385500999641019298258645588137169634674801528974523304735834747756198960891889314977186485484804693652160029795239196018238091657904112979752977128848801667547005586301968241421642338363617519213056151359841709828370363423435580976874244875261780109223242848839195367251539745828256303365118628087902035519300881456040264877714156500483767232750941368064247174816351844713073831681919536988437233401656055005550630298233858652495611258966343623110394388674844019702154248446926734325728761164522433801156627031635317630180312268256176688917760955023
 88960424467990521700581770868994182958846287294933254842394882655811767896697230383860684402997328870793925904767307522570843",
+ "3.069980123839465465438654874667794582122129313252923453609207863394287741688951149409619081664675417607593707424492619027034542940509941621641797587766749216952105433214319765827927496952680399360311833106647599071070966411835890159498570726262642811302698221156226638369562313853818053150275629326559287811178118507288863835537725355501810707785454478954438344052057581328532174741141666595169833655419886208566420544674986435548720297171703982140714719427912531185144876388113046700593075411827983574431817858431190892995690083188672848165533599463107780107006753124936339865774980990965870066108443783851885180857165489100951218831585029557126125899414086605423737949775705281852470738247416716128935065143424102013622220590074982279451773529580467581481417562029946736005608207138482875747993390700547521169091362517654693242076854907577107819715532278084070260355954942777768742739361767926741397588677758250771833385666255564269109714659111910493525889012129170908878395
 48860059100937478465817844825147395110789153650851340493729565322385491250242078198566481445683133486898404370694024388072677",
+ "3.544907701811032054596334966682290365595098912244774256427615579705822569182064362749901313477089330832453647248565141332472305731448845205050187419205574136924075397306210245699850346057901652457864190758535925600349278030702959441033400380370468037170893948989825280627843551051812432810838665001812796815227466954950306867335979578731703672817590902330323477520118134786863582665619709692496369804109309704391226503123294935030085477522112215992254214420120744088967344730593227416188646997663336848427691419218240840855571556137389533140010436611370250826793273889308363021433387766643885858714124537730448841084299896099841512972797749677011861280436428058571622466129957890407242298157924574778806491956397026269742533025012586520089312764219350053624993861190840923121523904434783050140415585516198108665801324446135228939322496377486139957670410122928887708370615947148514358371271919499919904527698484407778207932812894587945682690086004281128466866078523512268352672
 64003407530832695264133855308362567152498065380901697064026838487197946174238759896587746022252512331763776957195575192752273",
+ "3.963327297606011013345028765120183031522359756396194792707258062196738718026571657228774187859634031232740564793295353622886557682356474875994764655375173499834599593969421251164027308747117396624524187285446623336520339913820978720176430215465338939984447826534933023141484862543765571546604297001338948375134812486194450210332949879950720896851968907513037054488703140516319719121374324992179435135051074593285790342344719690343804442794831757569043401689356941466469697584086129159126939515041437262763257270890949574283761287774907470114836530950383264987999102974703524986389225489515342852629121662334901292322975881271541229899325825495432074303817839673452212517177881807067061976080637338877262055096962949181289042827302988866084909313397466247695148371950421828093909848865384698787904327567607409678520069816273427183738680899308998344707630738790971751243408987918188508349518941876068427592513868658159977131885721960244821519078912587138691242470054107864903322
 94268446455782911914942752568277824622418634516620092362780994044583559067632108995042187023154200764184950878131638370936876",
+ "4.341607527349605956178087763744774607232653368707275561857273966622209231717774371500697689408693082578678154410354619676514722820811726152792565044436622266065806278851520420429033357922970589162528420519250892908368317154540342635058136807691252915152669586926525304075280115583067621639051432078115986884318711700889625182922866152997380961904447385332031619054920438510168200539620910863434706805141563306565541082086798890014854830335454153018177024733780435083125592021701157281828979903376996237619861714166150211581797621237660122690215345636609799728649066534417253162418813747169004805982766408403946997189846396498970582746671501529485161428010742600381085904013324487303611881293586527039274468597106210674579906183780177038917307243966662998197900723976889726864594305030268568617360692180654205283471068669725809150297536212553045875619857173076299325404106392103024828828478737270158016349017558325198405440967589772942310470355567549928970118887532179530801975
 37610448726652746992121685068257440261763964980703424121083058605934982281210054435774069392790646709404966217005552197344493",
+ "4.689472099834751407222488495617830028464158132082410698163398375845325679974459832050283551897655926484987265575878696846038964333944567355126922924158796100337943425016307329349962099787407469851645780198972117863002447087119160891992600583110842658312939022817912958461697028397309093512503747039863645081655402353335052810673842392915943235398168144238655825165770000949438559228129412688415974465720008486457025600884940725079480458043649641534676307345096637210260507628873164663314414495950849718626684932559332656112256296775957757979662724468900475313135440591536873620173016545371152831605752982568571117700848026227595075127484138684946782930247375765776345590129370024055646932375647826614785005754174570488647701027663871389568022229489874520860485470987547866487930236229419625691860409440092814879540820493358264132704696850032009628987349003720451819569835585032562652113915937212938414193806530064154077061451317005721941675550076456319276168011577932447904670
 83152103173240943823769137606544644820547634530641496507929783339735192083140914072272339899107017006649210880028740845785609",
+ "5.013256549262001004831530569622090506013973481219876633259847152684587309215683949893191676756114532232019945330407759289732647236253472361915711311932295863826870960916247462274655608626039877605294300468931009796851604658827725559337367226067351647688362312156980191200082750300550583302922451687723729841398121853328182376031479394504755405077496495697266977285195013179026191477526854503853760804057143718499472616199569050771001999282038596517291176274339269349603057949046609471669495512397921783778629954372970969609387304320059590478392036476183315808225959505954257697603335094011172603936482843284676727235038426112302719683419656740726846871161953748489750523560218446485697678390734503079491656512606730237256175804071038601762912080529755428313000967534465501882736128494349632703689426147663363839073976874466803312110011101260596467717304991222517932687246220788777349688039404308496893853468651457522329044867602313254063270635260360624536512353377835521910047
 77920848935981043401163541737988365917692574589866509684789765311623535793394460767721368805994657741587851809534615045141685",
+ "5.317361552716548081894502450023435548392648368367161384641423369558733853773096544124851970215633996248680470872847711998708458597173267807575281128808361205386113095959315368549775519086852478686796286137803888400523917046054439161550100570555702055756340923484737920941765326577718649216257997502719195222841200432425460301003969368097555509226386353495485216280177202180295373998429564538744554706163964556586839754684942402545128216283168323988381321630181116133451017095889841124282970496495005272641537128827361261283357334206084299710015654917055376240189910833962544532150081649965828788071186806595673261626449844149762269459196624515517791920654642087857433699194936835610863447236886862168209737934595539404613799537518879780133969146329025080437490791786261384682285856652174575210623378274297162998701986669202843408983744566229209936505615184393331562555923920722771537556907879249879856791547726611667311899219341881918524035129006421692700299117785268402529008
 96005111296249042896200782962543850728747098071352545596040257730796919261358139844881619033378768497645665435793362789128409",
+ "5.604991216397928699311282433868800893854323775210783264958353393652283377651887974336384337524585373941714670574456299045554207553983151756664494667774545161861272764896662131197837835038292508277975950514378704409389312806803589593017154364198333647616651125428605616230966582255385572870009973056613526322931048277060370231359977958993967232582837086592842205343040007283117174133454728537928968227244991228669471217370009441025094907712691977835841703499351278874986471195624116959008838471245076137814328042298940584446762905340367384743425303609276321018361801459458139516432508856878761440982621913524318181369691375338635878731397251025936067547977237736105936368836652092717596396314653816189530218129820670028497964332409893643531923629742161551142263224303406717193124922233694876310480576657578611950969256955511078476219635444011155551999175778020087177514232372890366734754311863635435563808728039284827173871963074804746849699430124991287602451134963126098545171
 90311704797289830560651678579059756085781560282375298034806741180400732788584921019507521738918616603376508365622727087150932",
+ "5.878564381674128235054420877897070971998434921038674375173142107157324558178168552466877801764926123492995037488364745260214676114614935862179139254958514058162966827069607913839133403757396281118982706148132667552000835647994077667880274855323323520240272246981990608159381971728656709564022893046586243897489455366878714885657876012888638998115441465661791250543613454912996663331442965484635801525913202036474853834026485653965660358909538725305439873007008779166615209625954106666274458730037117877224528598565692604944723751289365337901547150397344470843545157877380623504326188974390096843208503955952138759852480819611238851794206681602224351043487381727937873967374812650165803869869931011606738216500683771823507302550057547576046835105243578968618797066177613179082606633426738482985300505831919859196753908775329810222381296016270162916323309267798096312930705603758044444559585964075949558584750818511919962452688228707763616578874670045313322633956112911200892294
 81068789229695018187723686024313640325575962035428327239557079268995825494033666401736558372076816062703768818475224366442780",
+ "6.139960247678930930877309749335589164244258626505846907218415726788575483377902298819238163329350835215187414848985238054069085881019883243283595175533498433904210866428639531655854993905360798720623666213295198142141932823671780318997141452525285622605396442312453276739124627707636106300551258653118575622356237014577727671075450711003621415570908957908876688104115162657064349482283333190339667310839772417132841089349972871097440594343407964281429438855825062370289752776226093401186150823655967148863635716862381785991380166377345696331067198926215560214013506249872679731549961981931740132216887567703770361714330978201902437663170059114252251798828173210847475899551410563704941476494833432257870130286848204027244441180149964558903547059160935162962835124059893472011216414276965751495986781401095042338182725035309386484153709815154215639431064556168140520711909885555537485478723535853482795177355516501543666771332511128538219429318223820987051778024258341817756790
 97720118201874956931635689650294790221578307301702680987459130644770982500484156397132962891366266973796808741388048776145354",
+ "6.390673242833442826125934560668369774418699153629535085657295253679233427520580367927179880195602888137069684567793231166093493602258133969017021106197960780573345520195147979466696520986998606343635400913092649341808081453408980434179965937927922708909345397841622527432146275538251602966889120490579957574597331337784283815288321473740421432010834227233914190174234763300775496139696689439605521833467707889928563487552015849581847585689434976854127764646374528510231329482221371765008775870161694995946163642391215708372766049488067855953825452491900236830142141866981904282198406822362807845586466344665076582332813482152015320774974225634990586766311313228412800868263708414608987150111375120386858643920795269125535231770192724407555107042799468726164555553135906562578403914044338479246734822995056896897698223478939688640461863586741054296439120210906056109063096277007934151946284123507835906914733244675816372535792902468407592622807957863946668292770986363837395865
 74194509405681992353099095656288666217128758044223382834658781601679058686559406948665993762673723079305381020139309264407402",
+ "6.631915043956542220934632255170950442571673584928835355201760253423957742117126574682008309421211096443639413401076154851280850494158554164683326234986135425364950983859950844423390626085839786386049181433479130567606269477588037212559412899395447829806241059477262873942460159345306366624527627408910341206927208609891918726171168762709933791456920683445638000801615688452972790232685808826211392650560017094159263576011437674999846600522920501568520984657162799535038050001224833659813480494486691456740052374249027583311842926672857338318387363854793779688936472084735930306427218087345510341837420490174630133279840175002704153489030443575290068032308365767634514031418850421635578803158322384709938898193886899629978282614469216187882297883391581608246845718104292725561199899569144180829641648953258889552230562175050315353266945435639957716548603771410872986520993710428886229307003650917468837912442306497411084734102076600265234170937356637777135628474301844332989255
 57785602803469943746593977417910571201562354064143775475359422531818578919533441219169564634992179085747739421396934533170253",
+ "6.864684246478267450140700251177179640248234515845667702987001996086867998105503341832713840361840247387130753571383043635007297011920091483309905143378221549176641698410193319851063734802425571198225801964653167342078218630819701764025418879499090796511808605501357784143308663297852855842376861244456648327835996340248544888702189432622466327549530776856142389171135476317972369098304399531690126728773032326258103700722968750778764220224805542613651128456243786488268270157985122645318431271578096642305431247215083427925826428012276495983610948573621994372299197201839952318086636154647775498088405644586299761630642587683996340977494191030193275580462043922190636533399015709698746428320226690186799969625487347974382613137379162794311441292927681306625841347569629169242647251257801374516984419933156315103662620431046038578133110151591044112076565871598926830079904781753173394074142537525475668114391039705323166154148499405188828740137363595013988235606970953175864411
 84708051608329999378177452455843424936412317738990534790002839870054268627101977849744783551897006721190846394315014179836658",
+ "7.089815403622064109192669933364580731190197824489548512855231159411645138364128725499802626954178661664907294497130282664944611462897690410100374838411148273848150794612420491399700692115803304915728381517071851200698556061405918882066800760740936074341787897979650561255687102103624865621677330003625593630454933909900613734671959157463407345635181804660646955040236269573727165331239419384992739608218619408782453006246589870060170955044224431984508428840241488177934689461186454832377293995326673696855382838436481681711143112274779066280020873222740501653586547778616726042866775533287771717428249075460897682168599792199683025945595499354023722560872856117143244932259915780814484596315849149557612983912794052539485066050025173040178625528438700107249987722381681846243047808869566100280831171032396217331602648892270457878644992754972279915340820245857775416741231894297028716742543838999839809055396968815556415865625789175891365380172008562256933732157047024536705345
 28006815061665390528267710616725134304996130761803394128053676974395892348477519793175492044505024663527553914391150385504545",
+ "7.308014443816219295764104141698252724572575722730510045119734398989258873982176141480818230162009492028343019013411237419987690120297150269615500747653543223251174087060193127958097001154320610014222323665588660901035694201727519713747832103505597228622607596261458206910433389674460653687297596981868823753611902327108255612146486031214198020782328063948859715089140823080005927252797840106707795375212095689973924153950105187354003208163960549905507374250866615544195183249713996665393228092635799151582395352506500344494337289505854030213129044692019068685727554985277682005661054369489870834464138965107639082860333071483679442949289948148511826372423697000479609055510155508917037780838203462441338734511842664471038366708473955010013674792708988757724038814345638772480627135596403728827660061675718996106602599967231723046695947551570145834990998992151815096734307236576364795819406529589384430192416632004006793857867603298834230155464823542188055803245519320495284933
 76425537320109696781135375077474891741199783559527857010245972108769520093587637938249980386334004821761518122012885593787752",
+ "7.519884823893001507247295854433135759020960221829814949889770729026880963823525924839787515134171798348029917995611638934598970854380208542873566967898443795740306441374371193411983412939059816407941450703396514695277406988241588339006050839101027471532543468235470286800124125450825874954383677531585594762097182779992273564047219091757133107616244743545900465927792519768539287216290281755780641206085715577749208924299353576156502998923057894775936764411508904024404586923569914207504243268596882675667944931559456454414080956480089385717588054714274973712338939258931386546405002641016758905904724264927015090852557639168454079525129485111090270306742930622734625785340327669728546517586101754619237484768910095355884263706106557902644368120794633142469501451301698252824104192741524449055534139221495045758610965311700204968165016651890894701575957486833776899030869331183166024532059106462745340780202977186283493567301403469881094905952890540936804768530066753282865071
 66881273403971565101745312606982548876538861884799764527184647967435303690091691151582053208991986612381777714301922567712528",
+ "7.725947218186652324004744785732121641138205804889637198145298446152571713913660838375983918412807378324751693931822725418866718625292014897623012173817275735069691076193189070337437135235849647485222354348603862403082595922266253086595655320719535549969211782948039949166205611705232989034083852876594143019104011936147164924811525486417268190124617941170278359129913367088408366507102814539546790598867970704534479401993796008798457646788512726152502569621139000003646474524107789726483757079431339269391950153812014264879544984629930560647448707153597300636752179520270285575421037009131136781489590577345106587715207919568798810167527811417745409743582649439599125435432318723487455953160097792511246738008692048927031576162258272956534936193719589576776525004828524082846716211359863942781882850884656202898466070591297850506074593575977888131709413947264085333489258053698157177098917107860251657014190782265625723289814859337485675401385626410275035083061970191931988048
 17270177795577482266694943462207325431350513542160949582976461379550638607760760045294712529920901600994240565773585313185966",
+ "7.926654595212022026690057530240366063044719512792389585414516124393477436053143314457548375719268062465481129586590707245773115364712949751989529310750346999669199187938842502328054617494234793249048374570893246673040679827641957440352860430930677879968895653069866046282969725087531143093208594002677896750269624972388900420665899759901441793703937815026074108977406281032639438242748649984358870270102149186571580684689439380687608885589663515138086803378713882932939395168172258318253879030082874525526514541781899148567522575549814940229673061900766529975998205949407049972778450979030685705258243324669802584645951762543082459798651650990864148607635679346904425034355763614134123952161274677754524110193925898362578085654605977732169818626794932495390296743900843656187819697730769397575808655135214819357040139632546854367477361798617996689415261477581943502486817975836377016699037883752136855185027737316319954263771443920489643038157825174277382484940108215729806645
 88536892911565823829885505136555649244837269033240184725561988089167118135264217990084374046308401528369901756263276741873753",
+ "8.122403937590499937750560857903449053740646939018845396714418298453385787729032594061441882432193980351692768405130083831622694205545178110599360120819755203443945835506251491401048907098589526753038972273390746010578180741185896985711551360791806797203827232352315384586330095340105185710577781338904940758384870546060923938062091458579164560723722405711698033554291605876497565060233169708606845051327069548859241453481341696327385931809362663929647657571456175887138080607984343369800458838602421492896523168912555072075320339098179670221560201350087891722238275134178670303665975303306455807687795898715998300152475162726847464578784441236155909735363031305002320727334807852984507429413760242221959550736529566482402439194311595766502786607795639886808615746142655000719028280988081120541307369353011711883776895188084215891135503245660364996849896248961957594858880116881060143391560947567921577346659086745387151496023428624150951161938029495606617224093435405010080204
 88626114518430540516030303410754550714099923563850234789351977675338732716128448507828986158960243138593921163553099984790877",
+ "8.313545475846959679405663787122672752886245394673591862409502613884201090635304692983728145867923225433947236566783565618055576431760585399092588064095269521432562653168292885743671923001349113266625795406724828729913566220292610179933643374466685054386488682834612773992591037476604963901683442207870562666912849209450260701989581245997426541655676288533656409397465553094534909994585400741202768256842476851537407025826744673038781265647423706254979478195526427639899334680081339937526116035227502231447118295525950438532001846078065013420692975144829197828630019133535864689964788016834035413332002509997527314498037936075151509806634373411333813059112831610782493410372695105620179168947144175897920912160179121104141658923318272727265528759862952292050995628273080562383704551916319640628288367312173003235516838493084793666525122624258815561984115028515773539984262129611468868545990366028119708622357431124546983897276053252328720497789777836941919726001553854220712568
 05381015864689257913905946358386236370406339271062529911829230871245337410607604318231151206871615890518289557823950960924210",
+ "8.500390051789696814056066940668571443398718744643215768318252259126537478731135635395762069217396034964667681910059631015096082165652315801664359768411837223280040916913955708378071066935696433257020211350742193863156871963971829773107248579593397056734106156556617380504980929076639213644821636934129903526996740109823613284631158458191531037366135155185385344442093963910445155270475343700661669764944840279054024627247782191013492427044193464726675500317651017497896035750744618092157312128877381262644157741774697004395657150446259792890268007013520929291274099161297945272110689563005318157480652004932983657344100993336621783568815458906918824018466753467959636111250595790968078420088242314216160800541194886763387392040016651751813214258455719679904524867748664553221974092004813850434511403157301880982171491738082922104391358283858444966946287030284780954659835400688672702203273836263673730837988762949467161762849555045659822968295447513351087744078230297188528004
 76212574258039209896227934401044333736396538381519446030490401670705477490565602459130058989097840050168516571928831986962913",
+ "8.683215054699211912356175527489549214465306737414551123714547933244418463435548743001395378817386165157356308820709239353029445641623452305585130088873244532131612557703040840858066715845941178325056841038501785816736634309080685270116273615382505830305339173853050608150560231166135243278102864156231973768637423401779250365845732305994761923808894770664063238109840877020336401079241821726869413610283126613131082164173597780029709660670908306036354049467560870166251184043402314563657959806753992475239723428332300423163595242475320245380430691273219599457298133068834506324837627494338009611965532816807893994379692792997941165493343003058970322856021485200762171808026648974607223762587173054078548937194212421349159812367560354077834614487933325996395801447953779453729188610060537137234721384361308410566942137339451618300595072425106091751239714346152598650808212784206049657656957474540316032698035116650396810881935179545884620940711135099857940237775064359061603950
 75220897453305493984243370136514880523527929961406848242166117211869964562420108871548138785581293418809932434011104394688986",
+ "8.862269254527580136490837416705725913987747280611935641069038949264556422955160906874753283692723327081134118121412853331180764328622113012625468548013935342310188493265525614249625865144754131144660476896339814000873195076757398602583500950926170092927234872474563201569608877629531082027096662504531992038068667387375767168339948946829259182043977255825808693800295336967158956664049274231240924510273274260978066257808237337575213693805280539980635536050301860222418361826483068540471617494158342121069228548045602102138928890343473832850026091528425627066983184723270907553583469416609714646785311344326122102710749740249603782431994374192529653201091070146429056165324894726018105745394811436947016229890992565674356332562531466300223281910548375134062484652977102307803809761086957625351038963790495271664503311115338072348306240943715349894176025307322219270926539867871285895928179798749799761319246211019445519832032236469864206725215010702821167165196308780670881681
 60008518827081738160334638270906417881245163452254242660067096217994865435596899741469365055631280829409442392988937981880682",
+ "9.037776772709902697269494261728628351963870729706736042304465636989725631287927975777782106990074995004455742508987620449337787503517741225529956175648329321298944298502471533263233235967471855145138291146675996212428418958280946345991047523906606263163595973611608055069770607858646728929667972718057866128602444487254718338653430850966650026968891600303433322262146105215112001443753915795363973731569802514730814265350671766150861878899828512602441453483391147941144810766550038994388799334570787758129758375033149345471039802967644705258614386208965717852402488879077788235132543376503410069927289658344324439488387188495051160317042470059664351630134641726409876333154181802579804161265105362691268868623775984026090936380963423168791094419312560044151581003471816484345006069909253578931919478000326228200870683197346817961465743851343745005362600871143641203281743633075058111924462275738699759315387649943971866248714388768225522011305563067546972967347415693429779803
 09931897617697257730057945805570021974106384510091603635687409774141632668637120038927426728226929784072977105651339473101367",
+ "9.209940371518396396315964624003383746366387939758770360827623590182863225066853448228857244994026252822781122273477857081103628821529824864925392763300247650856316299642959297483782490858041198080935499319942797213212899235507670478495712178787928433908094663468679915108686941561454159450826887979677863433534355521866591506613176066505432123356363436863315032156172743985596524223424999785509500966259658625699261634024959306646160891515111946422144158283737593555434629164339140101779226235483950723295453575293572678987070249566018544496600798389323340321020259374809019597324942972897610198325331351555655542571496467302853656494755088671378377698242259816271213849327115845557412214742250148386805195430272306040866661770224946838355320588741402744444252686089840208016824621415448627243980172101642563507274087552964079726230564722731323459146596834252210781067864828333306228218085303780224192766033274752315500156998766692807329143977335731480577667036387512726635186
 46580177302812435397453534475442185332367460952554021481188695967156473750726234595699444337049400460695213112082073164218031",
+ "9.378944199669502814444976991235660056928316264164821396326796751690651359948919664100567103795311852969974531151757393692077928667889134710253845848317592200675886850032614658699924199574814939703291560397944235726004894174238321783985201166221685316625878045635825916923394056794618187025007494079727290163310804706670105621347684785831886470796336288477311650331540001898877118456258825376831948931440016972914051201769881450158960916087299283069352614690193274420521015257746329326628828991901699437253369865118665312224512593551915515959325448937800950626270881183073747240346033090742305663211505965137142235401696052455190150254968277369893565860494751531552691180258740048111293864751295653229570011508349140977295402055327742779136044458979749041720970941975095732975860472458839251383720818880185629759081640986716528265409393700064019257974698007440903639139671170065125304227831874425876828387613060128308154122902634011443883351100152912638552336023155864895809341
 66304206346481887647538275213089289641095269061282993015859566679470384166281828144544679798214034013298421760057481691571217",
+ "9.544956100166412180533180508880275299527102025311531995757742107457921696867758671222863368930139807708831103935227624768183588760881295247105477255824007523503790066849678209569952847787473134452791118039340195546397151037221763780532279742336542014648268991783469603857013190127430230028342218252126783300628535939314229543827909592737833676812088290811257502965735839452737857276165282250352307303670434895732286464483658075463116864414244977474458180353669841138677817030256977739574902310253741079871599207960654235039622965900634705798725052638417332465481525919416513330139126146381338833351239203730709750042523052135462541819902842068021417404229013131999647867409119159951154274397946428259146053002838151757429595828780110118235662530346502827557308424975436251686015564629085676442859149416302292859000043495928747589909654091497676114558990997633192151071664061916219675646857109277648126304220885687113521072394822563154202759322433797321040224381193148246260374
 73517483829358567542790510299355289069031782291584296420055747908391149240325877115257851162524812619999740512151814664737655",
+ "9.708129562778496270200130084320230901423916299707529533819072556774086776836082837779721336998522260573842212515320580961431072038376340585457893700046500214088135943467587955901276249363809094775211623467826666949279454942822297170536361448893705661482331041880611908411820876866524301686400660462287254651723588759081418463764743556376362500959734396214399806933267867999594959562575251004737676946854089344610846928999749930286869302192917824475137861523956926045003833724857385420656479094073182144403510682216564700651180400450184108001675012793475971495190221865638374199662812298751885305018149453420534803686943784602237356112895945936464728623871639566275094122785266707007664025047938268396777652810764273409013537681737481844776386242156477721781918728115433342589152654271319783943628107039760937688854286308499321023915624624246633550026009298713880022612152659692948284173068450171340198448762074365241535178102793292741653012039834285198529729843977907901477077
 79427760025639355001932966608597649497333189984495365421369654196836993842047830874262598283161232047618963368717192374581237",
+ "9.868605385832569118207211278874753388605805720141138047647645671262807975025967796654068413246944194484534644751750380762684535617224775907811961934518668021508097594907126088880939112919542878431301752658671019644697554531439640842267556740393510039535634129481178847542890847985862648824263966614963819503831246249782176979855437518684456118327575265121481169018239917535879373864146161865277599158611825759839608675445114321641620555762245486171616062505007996486021738804071532619527241426380117413279472534376471969297575609580754205457875757577610805998306623214447817705618804478208330721405744697974295815587182451985023806765023272699255258737361365514480950908077296684716386140471725984188304163903919320455187859625676153476178058614303007644791489417425207033663172431408619958534885239216238775147539812205978599173978208469731077066611504112071447928588333624090215461091044853050076963443004628416550886410411391339386328030728114387513715599008027009047422894
 94188612587210415338399019832109459618353269954649298194490921810882187710461971651611477483705188781040460993037832290727754",
+ "10.02651309852400200966306113924418101202794696243975326651969430536917461843136789978638335351222906446403989066081551857946529447250694472383142262386459172765374192183249492454931121725207975521058860093786201959370320931765545111867473445213470329537672462431396038240016550060110116660584490337544745968279624370665636475206295878900951081015499299139453395457039002635805238295505370900770752160811428743699894523239913810154200399856407719303458235254867853869920611589809321894333899102479584356755725990874594193921877460864011918095678407295236663161645191901190851539520667018802234520787296568656935345447007685222460543936683931348145369374232390749697950104712043689297139535678146900615898331302521346047451235160814207720352582416105951085662600193506893100376547225698869926540737885229532672767814795374893360662422002220252119293543460998244503586537449244157755469937607880861699378770693730291504465808973520462650812654127052072124907302470675567104382009
 55584169787196208680232708347597673183538514917973301936957953062324707158678892153544273761198931548317570361906923009028337",
+ "10.18197218462431161582111952539264656661433477798150730479799112887284541193585504568744710602027065030918053385886269980245261667076504257731366582580744009030705784751291911342627145818309207269958155146538247893846735550403225588226401556901421382509816611444605984316983319298644410894284050699652362371507221056648116120492067416496267613099846001295802512703185774558531012929405484258390360668611212286904207161199234447058342337999617922712747426102259089707957510816150389815352486484583118850957998281456006637404831354956568062254629437720373149139240148681670626519484370817979204979676559962198528327427452943779073523911067935653730820083869318370772198045330252052454290162693059248683000591314659903675131106177681559770755829173928282004816397191716469969378434355154143978340736819395878383027968011872213139079626678699929893199092119643613931889903840406229026159770286937352754297639873594747005396032887210556466440167686477491621930386551342810426880117
 23482785471924105498640148127126652745316007086053077591814555887669601195725983108276147651242913586147914229810924624624361",
+ "10.33509314046336836919474364727074447097086936154801826041239503703343495444430216792313795009216492188008635939267605287566610110781263218444926682914624783934765031255365912190705097352104289477618757928286733018875413985133370782266081384364265937904049899320580230397696303848006113948062799665251932411066304598814535040326642289673997455281852572985945814589870778013249259581071006948370961699686903679468330337467543525962626390456288254347910152037591102798956853753772549592673842424289921795900795386547884347033315150821182595534128873915336988502480316623660106699295297841947954890788202356165193098734942955407343499323605761824776850649071386323686796046758823839357115061618266351131539979127132658770504772739973287802642165801348955328143120266712901095685353165877569405031166011144289044765149669340128901489922290209850826312367393328301847731412361500863030250545994420208853041512285674097254867461146855326114288439706965537230548707109195242552389285
 41738356450696516302034137957025179252274911492305284875580251537498242752152958407117066303014561567387290966125697410459079",
+ "10.48597839381918445054159359885558121699839103866695561873115378079716014894151844802943245342437509629350645874310655541323396557326014504666773467717664046835255869394670749497763768395161179002777074475194929650257730078135703508411942338909931837878516070155086825977682178675605017110877548013392523981861695633686098519740033871778030152560728757654382141671262807993217333913015214128152493683281015514469187844881815772234544875206479340575277107101873154073838422410348123044146182124267642897255144436976256583209348301195525523494546131463187273074405392141832753642825772708897325178188037431978350759728267716895599842116984503134480533741046835268423057535101931480495293614988112596239063439563828982769227736720998745593802744569045263826558678211846342790874244317655324148707006461325256354361928205603677796616649274289887334689319498064249942530524654073149016792526858563767763444768642270193442319769623489678173112355076142033884059552659513093775137830
 90550287722753128747261754207014515315881341170594023794216162541770211605362973081229737656368414853828067103315720270750873",
+ "10.63472310543309616378900490004687109678529673673432276928284673911746770754619308824970394043126799249736094174569542399741691719434653561515056225761672241077222619191863073709955103817370495737359257227560777680104783409210887832310020114111140411151268184696947584188353065315543729843251599500543839044568240086485092060200793873619511101845277270699097043256035440436059074799685912907748910941232792911317367950936988480509025643256633664797676264326036223226690203419177968224856594099299001054528307425765472252256671466841216859942003130983411075248037982166792508906430016329993165757614237361319134652325289968829952453891839324903103558384130928417571486739838987367122172689447377372433641947586919107880922759907503775956026793829265805016087498158357252276936457171330434915042124675654859432599740397333840568681796748913245841987301123036878666312511184784144554307511381575849975971358309545322333462379843868376383704807025801284338540059823557053680505801
 79201022259249808579240156592508770145749419614270509119208051546159383852271627968976323806675753699529133087158672557825682",
+ "10.78141587097086009734708600256975401348331310691320020218751352004804371227851226111134816775227078780782704400521473560927276955279203021711831924786552748694726683453935103987223235551795292077929585532087766243443408930286838388085449041895595306086182883302295616607854944640767788230902752626676494358183660466744700973514306350818780431222180790201620331842808081284885926261750690163105640448433632823843516031782239844290851513467744458917062736367846223628664835579728190128927870577611087366810507573698771237991646332739041396292586462406245062001840330244835312042568549418412140156118884140805812306101669787911139055193238934878040246470950976763119793681484518126869088303530370704057823157270895417643395840936379584221387963751845754415954321339250901819490435360721787530494868722047593340590202589706993571543787512158361448363524300316590449401880234669793857062347663548718733849904110261200829712813739437999585242098062002356424595628707102825076539521
 17525804197309040193746636407624935115304309270078857483676519373602411048897743124249850703751765985347181558029527375643215",
+ "10.92613933813824941839494851877453551423926430012932000378043993368985032792462220621686137310632779544638298654109738705771920803664720629640405094400332787436158234128108080789088988078706131999979740984056439993836902869915459646501969358140170299507225643915590182851066647943385027447860471048311036876024942599618163983429350328700654747639134367544955697679786278080036154575736857325881532392171660142990988585546291910139133705176540238412285863512412028772233672604948555583850580380463398980045101838551575272832896794101253785882294994169484316103456484898846580619100434750794181893074891372855455411337943418389585562456440328322309556323828519125314360835657666045942680288834053693331028618111109384750594304285763023041340181335524239948551682379650507696624812120599099221250021303175118191262363771873060853642037056249836405913224882956074246191601667464612049815974595749705199804266204143931197988255418279040611061473351147901180124572073184061838184223
 46913078125642646008877987007918624713747892824771389677121777686596898164466209882065864762628266271132718624356253452793196",
+ "11.06897075115848051178114346592360054790751225726540302613781325417663994648010534522689154363395052648690999602611864735807868417839407991190718628442039357569977371968270131812518244771818655226966561256042843867368054126790999954427565212628829680859010057375985048181200629605336234528792323216018627284394365650824130654190684379749960413601595348763566769123659605593998962030711530297996631108961214516178448122427054402440590510703322174840665652359389481404003119992083702582636225806147331352181752217226053242205348944289607908554447601636003909390875440873630525206574803310917889220296487149768206173372396219089215832164422633321605087802615895235001294899884355106129583272445231346892946732366301525649188276362878449019281327682233343557842959286913827833746690030855099062263462780708598864445827721152121994221659868869621390843372822645956886585209282967141209097319737128594354138180424516941885220268707516298720954774335931073334153739436672212660571083
 67464732484461448541683512088757459353259534085109191456436195932802460979824143610395941363551604400219577421540555259221554",
+ "11.20998243279585739862256486773760178770864755042156652991670678730456675530377594867276867504917074788342934114891259809110841510796630351332898933554909032372254552979332426239567567007658501655595190102875740881877862561360717918603430872839666729523330225085721123246193316451077114574001994611322705264586209655412074046271995591798793446516567417318568441068608001456623434826690945707585793645448998245733894243474001888205018981542538395567168340699870255774997294239124823391801767694249015227562865608459788116889352581068073476948685060721855264203672360291891627903286501771375752288196524382704863636273938275067727175746279450205187213509595447547221187273767330418543519279262930763237906043625964134005699592866481978728706384725948432310228452644860681343438624984446738975262096115331515722390193851391102215695243927088802231110399835155604017435502846474578073346950862372727087112761745607856965434774392614960949369939886024998257520490226992625219709034
 38062340959457966112130335715811951217156312056475059606961348236080146557716984203901504347783723320675301673124545417430186",
+ "11.34924221246429839261028565829850152853950674668329270433803565485623908048536082846020507430428160317930476009780625522846314732716983010804209306780029352708602137555333764109504348316831292667084178627910568495853187150913165112247728045793069526923912034280227069115529058972150220112559230569209685983574459516867671580071758585032838411375478477021690688817570414162566820268751196658613868949576091063552613961351632822252598859764980397460876491868146559058232229257591718038848063493509688821966347731649610787912295324762088241562023905818633074969261970953347956140101356457217929456894108139471438942618283093796741829147884931734150913620632806868019068116591628515728481180957213133283154351669896098018101010708138645635708010672822821922535529316151238334935840408576965921875343012645841465539573107187122552925734535762052613518617009154806395833012671672700181389412908200622632179011645114557351073388708810794168829362214447522020243211441788372756574267
 37380444900404799010786716522164241960362132578101367581203971478969200704781556667157536062389987737624943537002727294733986",
+ "11.48681380761311530780935516721521108237928967204382062085898154283588668313912715029161517404328334989237333530348826535742614021148856230635174662869831356093113474286160584876417645800403911323991237353541889249957260843166726455646445224041010101451134968269056615338515648693110262845678078357707930842673765829650789177247607513680989857092204932189890811954100841072537027713465323260604795337782550094563520926538581863172270400325452742978367627467481794122329294203023258558775949182564390491632584912520264020048890174624703141447126375593383945739248970458143796762994034387003403965587093698183771999228118366505820801654649556512233036532649597529872389080363888009786036985430787457469287273716821099747319154826663024578113175133679748214926591537563973687905556466023539585132069470863985202376138982046155978143710587632758246483689257621308376839090325785241761989441314121302788476937689411071581393541134484263751178379531211823843054270530925520662604588
 22741364621133976801759853058864467919702658753108948232787444346415009083332605651415456404729714544798893173653905698148137",
+ "11.62275716447526530072773481095086913636625085077567567510367011670611204536816523588296120134495121867206923318376322986649531915565948849037479237110911597980379518232112010525401162429038333764527792270889496343203354476502811011659245120302566136505086778202414054377047627622067820479597676751416614276454114895413200526425621581152703835362843272564915500000819969909462924651470389581405124830134368936744396521562205542661539221011051810222278846394883253100713759134590065142975374409775632206621481489703279608191574537572051320713903369361622286860728981939578685541430742683661764862047054566957419212440626419779694468000064743266918256632890235266305498720308677384413789972705229289947563992674462978046736692223847287687037892767053612325085204587173825927031501933948255441563208633467043917897393960855194179641875849475285089617927990451378271909503834930420071761162328412608645774329616378442729292183613248916839255067022453968336721385348218606276030366
 34022415963773401638269124800251684954328516467828750283529560003793822429188759689400075614871516086231035596052689743737025",
+ "11.75712876334825647010884175579414194399686984207734875034628421431464911635633710493375560352985224698599007497672949052042935222922987172435827850991702811632593365413921582767826680751479256223796541229626533510400167129598815533576054971064664704048054449396398121631876394345731341912804578609317248779497891073375742977131575202577727799623088293132358250108722690982599332666288593096927160305182640407294970766805297130793132071781907745061087974601401755833323041925190821333254891746007423575444905719713138520988944750257873067580309430079468894168709031575476124700865237794878019368641700791190427751970496163922247770358841336320444870208697476345587574793474962530033160773973986202321347643300136754364701460510011509515209367021048715793723759413235522635816521326685347696597060101166383971839350781755065962044476259203254032583264661853559619262586141120751608888911917192815189911716950163702383992490537645741552723315774934009062664526791222582240178458
 96213757845939003637544737204862728065115192407085665447911415853799165098806733280347311674415363212540753763695044873288556",
+ "11.88998189281803304003508629536054909456707926918858437812177418659021615407971497168632256357890209369822169437988606086865967304706942462798429396612552049950379878190826375349208192624135218987357256185633987000956101974146293616052929064639601681995334347960479906942445458763129671463981289100401684512540443745858335063099884963985216269055590672253911116346610942154895915736412297497653830540515322377985737102703415907103141332838449527270713020506807082439940909275225838747738081854512431178828977181267284872285128386332472241034450959285114979496399730892411057495916767646854602855788736498700470387696892764381462368969797747648629622291145351902035663755153364542120118592824191201663178616529088884754386712848190896659825472794019239874308544511585126548428172954659615409636371298270282222903556020944882028155121604269792699503412289221637291525373022696375456552504855682562820528277754160597447993139565716588073446455723673776141607372741016232359470996
 88280533936734873574482825770483347386725590354986027708834298213375067720289632698512656106946260229255485263439491511281063",
+ "12.02136689670232504751214837052312986850086383133636555409496823896132648668961329063060986421870266185322132152117014482673911883680476678535715726947755363567532641744039727552527322438318270441761392090249243942505813686184620462615579560414951536111391678262436724436480553837759433030416884906636713731361550535103605402678434230053323536530562628456895952249982090966271007807844181389916800788497034878941250050075452157823398703144290095581824498254905932493140520677596816586977896735786789492128098063515989644222538047943448539414907989509897582971192390959044923989555859998758576161098800420187122939861589894795065893382389093394828798066985248582431470054436552934600701653203411129264460820981085384656246114354234629894437243329488955643743226138626448401005798443198086068401359280700261534353024582305522871948624041155447295535558601357678662966453599540130758565678985594411240111771025567763360263018582152176130580112311185633147393691534084860779984754
 70304773205610152830759374129202640779824926230644346880253659061205608241669503029250691241581669322113673069664040300361434",
+ "12.15133139695894732154602571455686512014975188778979224280502625132883472421219733897546268099251349556454285614323778007070828676158867118293982305270460721491521177578331411854344777658699021838502054832767678514426682758704167929123699880916983365203434688577467510718836371737542712095854833033146971364426371456097337955608740163928379674241296246697966980754962025288588803836357748835011858832688042186399484899915971616203645266390369823525056123195444413597782408765043581053437890150818801719938013311347604426584322335748123081958045015953676085106919459572057863977735411977989459753312172008667686147987683693523122933731008701450405688596707241603728937835289805703769457372421228613519568263478618016377660430006262058239282802446398679840996185866407137398875771748254756139635180504107294435519088191142656896775774781456832809345907154553781387422606941480055603744307408142392049907269109628401489039546573416788919784423150982438955222001581537906671233629
 32646639672146391300060334021960329885543548050873714607049607780426796959929658969497274971918388832149882433776112378434610",
+ "12.27992049535786186175461949867117832848851725301169381443683145357715096675580459763847632665870167043037482969797047610813817176203976648656719035106699686780842173285727906331170998781072159744124733242659039628428386564734356063799428290505057124521079288462490655347824925541527221260110251730623715124471247402915545534215090142200724283114181791581775337620823032531412869896456666638067933462167954483426568217869994574219488118868681592856285887771165012474057950555245218680237230164731193429772727143372476357198276033275469139266213439785243112042802701249974535946309992396386348026443377513540754072342866195640380487532634011822850450359765634642169495179910282112740988295298966686451574026057369640805448888236029992911780709411832187032592567024811978694402243282855393150299197356280219008467636545007061877296830741963030843127886212911233628104142381977111107497095744707170696559035471103300308733354266502225707643885863644764197410355604851668363551358
 19544023640374991386327137930058958044315661460340536197491826128954196500096831279426592578273253394759361748277609755229071",
+ "12.40717695633861219108717238338801627958284619285670989749665452897037899213722526962465459716981265791358776536997799466365307006007095821767565596721950947923426389057173585994947621120265578360252466765487573960122247310746035804361690133129663813009812882146438848219745242868134351483793532750634478885329613434232607403567592852556096285486156815815613217132041347175402253932966898392373729431438258396536929276093153227260529917132739275597288975047042260431138570655707629595666026449182167896949691996726384294299450044648086336599003652813979587789377645861257927057501685718325360050549943588205657094379504963634944529540479212386954151448152749820500067863145485261642534804355273601172582272184738959194409886558754405282031259467476772518768747851416794323092533366552174067549145454930669338033030463556147330128762873732120148985184643543025110697929715581501980025429945171824971966584694469542722372776484513105780988941530101498394963403127483229293923435
 42401192635791443342446849357926898503374322883315593972409393470519281160983565963805711107788379316117321935018451317463295",
+ "12.53314137315500251207882642405522626503493370304969158314961788171146827303920987473297919189028633058004986332601939822433161809063368090478927827983073965956717740229061865568663902156509969401323575117232752449212901164706931389834341806516837911922090578039245047800020687575137645825730612921930932460349530463332045594007869848626188851269374123924316744321298753294756547869381713625963440201014285929624868154049892262692750499820509649129322794068584817337400764487261652367917373878099480445944657488593242742402346826080014897619598009119045828952056489876488564424400833773502793150984120710821169181808759606528075679920854914185181711717790488437122437630890054611621424419597683625769872914128151682559314043951017759650440728020132438857078250241883616375470684032123587408175922356536915840959768494218616700828027502775315149116929326247805629483171811555197194337422009851077124223463367162864380582261216900578313515817658815090156134128088344458880477511
 94480212233995260850290885434497091479423143647466627421197441327905883948348615191930342201498664435396962952383653761285421",
+ "12.65785231913690226877484516479208842113516180896551794552312847313682436388319300926920973445704370799014794576873577185092265908793927751158422659755970497243415630614186970312686078302636307495751082332221830777685815128694830563522119268087060102515985333679512223525470933857051433513016736980037988474708990376228158468935059984361548094312087706047838515949296761856523977786056317197470059469309575130956969333479838593163396440808643562700661907570234335987801918127258488261613422081701820632089649582960273511358381213779639246500536952390004819435883716431941302571205329381351640210729887804968678551358059027669252690963588744330097949644045051240937443450969049764754263766152941761384959279794554776963843197505134073389039974935635373516401901220182221963348251069361720495885844622924861291176840216539555484430289960987871363281226459599684778388038953414647362208786019180036309194115840463480147381627337417112440463087335217568237398273002383916118185521
 74369697043280135230378038036669764857912765848567411839492389221128518450325850349211951118365174902595493189143091128924607",
+ "12.78134648566688565225186912133673954883739830725907017131459050735846685504116073585435976039120577627413936913558646233218698720451626793803404221239592156114669104039029595893339304197399721268727080182618529868361616290681796086835993187585584541781869079568324505486429255107650320593377824098115991514919466267556856763057664294748084286402166845446782838034846952660155099227939337887921104366693541577985712697510403169916369517137886995370825552929274905702046265896444274353001755174032338999189232728478243141674553209897613571190765090498380047366028428373396380856439681364472561569117293268933015316466562696430403064154994845126998117353262262645682560173652741682921797430022275024077371728784159053825107046354038544881511021408559893745232911110627181312515680782808867695849346964599011379379539644695787937728092372717348210859287824042181211221812619255401586830389256824701567181382946648935163274507158580493681518524561591572789333658554197272767479173
 14838901881136398470619819131257733243425751608844676566931756320335811737311881389733198752534744615861076204027861852881480",
+ "12.90365880827058452483715436320037516974569084077416924107843688487860887250890657253758738045200876669969427463457268348406399757555063627172465347064422211662986212075042736228346585054865887602260603034028753483187605927598864070553503014435436321024225100978630336843207088475048853970256768888056086085756325883529082083821772605109767707082475241113029771842219887303738314876894780225187954162437433687918707794028759904325763022067415593548740084337043018964185033220372429794136826932509471912953938811653076054080582068745125200082889985168435895305558182799936800558754662218058423396654347591587137708169620511479312081168088245952955143750458999704719817040780705970354750208989651458512099544274601571522686634080820851250943261398008156559800816967545097829989282402702342485248451037561933555288769372257712088027095291903733965854759745862413298218208378015694493668335202271394459104464360208100589393185943503452708167512382377261358386086895695205231224502
 44404454913108932211269247818789816060744177821446724166244434311897023559474757455995497570838056986157112960941696803729504",
+ "13.02482258204881786853426329123432382169796010612182668557182189986662769515332311450209306822607924773603446323106385902954416846243517845837769513330986679819741883655456126128710007376891176748758526155775267872510495146362102790517441042307375874545800876077957591222584034674920286491715429623434796065295613510266887554876859845899214288571334215599609485716476131553050460161886273259030412041542468991969662324626039667004456449100636245905453107420134130524937677606510347184548693971013098871285958514249845063474539286371298036807064603690982939918594719960325175948725644124150701441794829922521184099156953918949691174824001450458845548428403222780114325771203997346191083564388075958111782340579131863202373971855134053111675192173189998899459370217193066918059378291509080570585208207654196261585041320600917742745089260863765913762685957151922889797621231917630907448648543621181047404904705267497559521632290276931882693141106670264978691035666259653859240592
 61283134617995824097636505520477232078529189494211027236324917581780494684363016330732220817837194012821489865101665659203348",
+ "13.14486956753236970343541365393134251806774069902533962314135535321582847292017724910110007106776502190549036937386562491971323536178170431398993555737406682040329095674342960387463041500627413092189779521417614724660656444541650574156934636421941360732306079472032629194794407298790713932870173683575382477910273727800445291659586943457411496099164053791439967385029067263953105490574991358767719456477262533892928496614594330715708268337030645975283724766693252383798072569957075094969368732803774266809684905442041448506524186671028588727808876772633384143362185542995038482273596033714830527140373820605244469895851258681945396672886993425905299333417168436938704562285429190943338194967448524420998427032903790500584837465819993033824224707030688694845132875073630163629251639183962452284767697799320017789781783331515974459573451630095228713159765916290053554424326265421538374817171904766862924549013736145410097404057397563453229597078184265676645291414007869566740791
 08340389783956916039981285613130422619726646882192158229279130067633381058950064006933912115038270746168224845260024281286513",
+ "13.26383008791308444186926451034190088514334716985767071040352050684791548423425314936401661884242219288727882680215230970256170098831710832936665246997227085072990196771990168884678125217167957277209836286695826113521253895517607442511882579879089565961248211895452574788492031869061273324905525481782068241385441721978383745234233752541986758291384136689127600160323137690594558046537161765242278530112003418831852715202287534999969320104584100313704196931432559907007610000244966731962696098897338291348010474849805516662368585334571467663677472770958755937787294416947186061285443617469102068367484098034926026655968035000540830697806088715058013606461673153526902806283770084327115760631664476941987779638777379925995656522893843237576459576678316321649369143620858545112239979913828836165928329790651777910446112435010063070653389087127991543309720754282174597304198742085777245861400730183493767582488461299482216946820415320053046834187471327555427125694860368866597851
 11557120560693988749318795483582114240312470812828755095071884506363715783906688243833912926998435817149547884279386906634051",
+ "13.38173311849471217783876941566836313669346091785358692247346468395308588308827788454313201655575270828671673857410072412339723496683413357993031205589498749147316325966722925364868402523693430755780626613948467292908861208063352309314706761255848369581882753627506319593551484137359092086596531257854895452998806505715719897898167362764725488993313604136868153402300723177611396171086932015966770533714117182414227787145721407312644583535361244253971430673039952406355677104149187255173997115831250309338859005930416245494939092702790618010442668135415114760593600709531324147158970997930641876189049134461796954448236275729757186164355304122318976268212115916301204568548884712965255453558475368526187559378467056398276457807541106810697391627030860295592156441212947098891205003053216719818592205284188105610916424597380433278363290074023904185431400430488554421971072229520901708357324585314447977525687657568854812802985319504248291115117362367030609785133937195872673345
 16212509718247535160103206224947196863863264871876290808068433102976710291998849009357718081807090905471789659277124839575212",
+ "13.49860636911114642459358030571634453334465888809545052183878432218118664778145097027262019948683840900856995174297398771305025250783532430038321980650780572061258675589431807213585169525934929261000167914426347007424971894853755903478955153674190248106782011276139620636507795882584271293035478532473175580070278864979183505217356484769621601133034831695071383225633005792357284236385529593207735857968960517276605196352157995333895943494170414646790400784380994798902973755005117819911133460832064939782772237810609006092032382863064678711413969912307680886626321242702574644805860883168506903830233453093924927329897058250169195260225633629540822661819044140711396310589500127135405270491024779388790519007695241209195793120189383116035582530922720748707660791377165552549839432005832487197851735137729170806267262357399957757317012638690105446456777272920233948508868267456914638219835183858025314484505119940140786877628479485234412797370797504210039336914992553959543932
 82954286628119050279442723264746413216878905804503870657461514746916596067609999603045774298320322180133249625717533859092149",
+ "13.61447636017624443799265216512401084934894299480626753928997490116563679818224551788538346688535913182271001717774782304788622939104350610590344821026176944993536236109296080832522197288600718147774962375549628257898604366647130073808858232576207050555710165378590833233321552835737269355382324580588263158990297043941026784915214650941783458322922965686936377927473939153015305837439934440258968380651188973430433284529166312360178144495429281174226269020258597942203297305066291244338155263216177183414159314156838378308437700744904811763484223621628618126613468498739188142247053840243556914248643677483191716814138966596355166784418526084408341441627612489585679824790013815859060638812043516287515996652092920942814465228095391918411054208919508999122084721229842947316620741951628133923067070052831513296326226227232866458155274911170054041468167410852034663350758021657443475678929953231235298154544142427811883285673656535439130862632857947364855468771911378570666647
 12691746005042143722635223400766012268118857311779477233465292274708583508374133748593182509627918787117455241091542819813359",
+ "13.72936849295653490028140050235435928049646903169133540597400399217373599621100668366542768072368049477426150714276608727001459402384018296661981028675644309835328339682038663970212746960485114239645160392930633468415643726163940352805083775899818159302361721100271556828661732659570571168475372248891329665567199268049708977740437886524493265509906155371228477834227095263594473819660879906338025345754606465251620740144593750155752844044961108522730225691248757297653654031597024529063686254315619328461086249443016685585165285602455299196722189714724398874459839440367990463617327230929555099617681128917259952326128517536799268195498838206038655116092408784438127306679803141939749285664045338037359993925097469594876522627475832558862288258585536261325168269513925833848529450251560274903396883986631263020732524086209207715626622030318208822415313174319785366015980956350634678814828507505095133622878207941064633230829699881037765748027472719002797647121394190635172882
 36941610321665999875635490491168684987282463547798106958000567974010853725420395569948956710379401344238169278863002835967332",
+ "13.84330711459430808022843826239427256434596343163702958324024908115846905218379149168403953776024323043863463215160224677008170630425861920894718112155594910964306037654901053424794647340280316850140179885970088660995634347475091516563599074034580222277088552889444951928558668341649234045803177511148102334409748137400884854523559045512188285811835118283928193228004231436112516529652682545875510567850589619620303079522508579293840764178527086889107294803343857102613222956273806465875264005940880170121047936689238597044814655127252311433130468400315328485177532281025692458608236517664214224374237425189319256792403381803984660426558841996282679982903717155029667432596773859979953511512443869782774838236634207574918440346079042660684698188304960936189765536209496962217985053391067202453671688774053766452690532746179090801722730968092753024525711984003471180065500230138020323862964952371164325039478611185745073480193156876860502926332174764055534086326950737443883418
 21217781854190838168727859124017786167368413748894627539001773837225674001211236781270826204317868935713403376698315709386501",
+ "13.95631557835258971630282987340194510919845371202282580094504721882673184380671350632023685341354308850839462985493063307564779895561783686656224367541800934763248809379595065478545380833700194162565757769483167079178423109038946198575913935482279116571014684493116082596239646846650161193770466470480495813861010969366704130632222591623392021912736282633725638758150419573095472006586231661273719542842175639211322388884632558497329427876301898062856927370784546312226164597824671553778064211074026568002515720530709984110997600601795473162169024780185639904761974104843173483572733317722588914072205973207565864449598202034364427646666498966826100156853057871231959404523504619735072119332528694151223558605645228729638308418293149001685678097012293128075708483730797960185887033271167778371362724911505692174869251145943080369456212457918480469863494929329295713286897980940814423934177152108133491855723332776193441609655945584350114305068536710062765226119259915007896854
 36288350432338677840599188216306552667639876278614865474090999682755277088033035543967117665417559338997296158961230538684255",
+ "14.06841629950425422166746548685349008539247439624723209449019512753597703992337949615085065569296777945496179672763609053811689300183370206538076877247638830101383027504892198804988629936222240955493734059691635358900734126135748267597780174933252797493881706845373887538509108519192728053751124111959093524496620706000515843202152717874782970619450443271596747549731000284831567768438823806524792339716002545937107680265482217523844137413094892460402892203528991163078152288661949398994324348785254915588005479767799796833676889032787327393898817340670142593940632177461062086051904963611345849481725894770571335310254407868278522538245241605484034879074212729732903677038811007216694079712694347984435501726252371146594310308299161416870406668846962356258145641296264359946379070868825887707558122832027844463862246148007479239811409055009602888696204701116135545870950675509768795634174781163881524258141959019246223118435395101716582502665022936895782850403473379734371401
 24945630951972283147130741281963393446164290359192448952378935001920557624942274221681701969732105101994763264008622253735683",
+ "14.17963080724412821838533986672916146238039564897909702571046231882329027672825745099960525390835732332981458899426056532988922292579538082020074967682229654769630158922484098279940138423160660983145676303414370240139711212281183776413360152148187214868357579595930112251137420420724973124335466000725118726090986781980122746934391831492681469127036360932129391008047253914745433066247883876998547921643723881756490601249317974012034191008844886396901685768048297635586937892237290966475458799065334739371076567687296336342228622454955813256004174644548100330717309555723345208573355106657554343485649815092179536433719958439936605189119099870804744512174571223428648986451983156162896919263169829911522596782558810507897013210005034608035725105687740021449997544476336369248609561773913220056166234206479243466320529778454091575728998550994455983068164049171555083348246378859405743348508767799967961811079393763111283173125157835178273076034401712451386746431409404907341069
 05601363012333078105653542123345026860999226152360678825610735394879178469695503958635098408901004932705510782878230077100909",
+ "14.28997979296459888804653702544392904634926869096463657847566510989666889816047103805218492612824208200807189934441849211400509460722957337778325520698318714971377098754849430050928445383296017218660282575175251274001120682296531073187866322140873218283541942867441892138842824768201785329290264109463365492503164115736323995449764363813049282555927573440821919365408184557750282445799561050658834799137991080213211138697839529041825282802420513794542186655614487275840306266156361788227069268141624991313693320231552528560878616477577038824204200841492423452662161492602419415672158806617243992933862626362742659425045630291118048882205942518210069067818497676335890287690114955173006798161566987609176820798906658460071549234273868491939202950601784719549013691860350290695809606758845697515212125313214263470357169932875696683494335725262313637072100756719371198938454032341798253052163641164720434303274476226734435624916075141861700869507327264135992366084539201825976207
 90203604341499252603323429275866821091530657037950087409657380807571921060480257877831704466578263052537696771142883837667113",
+ "14.39948315520131277112820569373511910015040936817284919328338325939794349940034309714669982010179921128053290109798286886606509161697222078607235323315918124625129166689829660087288859752147003933667489221127815606694428052608507472792321509931536924431497375817716379516190522465923145373895895475969253588858513531378522408885885111439737593014328008063123280676883738375781110073550679073424135614151170981062295931141207954750945988909529364126564206695106250190846042377474846410364006100812718577510081089794319572563586353654987276519369764561118830654831486179864654577924664022738152172418171635013524058231114970543612438864826865779612237806740094857149212577688424056007405168166382738269909396170651595585469725453074572705008969489554824260269472811344104877166388016518766986086938761043978203866632276648887540284063054272337673017800663324839404678633871661587019533515183324001891787021530490212610242993434789825439052507894020033988744307293935614643675411
 93884402280665307850918818544192856877565661864230591257923543269259287766045586392906627455350388206936516877511705006505488",
+ "14.50816004152546378219681077246141593798468152500159666327969863029466393590842843975621347949778733712256734880116874473005243726387773914912710440470130096728467651534622929680523619028151480162218065435555164168709835610464856974454685255900896905617361445156823501870914873275338803027366177435269176035554949216731304049092926205691077306482444403338427772801906947498870821918239180122554169393472286054995635753330822994538026064270720783619520925661541669047488565235314732043739116184833733045490766185657081799792103168208722998823487446689384142819300602025355194389256573544094075297564108260438685306874556752613722848695866004982147365174371028601306252637376484286445886684379744212838387931458106081779374485182868193239505093540819627981214068133860521833613873752371424298145803286437549147827201252199371458646004642445914975808671345455936527239236000555554379682227718396583255034882038602387754960188754092198206578678774895324293084200731272885194584705
 15585824162233002589242653827817278322155993680288963941768325132608929167231803325441134141466079523533004874074960297398614",
+ "14.61602888763243859152820828339650544914515144546102009023946879797851774796435228296163646032401898405668603802682247483997538024059430053923100149530708644650234817412038625591619400230864122002844464733117732180207138840345503942749566420701119445724521519252291641382086677934892130737459519396373764750722380465421651122429297206242839604156465612789771943017828164616001185450559568021341559075042419137994784830790021037470800641632792109981101474850173323108839036649942799333078645618527159830316479070501300068898867457901170806042625808938403813737145510997055536401132210873897974166892827793021527816572066614296735888589857989629702365274484739400095921811102031101783407556167640692488267746902368532894207673341694791002002734958541797751544807762869127754496125427119280745765532012335143799221320519993446344609339189510314029166998199798430363019346861447315272959163881305917876886038483326400801358771573520659766846031092964708437611160649103864099056986
 75285107464021939356227075015494978348239956711905571402049194421753904018717527587649996077266800964352303624402577118757550",
+ "14.72310745385279504766089185089134852101939289604380101561797162844778398996562964067286607735617914793003926405488443624233761228156855150546057506598758469347958982674462792948399989232052842692505115531904040673733657052294263423967470304731068633847633592353296311763503979628880215614814135166602929770149704098031723859298079146333722499321273029745884513068859519989245169501744940165087428867295768941041952038913106715648614000646525649054061598716233214374762868798722590835188362087233421773643712566506667939482950987504351245662098868420028801433168473241994296972852090035314737197419040144837580493103970907195337280972605414505002613170803463553824668323960468495876399394612397816582907281133300958411084227515233863139984481949815396728572898890902996946448124497135034510356711013635873519330417879357261647748928980310206200754940541917507482381753028426011564522432941243664762946884916664890198483611232587261820911911163248062071339304120685833231896886
 87308435693004227410778794481033787991938082837748996778982096020946799825701362360467247804846582233346459021849435486394414",
+ "14.82941285929033424631086207912098111621541367505427772846015316912242803053179155131460895254342025452047405169979542962444023116618871414133945329115414916030717086099401800700162610179157625575102784224570875240388134673783512720045815984573244677473730308776161789775373152487797927469428424698992451596123810761760603459974935878542885454620338966840576398326342712479215385722633896269213429277517577186815835368399385357510926584315966241368671970103083177491810056374230908765438732982388501139182968170416902093696335794253265047512238389470476266068839550904857902884290216102171012521895487425785390772533673290825141180637654271919602068523663679301269923460621685876272261739146897230397245550640281333892280179876805212825241459567659532460865510977960477821487919988519512214198833198179939990532787525069625110656788302572184017485685007473335918820585974830025314636541771817202031778429171327072925562912898928433970457039281701616517987742023852668580246284
 81292908429107158745626477532254897607152843489836358490936853541807395474017791353789095258403694863885903856428866385139618",
+ "14.93496161377307725187422052785022139083546667697688294121542088739140994156998264309052405000555194525661087579460458643920507667732813783188591547692393718847631988430338802843477863788566043700457692800316945845127916493229902799758404868359658692283991354160249536211646435324006931703584930335508121542557306047951220273731663823060833614226204891802863346855418563840680294634286512613284457483425609261395647744217257760538209176055637762569518325998718751851831329370723608514865972030517659843373639865454597454012755054881924487319387535255981118440980649105551997964492491978647277492862929963387183056309986199087442863236022246496860534497489875838747853274999488139126021378392722024886833639307069280866052629226172236336642479996086825127070093486958302899604555914283633558585863320366526968761451343141460040769870871038229703993585142555366491745322757603915846856181350796798406345157117821483266924820110334770062880362281520789658133705357416007550679043
 28039271925962758975702936379448509324264036066209770450856159966672496255612322665295729865499903170425957082810506551820498",
+ "15.03976964778600301449459170886627151804192044365962989977954145805376192764705184967957503026834359669605983599122327786919794170876041708574713393579688759148061288274874238682396682587811963281588290140679302939055481397648317667801210167820205494306508693647094057360024825090165174990876735506317118952419436555998454712809443818351426621523248948709180093185558503953707857443258056351156128241217143115549841784859870715231300599784611578955187352882301780804880917384713982841500848653719376535133588986311891290882816191296017877143517610942854994742467787851786277309281000528203351781180944852985403018170511527833690815905025897022218054061348586124546925157068065533945709303517220350923847496953782019071176852741221311580528873624158926628493900290260339650564820838548304889811106827844299009151722193062340040993633003330378178940315191497366755379806173866236633204906411821292549068156040595437256698713460280693976218981190578108187360953706013350656573014
 33376254680794313020349062521396509775307772376959952905436929593487060738018338230316410641798397322476355542860384513542506",
+ "15.14385234053920991966969415266807575480213056452052911422905510702025459698708060606517717926655894900554616780110898946648632263912001554461210011612647584882229571463066740427800254305408776512601236952077498829298048237860724081983118340357410947229047039941690749275272660541171525332551075326199425282818846268281015410967732395635352940956523833936171134446498172260449921444688124747319880141463935160081949861215514173175031182425188237146846067343254433996455969599338554537073362313670890978963459780269225877622153702413999677944000419040567204358693785227803999838822542340308965537170600984050709694325886072279904505957516003915824891200495488887871308879176561632725149529198909071326267168454971331124669508431470566342925469164861785219922556915042449219861250008095309974252007166156256576740110240112508586965917460915276445356890999404778721775736732866924093220896523904672438015961880751407336509971423702018418779161199940094487486532266350481818192562
 81784782880874622975340845523108222703652277923638344521781640569055426282343260980758922970221905010015543051560514662433274",
+ "15.24722454631152533700406363540832836668877867087149856397776689888301769550071839756279137788526446893414692975505440801855970773317157771533463600210072424951253922147748512642807158942260663936726437452538574831379296073740866751661922819617653588047709891877385914432194575327966170126636477896094317740757405674320080389610139439373071348144208603123060441635042970438352839635547520159009911484177391583942890660185727222171105933528470892017457189383575497279579797054875614676809409505789651080929717459518322615984915936124295687187224118755704117325073639651106695846421666701930687646002479282783406510328725265635014690695426271710438184507509693937299212668506570682062365718315772099190773112060151986368839158709871413187170462340820512206817583633523497617273507495988023587758608908537853407602590574338235051665936526548903583331907987678472505960605133126513618442716575215100450558777669969253142998338427668306669616541507478645365644298585552729224151106
 49733857674682620223561453248275694304210618254529601023775975491296511721889498789622849848564452286751061016082497088131584",
+ "15.34990061919732732719327437333897291061064656626461726804603931697143870844475574704809540832337708803796853712246309513517271470254970810820898793883374608476052716607159882913963748476340199680155916553323799535535483205917945079749285363131321405651349110578113319184781156926909026575137814663279643905589059253644431917768862677750905353892727239477219172026028790664266087370570833297584916827709943104283210272337493217774360148585851991070357359713956265592572438194056523350296537705913991787215908929215595446497845041594336424082766799731553890053503376562468169932887490495482935033054221891925942590428582744550475609415792514778563062949707043302711868974887852640926235369123708358064467532571712051006811110295037491139725886764790233790740708781014973368002804103569241437873996695350273760584545681258827346621038427453788553909857766139042035130177977471388884371369680883963370698794338879125385916692833127782134554857329555955246762944506064585454439197
 74430029550468739232908922412573697555394576825425670246864782661192745625121039099283240722841566743449202185347012194036339",
+ "15.45189443637330464800948957146424328227641160977927439629059689230514342782732167675196783682561475664950338786364545083773343725058402979524602434763455147013938215238637814067487427047169929497044470869720772480616519184453250617319131064143907109993842356589607989833241122341046597806816770575318828603820802387229432984962305097283453638024923588234055671825982673417681673301420562907909358119773594140906895880398759201759691529357702545230500513924227800000729294904821557945296751415886267853878390030762402852975908996925986112129489741430719460127350435904054057115084207401826227356297918115469021317543041583913759762033505562283549081948716529887919825087086463744697491190632019558502249347601738409785406315232451654591306987238743917915355305000965704816569343242271972788556376570176931240579693214118259570101214918715195577626341882789452817066697851610739631435419783421572050331402838156453125144657962971867497135080277125282055007016612394038386397609
 63454035559115496453338988692441465086270102708432189916595292275910127721552152009058942505984180320198848113154717062637193",
+ "15.55321941999192909739144782711015097827614734275561108713261285626354258779489224390652763337390012924223178599392263227425445337815513686694769141359136771678705698719922374870746700902507103915855427494553796763509177119735172318706632745318388717804636396071981429717420067716507346569272549361907608914984331701780960759666210788379699436417494784123263876649532467847214614262560261426423567869595447693339832249471811382969450308403345496531190003162601430779565082104195224733625621944121808152121627999276423233789456179322398042107210357356615536982294069682226106648121536795406977768450281230429565501103635074443577106598632509746907133713721289895672440460523221758788680977781383458439713188069794354810651720441843368532668705056591677929881329485834679774049686949592214866562402434177463896242645226895021592428811378112069336604061688548536252650976490998546303424557033847753797601296373698845183174060750147531254360064870266761582995334503547779080972050
 26564092618416813042451075357865075958584347010560603909401672674530473016380690156057342486458799820056849296157803970758151",
+ "15.65388855779942853366153224733759669916560950214357373632460996367601653662021965023394702595594176741839446843008874479201186337270012517165715234435969188484446753797320725435605641334483367701984589472240333626349218759447352964882010531358821873858986312107716463814544337217751168990722928578663940114272048084036180789092489411834134872330214020172727889667061215864695797308974999757488684905185513373188086528162208842501940975011345813625894511913353708151127146128378966077524665796810019694844027758343133704221942010644299237586651893694878881289689541461485788205518899516201711660548827087591739343817814513384592917371231987629672720093300151901352510717558061524730369897437443017367511644505873188937842075149988790269135481079578225849962967311059799825937582313297762346695595714952465449667216598161651416853608210414427686558742617664716148797232796951296051314347742771546599383081164661229526254295267074331552134554674985486718797561579726900423966347
 23002326783535035168700456971324492035298595293576869795744389366846556161860716979752870417581809090754427851499367674362389",
+ "15.75391442256792462098301123118675624892750004829829796604679789447302628819569360272471868967334595053377345826107700936144704873275517720818239319055895500051086290690126487553487825142285211970883469986932513513811545864962571533144784194665121350624778576365595461872763123808521099859764047833763231637469955874752152132295895800706168678376753379196062839015881893022955107316160012586770002179187982505646963254809089666293899977697178899093037980704092275482916677673014930997238667494669988232322479664690303083310850731059136460058851366968847250980400657040274444697650944706009301468457795305311619380752349156226785458193446676093506742116491452599639744991324581515109722958145872345894773824777243613185427525462819376470087280521742170507865980395170098526771361145289822422523736179540200447354439129571857084038717586527625322155926585856957400938710594227338995879356430967142585139378048316737755513909575969110312959639043266369865876148291997484003782842
 70489821119258092593559132400132757457303025648114989713809051372859786312670557557455024113430415444733469786577609605818156",
+ "15.85330919042404405338011506048073212608943902558477917082903224878695487210628662891509675143853612493096225917318141449154623072942589950397905862150069399933839837587768500465610923498846958649809674914178649334608135965528391488070572086186135575993779130613973209256593945017506228618641718800535579350053924994477780084133179951980288358740787563005214821795481256206527887648549729996871774054020429837314316136937887876137521777117932703027617360675742776586587879033634451663650775806016574905105302908356379829713504515109962988045934612380153305995199641189881409994555690195806137141051648664933960516929190352508616491959730330198172829721527135869380885006871152722826824790432254935550904822038785179672515617130921195546433963725358986499078059348780168731237563939546153879515161731027042963871408027926509370873495472359723599337883052295516388700497363595167275403339807576750427371037005547463263990852754288784097928607631565034855476496988021643145961329
 17707378582313164765977101027311129848967453806648036945112397617833423627052843598016874809261680305673980351252655348374751",
+ "15.95208465814964424568350735007030664517794510510148415392427010867620156131928963237455591064690198874604141261854313599612537579151980342272584338642508361615833928787794610564932655726055743606038885841341166520157175113816331748465030171166710616726902277045421376282529597973315594764877399250815758566852360129727638090301190810429266652767915906048645564884053160654088612199528869361623366411849189366976051926405482720763538464884950497196514396489054334840035305128766952337284891148948501581792461138648208378385007200261825289913004696475116612872056973250188763359645024494989748636421356041978701978487934953244928680837758987354655337576196392626357230109758481050683259034171066058650462921380378661821384139861255663934040190743898707524131247237535878415404685756995652372563187013482289148899610596000760853022695123369868762980951684555317999468766777176216831461267072363774963957037464317983500193569765802564575557210538701926507810089735335580520758702
 68801533388874712868860234888763155218624129421405763678812077319239075778407441953464485710013630549293699630738008836738523",
+ "16.05025225952424230476581967579445063801745757057598392782532303214452508296394819109614719314531165645387384974394785571751086097398865911208395694905005348228753048497363264882096856312597970555971620879906259508645972693647669643938191022038432231132431184266715822842567529797922226581210659674897917398979015564643595710059443352469890936734733079221279530307438119561125278552138002085349216421314013663281047590812925084492813534275326257249550740145540551673754104613465119578668580233711998649712861846423925113787523245476427880644200658196997373234047899381301143041570025063182477667872766245184320561057053286227500002064352751064506829645743018924727156790212663685861627649985859076214815328612990233297092150024030017230155438725911212229302175380677395937396046982576826094286548745554916024949198297152159790194005675911709341427511772565459817857246183923346603453956765185125317094843728669586135937711433527252577464459190681351860093977592786332691277194
 26191365945433194069995854695522773330552489914970861258642696680947645047295192118341734641074275298677776747132725952692040",
+ "16.14782308077323588040579111563599755786432696833641950055632938023259836790089849741426487145644423964717300403164769020988750945026001535837735098184740402542228737873237364898176520113703864062662505415114802020000729795987881556278739312109659503560031422522582918311412547449701854722365952847293090042257105632957093565235676102663972337897152677148044253966683307177426032679699547040577669750764306273344435975984221647297338652341764551469202509253986790228572588031047824686904384745842986010582586958714086925875849485634448926178997457265437147974136843577455553290380565935727339899241532984660605591535138121776482910341696141775122832577559590879396695057203232425596689324990035428188476516910925129879522571776341878492222788574311122388241033351982891051191220093802724989658263497387095721997225454195213025212852540704870732899098513441389393609228915943890798674981438735847506235896491015310175649787081383906207353215137791487121541764745832085443305036
 51654716904907116042682578169464107303714557388993154579350605533888231564568424188460142954331592433579506586890005695885131",
+ "16.24480787518099987550112171580689810748129387803769079342883659690677157545806518812288376486438796070338553681026016766324538841109035622119872024163951040688789167101250298280209781419717905350607794454678149202115636148237179397142310272158361359440765446470463076917266019068021037142115556267780988151676974109212184787612418291715832912144744481142339606710858321175299513012046633941721369010265413909771848290696268339265477186361872532785929531514291235177427616121596868673960091767720484298579304633782511014415064067819635934044312040270017578344447655026835734060733195060661291161537559179743199660030495032545369492915756888247231181947072606261000464145466961570596901485882752048444391910147305913296480487838862319153300557321559127977361723149228531000143805656197616224108261473870602342376755379037616843178227100649132072999369979249792391518971776023376212028678312189513584315469331817349077430299204685724830190232387605899121323444818687081002016040
 97725222903686108103206060682150910142819984712770046957870395535067746543225689701565797231792048627718784232710619996958175",
+ "16.34121707692338396069636942016124866912121280813565427398349145293709565810955361999492276675631966697518817203308478677493832174935628245085381928348104365307952514037482808159868886830904449635685443428302539983505160751535870224341238708400989644857336504382704809242574395348338689432351831192391369094160920842488490017631573625886335689690484283878708863331914180721956130267630627157049793895136063186217663006135123419698982009383197024086575900124747897770071234678087682821358729991504901491101582770065032507249536618376215748401154833727828603032776472840471190640075335936483965943301230811026050149908834726858350453898757674256721135416053388486101284647726625739776177612134146905204802624086500178384314079620179001403240462531433161454707379633551770058513792481470353704333878334205533218884603911675583800626621132548041074489759559782273411164960767432062609521063651438274431351372671450151865325457551330662803363843456776543678470318732027444699362642
 38113240447117511360963000412145400308169673233984915808549522819952866570114619293558801485679439444177553637843192666077022",
+ "16.43706081416997795332724740436127731613360967337704885510724839588256709660301027706716920263511627580604269159521297010858678027293181064062516951798638854645466158451482280471435391224313759251602476328343895822783940243304804871044110909517246203556443511521691705450094073625598537159602541746099923675164450029373379154523440340276331378046718690092430121912162736281438104226536455424492206324415028892913802555973799751059060104942990914360989253933914535003834250287798473952128182160899378291670918429847540803019995292089657855709015635110252378383222491405925531239415135405574064870626306788015568609077090136631827364616288347630747686249367500147689742864175331804453487381693514418866572014239386210619459839270619584093742470979438655628519727171222049672349099021652074048125976725530858167685375883506501395958572118219106089374421875186725847140440223824153837356439914209076081954006734868431999108799008295988812790408613159310945240283809782411833767718
 06462591007552168307790120399348941306657109189741410463773559051033330925696056841916167522766228211393262242421521807262490",
+ "16.53234892150271584468808257633362765397666542542720887648098756812577109019865146912513372815895977190304809792139839123338516072401387631545106927629296451340593902711084478686441734489846495458460750270643533864134019870578400782595475849163647975825156545459080362173066416937618851586759191610613040006738104872485919754449586432174460482401027276841321236806363392763568094944549129187735189400166805350885162531237646708822024592828125657576164026455796387793342047227289876244671806088807723190275347135557891501752876115853250485684984674877238081790902573484381238070778495942377250028571653189165877331190549012380125852966471067451432654901900137406596502598637190192893494885683592995623345304289829680333768925980056852396230588687426204483702267904303477121286435587580149396727254095868932212456472442002318252509358674516014749977636737333483638620737005027933547190221619314584359203783305571826054400698789796383815493531146294500343419314271507615778493428
 39121295284737993268351881523490532278330519022627550209271545051013287036978208888323804801374289519895876593198148288412392",
+ "16.62709095169391935881132757424534550577249078934718372481900522776840218127060938596745629173584645086789447313356713123611115286352117079818517612819053904286512530633658577148734384600269822653325159081344965745982713244058522035986728674893337010877297736566922554798518207495320992780336688441574112533382569841890052140397916249199485308331135257706731281879493110618906981998917080148240553651368495370307481405165348934607756253129484741250995895639105285527979866936016267987505223207045500446289423659105190087706400369215613002684138595028965839565726003826707172937992957603366807082666400501999505462899607587215030301961326874682266762611822566322156498682074539021124035833789428835179584182432035824220828331784663654545453105751972590458410199125654616112476740910383263928125657673462434600647103367698616958733305024524851763112396823005703154707996852425922293773709198073205623941724471486224909396779455210650465744099557955567388383945200310770844142513
 61076203172937851582781189271677247274081267854212505982365846174249067482121520863646230241374323178103657911564790192184842",
+ "16.72129618688370695960574270523301078389932652398427086468608518427033263714664605502852938610738533364301839271506251077448080824036581302185478773772234086266093383678418825390067060855256413602517380809073906441271250425952302798806371433682023310468933420483654648755965963396404315198434054806053271892336212888143293413532556730087104604398797473975020259417474715731278684120382501500056990656906198986448799678589019300288887173174230099156332254756563149912462471793006559480364583874208458552888773015559467107578570818886147081960392210161443842093476008989675723483549976895363244249255501673676491249565480980794071046731337380192232672382838659857649617368357186471686002533466703250187299368869143896491473615852601449383505023627793870538219267828397070716119806390557408187537989120613412600954503831202660852800044843091350110985740172858601564105830195628747668161419020236325321275480714977270389848963534543261170601523685140281774706215820593703064181235
 30554777252590192842881894048535435254976906742189935635359698594705800588739642243011198473083262224352068070947521888133964",
+ "16.81497364919378609793384730160640268156297132563234979487506018095685013295566392300915301257375612182514401172336889713666262266194945526999348400332363548558381829468998639359351350511487752483392785154313611322816793842041076877905146309259500094284995337628581684869289974676615671861002991916984057896879314483118111069407993387698190169774851125977852661602912002184935152240036418561378690468173497368600841365211002832307528472313807593350752511049805383662495941358687235087702651541373522841344298412689682175334028871602110215423027591082782896305508540437837441854929752657063628432294786574057295454410907412601590763619419175307780820264393171320831780910650995627815278918894396144856859065438946201008549389299722968093059577088922648465342678967291022015157937476670108462893144172997273583585290777086653323542865890633203346665599752733406026153254269711867110020426293559090630669142618411785448152161588922441424054909829037497386280735340488937829563551
 57093511439186949168195503573717926825734468084712589410442022354120219836575476305852256521675584981012952509686818126145279",
+ "16.90813211081198007032372413382544366907448630622041193332436836605997752267535658932097133897677661631613423580211279812713811346508470162864056044329872980223360986385635762679353549393018464943698166553377832462262098800750113158635539185859591350406555228965466023887196395090654950936144443301451121094560977527726984687936097001228109585346160007687159177141252755382256254137485334736851691908323316171132465798945044943072843123321659452338910168494909281213828530369603845975920811117218356304753405174479333393627043279667865419657816420134624036215129026472192307884486557301997622410684473494638388755013963498403276899197373325953020120418024954677065312670729997139014033932230676073826397709621036693046551438625840520382842087638320299317538110220411220251003048489530453633275442058767603047567205359381981069819287432029622127438310146225515263195925531935805733294417086249352816037629899494568737125457914278614901099683149103682345596298411241328072205953
 21318685022115111820471491845170412521830502033004342105561816928208532788908700951934092518100776316736470776442731692226738",
+ "17.00078010357939362811213388133714288679743748928643153663650451825307495746227127079152413843479206992933536382011926203019216433130463160332871953682367444656008183382791141675614213387139286651404042270148438772631374392794365954621449715918679411346821231311323476100996185815327842728964327386825980705399348021964722656926231691638306207473227031037077068888418792782089031054095068740132333952988968055810804925449556438202698485408838692945335100063530203499579207150148923618431462425775476252528831548354939400879131430089251958578053601402704185858254819832259589054422137912601063631496130400986596731468820198667324356713763091781383764803693350693591927222250119158193615684017648462843232160108238977352677478408003330350362642851691143935980904973549732910644394818400962770086902280631460376196434298347616584420878271656771688993389257406056956190931967080137734540440654767252734746167597752589893432352569911009131964593659089502670217548815646059437705600
 95242514851607841979245586880208866747279307676303889206098080334141095498113120491826011797819568010033703314385766397392583",
+ "17.09292592810987323085689096651817060904963589029512160522530941890827581847057687957289096068541058183084099110543012613088779054388194517012258167087750641638584588112203459571174433994869187934851622741490977235242772338130713631219252719439870399233925713902546187312124233977352564688209907121845536807036001209404376740472171093602096783442686297710315751606835429308507075824176698105523506620931482562755978775376214511250812195885566870194191204793174298231721075902831434464972484909706497681524647258067071300593117619086056480061291527946582872899857562205446491748874654789978098377713131164294540504493368770099222821347139993755487426782400720886201185312021574067550087244967813610766067586111699433465749964814066749657297355011066259559855409268996938163410473274371592780903405589832473483486221803637415474230114164781266504850473473781859212295398344189839426666809919634261080944929735879434939868081039471274190307753181049835593365176998748676424309902
 67257306908318775712545165790980870833770357342634597715966182879292691159156387989718754333799048530940386842225448232251458",
+ "17.18457766246935043992785524276601217590143558721734862250072038240243728404369104075497313153127206416613120155142443389794234983534907935112668537124428435258863415054463876996698567771702260014400909373532596507280511964334192707609844550658716323313715178934322790157870925793375316916125394970185438442033369458310700574155708614165226613411420552937627834412777870203815320460557839829240191701480713368521679679427236596575241748038038039050873083844167844312848197703631950538209683015788688018100805416788106078664048022962254626217866031896324030391766084708411646597175932622589327599007461208669569266795853976963827264691364563839934903367794137369271107131219921824583328211625491361609763694095238834899003692021402227310892213604633870168252615523994160092153590012539555779368290219487082466763411129428707766952714079747755829024772268157218657330521451516085604137605721730154394609072521340332566913707494955691989541375214539235566327743763335690724049589
 69821817487022660731421354245851272428708325787898296874181411803997899332362008586913072670711064770984500148015011826261837",
+ "17.27574317044075408519044501539497903801866874586542206849152303865032758254070631606045172887345461195056443916949707282956690210239839498198597599008308800796297797050591548656701286355518157205368158410996395256148514176895380849146808674241968216340895862414421301920388345124465700118882908021001335941825559863377234873864165344334682632244656233052746413301305407954119193917112679343719411075932055505816464244974847901904743007217856295232488479721365526420481614471295205861078758816135513699041130556863801804697908467062086918938555935114207509735305111652835556275978877458871346276341455174160507481588008905144255546393213778709239098551215008789833833958874786572272239625096274365009043724920986705896758832146741568344564546633629308822836248451274657312757143497813140306028828713295267107662946721364742691621028213744079386598581847409178101298680584663781085004996557090839032490466743665091911537614300759514114394697547734092828745081347286099138295745
 00910503209081050228705417132900939410588699788540167873020190018123072161219964179184690554184874930100756126982018853834025",
+ "17.36643010939842382471235105497909842893061347482910224742909586648883692687109748600279075763477233031471261764141847870605889128324690461117026017774648906426322511540608168171613343169188235665011368207700357163347326861816137054023254723076501166061067834770610121630112046233227048655620572831246394753727484680355850073169146461198952384761778954132812647621968175404067280215848364345373882722056625322626216432834719556005941932134181661207270809893512174033250236808680462912731591961350798495047944685666460084632719048495064049076086138254643919891459626613766901264967525498867601922393106563361578798875938558599588233098668600611794064571204297040152434361605329794921444752517434610815709787438842484269831962473512070815566922897586665199279160289590755890745837722012107427446944276872261682113388427467890323660119014485021218350247942869230519730161642556841209931531391494908063206539607023330079362176387035909176924188142227019971588047555012871812320790
 15044179490661098796848674027302976104705585992281369648433223442373992912484021774309627757116258683761986486802220878937797",
+ "17.45664593781434131916922250154260862740311362355829352436323853138582018777017040364840325207496421311337784509553422720256025108291582219727776705860616617013473281865267648052120806395254559822920159383463252891243028443324477256696177029219178085005252741876005366208011478191636135878372387288719972259910250805251804425344668645558248624146623399557336218102648627761873744199012852404314901759744493783179273983815197099195099336895631163356902042655340276065607648754495314059679986393562317028704877827981150266596920078252597231467524696126987673314639017800624935196892252781092833783102743895596790388341706802065172595372704041754322486338937019030778680346941979846980184543999953487126914769449384627016539068038771835516883716514105574766819649729508833168899463060255424942641156454498988931184842265139215006734905565928251502546811897715578341587114896448671651031650175735990862052492187674972876543939051355606812955429323522594907639071880608678437014020
 82704725079265886683176519491584308173914664681606671056250177292407244890772315688524722948557271250549147036005452988137053",
+ "17.54639792241700351691035699367731677104890718426956821640946503439605558225489382462617086864640086281206980865642715751406426532688715326670498959176303552339404836320686611796129463019113957161853005164125853428898061630589703945768078529123573076690926809254943066920028962605192704156022858090703305444489342648664863831611017788076664391777123773494043442049818254612659167017134399076348816281420000301474815415669849167769850699748713508781051911696018744272361070282166313315084323429339272624322520484030539839363285556512020856667437212766664160532879085827083990194161167282903910411377768995149636854532263449139305951889196879859254396404906683811971412683246076456269994187436757076077822079779412355583039661531424863510617019228185414399909550338637062925658957644973022371446291299151682177343675891906063381159238503885441208763701056746927881276440536177276072072390813791507973912848714028010132815165703660809638922144722341126218587779323682242432668516
 72272297127593365190407239608295928071192401106453278389676417859068237527688061268702479082098130209555748133337115265799590",
+ "17.63569314502238470516326263369121291599530476311602312551942632147197367453450565740063340529477837047898511246509423578064402834384480758653741776487554217448890048120882374151740021127218884335694811844439800265600250694398223300364082456596997056072081674094597182447814591518597012869206867913975873169246836610063614465697362803866591699434632439698537375163084036473898998999432889645390740457773960610942456150207945696189698107672861617591631961902102633749984562887786231999882337619011135363167358579569707781483417125386809601370464145119203341253063547363214187051297856692317029052962551186785641627955744245883371655538262004480667305313046214518381362190212443795049741160960979303482021464950205131547052190765017264272814050531573073690585639119853283953724781990028021544895590151749575957759026172632598943066714388804881048874896992780339428893879211681127413333367875789222784867575425245553575988735806468612329084973662401013593996790186833873360267688
 44320636768908505456317105807294092097672788610628498171867123780698747648210099920520967511623044818811130645542567309932834",
+ "17.72453850905516027298167483341145182797549456122387128213807789852911284591032181374950656738544665416226823624282570666236152865724422602525093709602787068462037698653105122849925173028950826228932095379267962800174639015351479720516700190185234018585446974494912640313921775525906216405419332500906398407613733477475153433667989789365851836408795451165161738760059067393431791332809854846248184902054654852195613251561647467515042738761056107996127107210060372044483672365296613708094323498831668424213845709609120420427785778068694766570005218305685125413396636944654181510716693883321942929357062268865224420542149948049920756486398874838505930640218214029285811233064978945203621149078962287389403245978198513134871266512506293260044656382109675026812496930595420461560761952217391525070207792758099054332900662223067614469661248188743069978835205061464443854185307973574257179185635959749959952263849242203889103966406447293972841345043002140564233433039261756134176336
 32001703765416347632066927654181283576249032690450848532013419243598973087119379948293873011126256165881888478597787596376136",
+ }};
+
+ T pi = static_cast<T>("3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321
 7122680661300192787661119590921642019893809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152");
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ T val = sqrt(pi * k);
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+#if defined(BOOST_INTEL) && defined(TEST_FLOAT128)
+ BOOST_TEST(max_err < 30);
+#else
+ BOOST_TEST(max_err < 20);
+#endif
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+ // Check up to 1000 multiprecision digits.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<500> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<1000> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_tan.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_tan.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,634 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+# define TEST_MPFI_50
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_MPFR_50
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ static const boost::array<boost::array<const char*, 2>, 500> data =
+ {{
+ {{ "0", "0" }},
+ {{ "0.03125", "0.03126017650125595642059651621507489147877835880393069701338513042228140662868270178810496567920444849" }},
+ {{ "0.0625", "0.06258150756627501465828481747745378814263718044751609194477198396918772026898277636891147279909599223" }},
+ {{ "0.09375", "0.09402562724573195576489755283678159034525247904824579838425258406126459673745015890895186868431790389" }},
+ {{ "0.125", "0.1256551365751309677926782186297740007586657638922255426688666139272557034809288714758416649081949452" }},
+ {{ "0.15625", "0.1575341073252716106852257741724104906661974475121544257009051769486388715993896887955248205741956572" }},
+ {{ "0.1875", "0.1897286107180591328910833700730338162710122536010363055257273177325079653665703027537671734777793159" }},
+ {{ "0.21875", "0.2223072805534313308722888175879995822319104918387718270273535559005416973923742249393961682186904743" }},
+ {{ "0.25", "0.2553419212210362665044822364904736782042016388008226217404756502588831981346542579493165026310550454" }},
+ {{ "0.28125", "0.2889081724405147260015884454642448286982056723714186732378896291489603033944207768995735063901118923" }},
+ {{ "0.3125", "0.3230862443517455201183006557179619743037036164759656335249943943470835620899848486165999610265179128" }},
+ {{ "0.34375", "0.3579617388480169983883959631794471406375375900948760280972554801967920011385682070576100261097824193" }},
+ {{ "0.375", "0.3936265759256327582294137871012180981856966444080712949818309739116951585799388015457993878787997269" }},
+ {{ "0.40625", "0.4301800474642300490203296054472752679963181652078151755042924196261397876727827800621729454863519218" }},
+ {{ "0.4375", "0.467730025452391799921342706961992620413738282701114114727311802060193364671415150855360089743973883" }},
+ {{ "0.46875", "0.5063943574962298120708227547071771387085972911587370796115595547436950963394141008177411206688111652" }},
+ {{ "0.5", "0.5463024898437905132551794657802853832975517201797912461640913859329075105180258157151806482706562186" }},
+ {{ "0.53125", "0.5875973675914432213941588631578976924522062928763012976297627647411436985181631978010052165746790249" }},
+ {{ "0.5625", "0.630437673835884766852611429299775209903293946951939898251650513745196222165381994293674222073197888" }},
+ {{ "0.59375", "0.6750004851442429076631779494777229128864061685897319107997999948317524157945835559284790797708856594" }},
+ {{ "0.625", "0.7214844409909044199895178832795946807605892812145963657590722733756611374332889471678213489198161525" }},
+ {{ "0.65625", "0.770113551344208705005983660052773240245517035179766333813336659352553100285016757206110401160028615" }},
+ {{ "0.6875", "0.8211418015898941219114239653747117008753716453086877023306268412086961091026737960147423436480371207" }},
+ {{ "0.71875", "0.874858760554482349539671907932155532231782257040588572549027780010892786023906162883923961511720127" }},
+ {{ "0.75", "0.9315964599440724611652027565739364281886913399722189970823760758473440872606463942290222395451727347" }},
+ {{ "0.78125", "0.9917378983632686802568573899299023689572109767948642785884455151680071204845003794305054375396567381" }},
+ {{ "0.8125", "1.055727639411919906905928322585893795895648561782414602487481288436493656539800004691156074588329712" }},
+ {{ "0.84375", "1.124085134704560944131255965236688143403009777898521429483610660496648114350313475950507899270640935" }},
+ {{ "0.875", "1.197421629234347972339226617276609445975806623418086002265951386950959459751336541541255052511392263" }},
+ {{ "0.90625", "1.276461828982383445402617843263224436254612963462020761243811395954456362359102470162910199798207331" }},
+ {{ "0.9375", "1.362071976376228231137266640571127531383954502011184315622281795551984309995647087587519913956728759" }},
+ {{ "0.96875", "1.455296662469072910283351203225910848640458285194500237036240390915811463257413817682188441906818248" }},
+ {{ "1", "1.557407724654902230506974807458360173087250772381520038383946605698861397151727289555099965202242984" }},
+ {{ "1.03125", "1.669970130353601668362228999287655840466243330137306547430306024592587314737242276409239980979443174" }},
+ {{ "1.0625", "1.794932157265411111412512666640647365321540790157497713363548060626019826336277151761592643681562889" }},
+ {{ "1.09375", "1.934751011916103924218794082343652203808222523749686394781135509079848569244264225172363092871198012" }},
+ {{ "1.125", "2.092571276372179004423733981234886782259941716148720572913991515339894408382371607574079035650497628" }},
+ {{ "1.15625", "2.272484060247449371554848155118626331407879143446651944395567708418983252993702557436552564850427597" }},
+ {{ "1.1875", "2.479912917556758792437515574454698934001624072586467858166295252178386457324268836053055868956236971" }},
+ {{ "1.21875", "2.722205296368710926927932441765877991142333599010908457349133016162381084884183783877142234320889929" }},
+ {{ "1.25", "3.009569673862831288157563894386243931391637699606062181047618417194668052548525026087449023543493348" }},
+ {{ "1.28125", "3.356619539863437446801254212059537717694035906934171604782430676182834617443082960603002796648697006" }},
+ {{ "1.3125", "3.785038166535876194630450975067081020082611278470578710038656250838244608554256510046862645943214168" }},
+ {{ "1.34375", "4.328443997051826678273102914917348524900160978527585314859991445919675557868173766988955991311583481" }},
+ {{ "1.375", "5.04191525648136332110647205436422898660842030191113551461354742130497045161358084541551547909572374" }},
+ {{ "1.40625", "6.02236781523945747670227618692239447637023828129226996489330674807031833318199939459376428890858723" }},
+ {{ "1.4375", "7.457597366497314807346683309400119820853357043059007743950216525315136075258562571085388447049580691" }},
+ {{ "1.46875", "9.765431722939984318153137075537986427219225446494026346174651506537333303940271000197727980305021618" }},
+ {{ "1.5", "14.10141994717171938764608365198775644565954357723586186612326758608969627041415526864870292630944229" }},
+ {{ "1.53125", "25.27361509038201021888564593774203447137999639112919943365223977030408052066444435679945642193151117" }},
+ {{ "1.5625", "120.5325057225426126499709994255564804478992494692406282802019970839232698437518852292295322760051977" }},
+ {{ "1.59375", "-43.55836040673973128976461522014256814059799632626649998645431997677346427573993827534701436489680689" }},
+ {{ "1.625", "-18.43086276236962258434966752738448975654856844592479276671012332110139541995382323486170528839748939" }},
+ {{ "1.65625", "-11.67374867215481348216513536293945130766869617358776549669176281104274968860961548954064974733991076" }},
+ {{ "1.6875", "-8.529773993911653209272999783778324026196719414411590092375294867302897481134537117581472896391856125" }},
+ {{ "1.71875", "-6.709482397820695376442251396240149572345307174060614879543507453718786710576833294867753884694537068" }},
+ {{ "1.75", "-5.520379922509330168089935698420205500301122430036809938027371836902288281994865833387763391132527793" }},
+ {{ "1.78125", "-4.681280325336429567316481395066494078522124421106252324368679821712511116596067067167862140573504461" }},
+ {{ "1.8125", "-4.056414052170035671394695838412072312925972547334020477371203912084804008892977770267448199074447777" }},
+ {{ "1.84375", "-3.572185661861125859870109039981697499670205624150737204067785923886464814599307447743073100872203818" }},
+ {{ "1.875", "-3.185238919501229169914672833591055563068190813252958079987355697225012578404488535638528315769681186" }},
+ {{ "1.90625", "-2.868371726567042158384165205507273428429609298347592604875428057959086996590505442480814626239318494" }},
+ {{ "1.9375", "-2.603652912010850547260718033703880538638622594696262109914178307203938532760442947667909676035790898" }},
+ {{ "1.96875", "-2.378782114044268462754557076702009514149544247914950239975234530609231791907385965883627186285245033" }},
+ {{ "2", "-2.185039863261518991643306102313682543432017746227663164562955869966773747209194182319743542104728548" }},
+ {{ "2.03125", "-2.016072402071886080344963601799448100479409508905552305715636690184075224937451135890591580854847922" }},
+ {{ "2.0625", "-1.86713988123437020407782794323860043132451055327769468817959958079457004467338400013589662215485346" }},
+ {{ "2.09375", "-1.734634103946532053863260773540976834775727590591832428183425859927779370855756294581920109583545138" }},
+ {{ "2.125", "-1.615759423973460045704218998135983105718634789435135146363364502252797531256854000679335498343468236" }},
+ {{ "2.15625", "-1.508315836353881219959349807787957061590021089263168744744644715237923771519750208817662219357365791" }},
+ {{ "2.1875", "-1.410548011813148830578875195416796900655621273730614063607851296345238287109255775298602026828637775" }},
+ {{ "2.21875", "-1.321038011883972941371242354544773427461451983076687172335288474134737150563349929598365091185906691" }},
+ {{ "2.25", "-1.238627616224096475286573358483115818987811679840895892063010057942989763968416082248247538779346115" }},
+ {{ "2.28125", "-1.162361144121629479886631062456510653121514437736910570208484412489182649570861593071569298439919991" }},
+ {{ "2.3125", "-1.091442725473163592445273166049218471062020679322657236270267019564600575624640388147984118518979059" }},
+ {{ "2.34375", "-1.025203931548868392935198625444103909279764848147237361743751176005185409221197679274034521026108332" }},
+ {{ "2.375", "-0.9630789471610371325783309326887526239686440615099207880230611368370468000350460791927023591069451265" }},
+ {{ "2.40625", "-0.9045853091742213054875350240709441597937968403208608690036487459318455608785453421438664490396695609" }},
+ {{ "2.4375", "-0.8493088059488314622450104194218363224080665638942044768228802750401486144919082454646163741529209686" }},
+ {{ "2.46875", "-0.7968915235352686521345041809817019192899787435677815043081356746793473472915009329509869865385574704" }},
+ {{ "2.5", "-0.747022297238660279355352687825274557904116956883011279066593089700271855760843718388592769933778409" }},
+ {{ "2.53125", "-0.699429020084844342139783831016239425344370000759297142831905446726651787263273111657622358057530982" }},
+ {{ "2.5625", "-0.653872397910572369605836837404416068498526729423046632151562590225826018439381877458767572737519508" }},
+ {{ "2.59375", "-0.6101408409895599924272199138429116429964861640554001463611527892708422318404310839955568952517348978" }},
+ {{ "2.625", "-0.5680462555551780726648895974757705443146437970424414412380682777625097984947690751561280498460825515" }},
+ {{ "2.65625", "-0.5274205529869757121326571336563206310413652365485599902702063856643631953989601868253259786432770197" }},
+ {{ "2.6875", "-0.4881127351190876547388242189029165584838796506348536005759885166591812246270986452391896414818116207" }},
+ {{ "2.71875", "-0.4499864448356251166356611982487791354890745233650543094554613558499691453012194865420102877343872536" }},
+ {{ "2.75", "-0.412917894484932487763966873261129123736255820362062889934249403216388494265361969753200463293305801" }},
+ {{ "2.78125", "-0.3767941025635464453019403649599866905758314392515266200296815335892123350214817069316692446879993786" }},
+ {{ "2.8125", "-0.3415113829599005939054709337126887266408130303329754956325710946559071503247227755879401227074384719" }},
+ {{ "2.84375", "-0.3069740418053874743538801719778118186539092328300496832334808000582741898558068313989599567333495833" }},
+ {{ "2.875", "-0.2730932453907306446782089914481699536905769611886147850801712661656164014954781669815730570254890551" }},
+ {{ "2.90625", "-0.2397860292133634315864717364763276794949749917725083450148739709007738169658284872978100162537831057" }},
+ {{ "2.9375", "-0.2069744234334290889140606202259876249518274239071734165293810142417092926391409078539182667795178826" }},
+ {{ "2.96875", "-0.1745846741378176862031217701953393007964354401947395498383109594878301292911980508212117939922029155" }},
+ {{ "3", "-0.1425465430742778052956354105339134932260922849018046476332389766888585952215385380591060583477669114" }},
+ {{ "3.03125", "-0.1107926710961848652307179061543482824777047419183290635786540267776792824053626901819122659270065422" }},
+ {{ "3.0625", "-0.07925799258597813975964847855303205226643624625818783981886842299834648957527837719024324414633813629" }},
+ {{ "3.09375", "-0.04787918970239737242913390208792864526960233706882073548585416320272138422285616307162127608218497512" }},
+ {{ "3.125", "-0.01659417649935840190191646601956655481659118246051776036792478758448298530865094236374141834995963483" }},
+ {{ "3.15625", "0.01465839615112051363829193218735346545420611046761168233490628016451488745447998876530695315188732072" }},
+ {{ "3.1875", "0.04593962329265888212191655478619122278727029224118607262776824432506068644004151566997697327162767079" }},
+ {{ "3.21875", "0.07731082437922182842323045510047455560710445548270932232603347976675416898602720984389229982663062937" }},
+ {{ "3.25", "0.1088340255133297195139603974000083015109646348076838424061656004036607221464457317348103204356071731" }},
+ {{ "3.28125", "0.1405724535178196442425946789234394740490046721659763531803771463602023716095051057689530418533761391" }},
+ {{ "3.3125", "0.172591050272744891901962315250310519786980119755314731828011976218754514667360156546007027602360458" }},
+ {{ "3.34375", "0.2049570163396922924222670027465798026391019465616329916778651389384367221289434591672530287680469817" }},
+ {{ "3.375", "0.237740393762143806988724415397077124401764815151774813277613941354927085310634989951327775643776322" }},
+ {{ "3.40625", "0.2710146991120596316784994914008470605846614604634004480958302230976152416477575814862222371539690966" }},
+ {{ "3.4375", "0.3048576194048116313509686061976383012732471442214687629070980813100980504220010433668547826451536192" }},
+ {{ "3.46875", "0.33935178550149794902043849733017382894738729159656755127388089028458110314950118486374283672385814" }},
+ {{ "3.5", "0.3745856401585946663305125799891473884508822842892592306930231225774355972615263725457922224498281269" }},
+ {{ "3.53125", "0.4106544211005646795132687105613188412302653916099336518744517138690111552283413041415216571077234329" }},
+ {{ "3.5625", "0.447661283553583556404846819303519593092219301719424669894622854440119111664920988209774876249304265" }},
+ {{ "3.59375", "0.4857185918149514991806435613800961704649349211376530235980832426061445834319868210377502054789684188" }},
+ {{ "3.625", "0.5249494159434426029201266393240939090334746308513972623727472919160131375298663507047002581644827389" }},
+ {{ "3.65625", "0.5654892779403682511970427653303379875705726194565986095362182202060326386665976843463927284690694492" }},
+ {{ "3.6875", "0.6074882023842700195137806696254362966726637333828709216522375901698082716779542882925451551904376524" }},
+ {{ "3.71875", "0.6511131401046877694771154604832169765858772246556092408841970307496747807017677126165226354908150626" }},
+ {{ "3.75", "0.6965508511114601330600221624003410002384063251948773727536766307711270568580190864635818668189622464" }},
+ {{ "3.78125", "0.7440113559767865266278722337979770721544668975249127911732590346704528413537145792818180362367062195" }},
+ {{ "3.8125", "0.7937320950520845038640709755691971987193904745863880210276991068348251595048327258835950484424829585" }},
+ {{ "3.84375", "0.8459829748791345210684014414635237310065611239815471815195561711011715779741435605360151278986068963" }},
+ {{ "3.875", "0.9010725345768489830226429310383860542057548011724428357500976339946729939388193110037885928433616767" }},
+ {{ "3.90625", "0.9593555370605378999830231072930600308342084750238673386763085477722047681353378531697620720257631096" }},
+ {{ "3.9375", "1.021242388200347736200680021836703924511025898807046899043703227626470466798902950286611342705663006" }},
+ {{ "3.96875", "1.087210922446937924973630130633474302114867753655250594086911814333271884554141747835703519160797518" }},
+ {{ "4", "1.157821282349577583137342418267323923119762767367142130084857189358985762063503791325897570132020188" }},
+ {{ "4.03125", "1.233734886297294089608083483431716940428204649552146125435266924766182484146724296986257289579785258" }},
+ {{ "4.0625", "1.315738861236497278595002752513023767487817470172494220905161864739955592222079472915707284820672627" }},
+ {{ "4.09375", "1.404777873409928816791398747372142291632709052730067982243952454765008272213717678329031865335794425" }},
+ {{ "4.125", "1.501996112821481350670183703711495663471610930233216088609964712367465201389736354667815373825067405" }},
+ {{ "4.15625", "1.608793425833300449400383022559449738336897468383397721431496100147808519893555398680197430417094739" }},
+ {{ "4.1875", "1.726901492741173774258474522465444605840834193796631414995320087774658896048364103982815258692096685" }},
+ {{ "4.21875", "1.858488933532261262387603943116424040560957193049648082245398381173590809878153982869279424951736518" }},
+ {{ "4.25", "2.006309027858059435312199733843025004203991000201116744630971025635743461495678364523854925961565933" }},
+ {{ "4.28125", "2.173911671176453464233801926617652208987805422324233358984523813313677124319401603031463553334586795" }},
+ {{ "4.3125", "2.365954706436810886261405424430153147538433069393544616996159851851045098884294543485330531184033036" }},
+ {{ "4.34375", "2.58867360110912318951821732893635523217217883697807084314676743075156168098379747192932679404932885" }},
+ {{ "4.375", "2.850612135014197347464512007371469511624647336547380863597026522958389351638925329325864211361675359" }},
+ {{ "4.40625", "3.163800603288976619542297558662099459127776345948257172928079751633780670148333702513937775996967237" }},
+ {{ "4.4375", "3.545737656638732611056781822478653525618506322500845353570490033964184425114602742381228738013800916" }},
+ {{ "4.46875", "4.022897320897881433471367965265766624497222626661161034375557752511167850308209715183529923181209519" }},
+ {{ "4.5", "4.63733205455118446831908669495962673002033167604849908135592490784364853630436659035964429989580423" }},
+ {{ "4.53125", "5.460110732358225081268571201584576241967507554680233568022847841671382048904153089722943992228366072" }},
+ {{ "4.5625", "6.621566538917184779658822397475662809951450423939232173471067230932326374886115835513736745573657993" }},
+ {{ "4.59375", "8.389349373172668043480112406855801804399985563752529469857319424831372393351619823015010870227400011" }},
+ {{ "4.625", "11.41394586984414667039249686700424655784704375419079662399301751232175345550471908433956600220150528" }},
+ {{ "4.65625", "17.794217921195291872116110930917322871062931030345133311457707064544221956249568351463091932558272" }},
+ {{ "4.6875", "40.17012705640036449304190879290789586501901676251470634007061519017512737181345480527620292167336129" }},
+ {{ "4.71875", "-157.2053810419425516610333761767147984621064081691004376958977511691902151494982722512124394464246881" }},
+ {{ "4.75", "-26.57541423100021444925624133456621507049828719711987551420375127874685894467704404079281767156965171" }},
+ {{ "4.78125", "-14.49904303397407169401387138739025359024482851876427547784737429808056788404653273313794074954104547" }},
+ {{ "4.8125", "-9.955517692663199659497301146983549868138803040917546840671025802878897403111578981570237166977305366" }},
+ {{ "4.84375", "-7.568770928466597669950125714728032038595443682400782384350047230172533622281584347829485301888539665" }},
+ {{ "4.875", "-6.095345265174791895543529207308251915058396610943153120402963827367536675687235397631104150517714925" }},
+ {{ "4.90625", "-5.093551747761417849838605582864480592041118085930024194611183352044275362666663197560756285563557591" }},
+ {{ "4.9375", "-4.366960809832423113382187614785174399552256061595826665894310062349100292377458713017173941901099366" }},
+ {{ "4.96875", "-3.814918596744426621193354615307784649480559936141816068738250826073519922812423391628708426424484949" }},
+ {{ "5", "-3.380515006246585636982705879447343908709569208285459877176820980918346010201206056831791856009410428" }},
+ {{ "5.03125", "-3.029148102302771164961521436423971160566131129828714146460894246137584114582867735365596418294127015" }},
+ {{ "5.0625", "-2.73856823245603647865430226656274757425295307326689315789016177502179223572750955725123296691662252" }},
+ {{ "5.09375", "-2.493817050876063510228483889992811590654110757263765873027034424090589388194896708294715609776449821" }},
+ {{ "5.125", "-2.284466361999853132376034939699606124682746442696980078901017290742647881722505799438755300967817548" }},
+ {{ "5.15625", "-2.103023353734157432798966856819893312894278382156270431204069828145019096032929826221618815522735662" }},
+ {{ "5.1875", "-1.94396519241478443283285298645374010314101176847753574637302261542129293949555826361500398886874374" }},
+ {{ "5.21875", "-1.803131092461690600361529359360266463729989122374270260332052248390551413451160551386405337128358437" }},
+ {{ "5.25", "-1.677326406624389127684834446781355734878514221167662440011355600468562011653802826535309338734910053" }},
+ {{ "5.28125", "-1.564057206075927617852462348582481289639348906743456817576975327632362277790709160010002260498590699" }},
+ {{ "5.3125", "-1.461347784441303570775301256747389266430752496556055422309798378517676612642129660840051802732712867" }},
+ {{ "5.34375", "-1.36761235448791393113713404156603997628029078648313063442112198771680848353561063900933679869893461" }},
+ {{ "5.375", "-1.281563046345464215429873432637423222317866003116950751512613373376845314748305445490135781753417754" }},
+ {{ "5.40625", "-1.202142762311081825673780483344209940977316276937937096782702116019344314429792428912212274465011549" }},
+ {{ "5.4375", "-1.128475389186388730418668294914420100814289081230956940736485357975544285270667364906582995184004442" }},
+ {{ "5.46875", "-1.059828347715565927266867602143137996921061876523369816266086983272908895834550263458873978282357056" }},
+ {{ "5.5", "-0.9955840522138850177019161740702867286905993509040201421089147368547994233084178348523042915084083077" }},
+ {{ "5.53125", "-0.9352178996735373313249149491276249977722839556692437323635652451207536878974422360418217978053551773" }},
+ {{ "5.5625", "-0.8782811077026627420028846442823333510762218192932291958379466783448865095622083395150126065512344446" }},
+ {{ "5.59375", "-0.8243871973186229222115460053416379931615277523370335469512772188350449840600638037662602397836368723" }},
+ {{ "5.625", "-0.7732012463758734614771474685457909254527078194270700631060606366411896649393019485319264721701600447" }},
+ {{ "5.65625", "-0.7244312708999757737148502388902211557937330882505616499576249426224616653330080051888518816616123148" }},
+ {{ "5.6875", "-0.6778212563139696041943536024958433042316769928076303165171422834039846729764625273526488517789737417" }},
+ {{ "5.71875", "-0.6331454792161440424929262529011204753164261484247750443857435235991899745283883164285814469564729784" }},
+ {{ "5.75", "-0.5902038468644901054170195032663081108054249240846444267071062035473153343668376567479794165486184472" }},
+ {{ "5.78125", "-0.5488180452487470465583585186996023704202388711137425402809495353782052794835324270116435144444853907" }},
+ {{ "5.8125", "-0.5088283340526268433264568968479225952416460593340160732760808861658301198202358775409378607410253813" }},
+ {{ "5.84375", "-0.4700908624280941936361204610007198415053847982327139590868905985009927783431252538270334618349713453" }},
+ {{ "5.875", "-0.4324754064907757695440115128522408464584984965503283137576460100497915888775090560945910034482914049" }},
+ {{ "5.90625", "-0.3958634500577715728387322802090283590444850041488349012771936138475077409268246305105488709941047507" }},
+ {{ "5.9375", "-0.3601465460097104261765989532960199175446047549989388477273964911510226366930877544365028188123550406" }},
+ {{ "5.96875", "-0.3252249079465421281971924062604461228563045080514509080291865924060718896122952297947720584304400305" }},
+ {{ "6", "-0.2910061913847491570536995888681755428311555709123391316088271933046559131122021519996248059475229616" }},
+ {{ "6.03125", "-0.2574044312501190948926553260844066507272665964422420930835303888833069876363053415593229084989769505" }},
+ {{ "6.0625", "-0.2243391083295019990486082083153394557139168759436924449745473819036543999446390847474833972561431122" }},
+ {{ "6.09375", "-0.1917343220126000636733861789852210342976612418141698349764104452472624060435608559813294673409175422" }},
+ {{ "6.125", "-0.1595180503486741129487427411798597329274963598657430717585348638114328150730071113710855848882228728" }},
+ {{ "6.15625", "-0.1276214813658537291522157530092700353508309312306960197241502999632222071779029887930485312029959035" }},
+ {{ "6.1875", "-0.09597840190639155007190320592294119000151190572960121328263061886000450929267149036536453259308092125" }},
+ {{ "6.21875", "-0.06452463203653075216342354397349405171379838323909874171208799994716724111404978040328803565744248937" }},
+ {{ "6.25", "-0.03319749448301144438419631194317525127766038457693080701966081495473675499225984399367237591921526005" }},
+ {{ "6.28125", "-0.001935309595765553843691829525274435788517976054625627169224279956186864996201309127614969112751901202" }},
+ {{ "6.3125", "0.02932309291350979792274199376680897224174579057648744678958323756547521586508413864276599103614351545" }},
+ {{ "6.34375", "0.06063885372047505801221326406404454670246033034497805406862823133882341608599003383282431176702261307" }},
+ {{ "6.375", "0.09207356314350050835492397132807778236841887606137324897895572241559097713132233298612222140840431269" }},
+ {{ "6.40625", "0.1236897479096077296070838372979705928368188283231838414804934929274025398571452124588393065510099759" }},
+ {{ "6.4375", "0.1555513736514298191439929689618245053471522825437403514671018199418895089031472964835239198291348668" }},
+ {{ "6.46875", "0.1877243718114725376401948692378642961122451437059168414418744613043681130520375192781612678122611322" }},
+ {{ "6.5", "0.220277200345896811825735903245910395013134783433298671312565971040207859095962733489570927809983752" }},
+ {{ "6.53125", "0.253281448628424489171015810263074415662213222146436493340123226398154356922736152388141063544543841" }},
+ {{ "6.5625", "0.2868124983022992902396435016696204994189572656467726352599962917225918966603261177449285587256173481" }},
+ {{ "6.59375", "0.3209502535782458942725336084114371332732723992168430541003499245591367871623197594684565991267905584" }},
+ {{ "6.625", "0.3557799567143647005420612267605866339037398845912245431900523492992941964222774204935357299525662811" }},
+ {{ "6.65625", "0.3913931072527633586303310805574337028074307951034635414359349547707586122479246892158861767238081689" }},
+ {{ "6.6875", "0.4278885071761893999613016206982314187458164558702387841850210320754507932238151571774989545334487634" }},
+ {{ "6.71875", "0.4653734586819128141559933341200671578345456984030117446615279672146457039797505409854792515433603876" }},
+ {{ "6.75", "0.5039651470083475548132524571742890116543823430974166616625221219450482100216791892806202009417424483" }},
+ {{ "6.78125", "0.5437922480355643338730870787135605883829637094412174029296025101763018004204025974330398781596165429" }},
+ {{ "6.8125", "0.5849968096716556782374159174641655681779685895667304240747256104820508784969531169383146463204412289" }},
+ {{ "6.84375", "0.6277364679474334892591612082171255002710958195004825881252644517358490289176441185242244713866378973" }},
+ {{ "6.875", "0.6721870741034611638659173114401257239025537597591200195749563598359978601937626091399638175089362186" }},
+ {{ "6.90625", "0.7185458288995548400076077740862700950460682676000352992576300205153430366069275776925317595307700138" }},
+ {{ "6.9375", "0.7670350464671162556530262845461572442649216262010355745804068537455730294466119988902478588983034749" }},
+ {{ "6.96875", "0.8179067044246350052260597321820256016080683284701549230268748786223049718597359248253027839270497755" }},
+ {{ "7", "0.8714479827243187364564508896003135663222034245984200644480154523301674476556679351044748556811165168" }},
+ {{ "7.03125", "0.927988055100702558366453168987743089267307369461721117972360539733706484657902890137954063374826404" }},
+ {{ "7.0625", "0.9879064802291251594676053789880311203133455080943572829265181459625625927973428370265184881799942024" }},
+ {{ "7.09375", "1.0516436537462216418830263449985522705286903110788757629051396054699693751826899237943523838887297" }},
+ {{ "7.125", "1.119713940340697920929231941973033073135897434271449197914919579212768620587877263960959541708252549" }},
+ {{ "7.15625", "1.192722326901007588684149485242155872646533354464514409876904886587006629927655098723914331692457874" }},
+ {{ "7.1875", "1.271385753083766195102512866837447084316821755807112034055075019301218550802923593730276046614253933" }},
+ {{ "7.21875", "1.356560730687106090381626490498188582130942795512557181635747233593968595718598671759051546605979157" }},
+ {{ "7.25", "1.449279530126825400966804908182545262594041927922324311633865090981669827371184783228521282728877249" }},
+ {{ "7.28125", "1.550798206734497978345598394969907597227586253061565831974177990152095709794984147425013361851865459" }},
+ {{ "7.3125", "1.662661250535958572647253880444919849918733690439628459569418630367100238120581497993662350014826086" }},
+ {{ "7.34375", "1.78678998697496418766617671089138013384203233815466866101103271149031802024685694556034074365409757" }},
+ {{ "7.375", "1.925605576103531021088436315604614476223254075602410795428544750301783382496712246458936951616523844" }},
+ {{ "7.40625", "2.082203514638078116771326575602059859463528643293617740928645387731580498162533103205305011512631601" }},
+ {{ "7.4375", "2.26060669237264261355866723509904048590096081733761353611694012356866351200745710198451308329107618" }},
+ {{ "7.46875", "2.466141609729379985621243345839389610788373993111041429799962056660510586368685947727836988290301937" }},
+ {{ "7.5", "2.706013866772690776762802272387995008883446304522264964682388787620940583840910641036913840080466461" }},
+ {{ "7.53125", "2.990217991868365275378986251269668199642886675694545360724616292050097614350992705530127905271866877" }},
+ {{ "7.5625", "3.333032524336291185691514966848310245587002670642998146766838315216031204958906362527023258344720302" }},
+ {{ "7.59375", "3.755592314437586774843968169016218401146579356484719112952387050721790775719524338750656820475167322" }},
+ {{ "7.625", "4.290567124941375634141691032410770755182292184491365711713765284134592087921445364428118108025228059" }},
+ {{ "7.65625", "4.991276730757292357917427430609014256293569739250152073504758948209194194425629988371488577185989884" }},
+ {{ "7.6875", "5.9510718925579227833281678276540391546652969268664831508775318977823975271243707799244732578159289" }},
+ {{ "7.71875", "7.349587230185289251288167334999299680627536804325241700547934306594013397091284138506685042660382893" }},
+ {{ "7.75", "9.582397403456211211397313849974932847186773522851876679318331037683816539880381009086487008735246101" }},
+ {{ "7.78125", "13.72492306901017608779850845108579464520662673186624419937919970195919428249551440291202224739747059" }},
+ {{ "7.8125", "24.09322543772519084215097143980037097594901385135011887012038200799428585198794379628997732285582328" }},
+ {{ "7.84375", "97.73268930511967729279698949083284985794762903146492273796908122393941623833579266193628175149777252" }},
+ {{ "7.875", "-47.57043136522765090736927872199715977332175052521738553413789183297556632881030788665564177584345509" }},
+ {{ "7.90625", "-19.11460505409424788533123395282424237931209756369617281068252559403871558997768678144456749005346186" }},
+ {{ "7.9375", "-11.94556191307435573940630678240021478719574633441063345522218692801937432207824662871635357235633214" }},
+ {{ "7.96875", "-8.674912622365588398920385347547421582720453172032529527100491584226967033946983107374195473719464544" }},
+ {{ "8", "-6.799711455220378699925262759608633364881412661473712848121891484119304982720857546088989511220313601" }},
+ {{ "8.03125", "-5.581950808689684669549294209348398629337304002995630540331278821921778288507014685935916701606576575" }},
+ {{ "8.0625", "-4.726032195156837427410372612416284237028321048638455837876262548466898310633589798461547191163836986" }},
+ {{ "8.09375", "-4.090461187975555242897409987452358342061343516721018283559611963305885456193756951211377465919516297" }},
+ {{ "8.125", "-3.599001897974260972151248247566727216299014591900000335282979733754229851045581086180509810930082767" }},
+ {{ "8.15625", "-3.206943184854794792051938572955176223102804950834430935020353335808782541779058955201736266932317623" }},
+ {{ "8.1875", "-2.886329592416760158849088002905458575851623094189615497250550481681316568867901585210424096370674517" }},
+ {{ "8.21875", "-2.618783945156319374614290552008768448544289531418583013216952580114253625700948540561589098351543348" }},
+ {{ "8.25", "-2.391728174447109499408796092049518207948088283366738019362364536579358984891061627461448588900266354" }},
+ {{ "8.28125", "-2.196262571237231366422169733787602194377870425422442983742466664711276453593062387209663908411122531" }},
+ {{ "8.3125", "-2.025912262702788461190762240682190168816613310552683831653429045356666462021227127736084042613847923" }},
+ {{ "8.34375", "-1.875853575963005310284960792984729880727224645450131943927210730483841090952411053279594957173517387" }},
+ {{ "8.375", "-1.74241880761627240539700340437602803932808901813845968268891377391077356174950266498464542879686652" }},
+ {{ "8.40625", "-1.622769124048113033597644536164719722449235338830292053581380926565132897863391794369515824501033615" }},
+ {{ "8.4375", "-1.514672563181530134110926429438194143845293739750523302549165608155316405124742878421871789886842147" }},
+ {{ "8.46875", "-1.416349739641873214089748540260482127074454913435673678582846741597865860350934848935327297727726336" }},
+ {{ "8.5", "-1.326364327785606923837177509628989183019847616858933039728626565320594601352898256466729337047543442" }},
+ {{ "8.53125", "-1.243543859514378322699255610900405730249411506966951588519354941299030591219071989214839064576899506" }},
+ {{ "8.5625", "-1.166921477042600182902656425322990210134485019242760863805503078706720819497128002394896106356209544" }},
+ {{ "8.59375", "-1.095692443843841888393214442111438580869887527193049760552789795233066505667689248095554577112371625" }},
+ {{ "8.625", "-1.029181226242794530622671562005776602295969084821805226400002870767989174122034536280082461534287795" }},
+ {{ "8.65625", "-0.9668162629797675117200288525867759956705289684684092618655305272884560415249588622588640534660859208" }},
+ {{ "8.6875", "-0.9081104046373177832576347663891532295331575111187881417687389316634049160994876797510769206182893432" }},
+ {{ "8.71875", "-0.8526455881926773939956486059670750827771160223765816890633669305249823793389660138647216198961396045" }},
+ {{ "8.75", "-0.8000607122131663748996935033554250873516322431753295881939448427095672520914736920285067785494755945" }},
+ {{ "8.78125", "-0.7500419570576314664068876238355166376078921127752475362685197014336164568978380363973382424380027378" }},
+ {{ "8.8125", "-0.7023149914660190721137439943663886714896255005161995584377885528996116609571672651781263426423264383" }},
+ {{ "8.84375", "-0.6566386479456336287953742502996364274330999062289317807304964691314686325574451710087769117377447232" }},
+ {{ "8.875", "-0.6127997515327654285376783646363991279819055057055158641281938301880811035156798875165049539694804864" }},
+ {{ "8.90625", "-0.5706088613603129182915651449940477497513792905530365057563881633464714239146849295760180740616051507" }},
+ {{ "8.9375", "-0.529896739873168003806242065594283411489762262385879653776325422716635759568492302090915293632301029" }},
+ {{ "8.96875", "-0.4905114059515517049978410600006085544703557897386518199219966407731976599471950962402695227799723485" }},
+ {{ "9", "-0.4523156594418098405903708757987855343087169256619843288072463344895615552699928891423222740611696987" }},
+ {{ "9.03125", "-0.4151849883541607117552210974950947708368354992200219503945689498048994961045141832240492234717107402" }},
+ {{ "9.0625", "-0.3790057881989822857530457874776947516302198077664862408128815699029163107706671425087481058924528226" }},
+ {{ "9.09375", "-0.3436738369929040836550521796260295565231979408984456062837271050291411394204206333260572683795806063" }},
+ {{ "9.125", "-0.3090929803907614767471346771315481283472474354946281905565967857578879461207205702332049986857635056" }},
+ {{ "9.15625", "-0.2751739899376987485248300510983424723605373451217689431344224438486165931202115441514245211478398115" }},
+ {{ "9.1875", "-0.2418335641420615678638155264698574025131647248333694816193249713183100110082265076470052022707012095" }},
+ {{ "9.21875", "-0.2089934473583106794872121428783074116994340488341375724854578952783525682316496422613143306038638671" }},
+ {{ "9.25", "-0.1765796456511299761112751840598406521389487242985432214413528930195762314982591148356765022144220392" }},
+ {{ "9.28125", "-0.144521722122150591814619269577170465800891448238859437753351534510505894724788264050561053752147101" }},
+ {{ "9.3125", "-0.1127521567973819422597203631074129348120757432615503831725905368424112610292538623181492998345439551" }},
+ {{ "9.34375", "-0.08120575823178342176032872038448411443172784451696952348584885928982452335749552547386985037617069992" }},
+ {{ "9.375", "-0.0498191155899860392003104787951054631853528180570175470879940653716436714322811615959161544657494618" }},
+ {{ "9.40625", "-0.01853008118625405320915271202115144102822290582324439033642733950763784110773883754760179758258022532" }},
+ {{ "9.4375", "0.01272272563027105977935573889462983744829956962204063464126832673322950722546841176709360279348538747" }},
+ {{ "9.46875", "0.04400040173584953885682440835958114627885199630660893827828903912727543614728912707303196060753625141" }},
+ {{ "9.5", "0.07536423875739405740654014205323665789342966267450384287846707728875924157814476147945907817392192786" }},
+ {{ "9.53125", "0.1068762048461025163674352287858142449224256724379234993543813605972685100190359293029737215855453465" }},
+ {{ "9.5625", "0.1385994377761661718602480104778901941178589868631124656851160671189176086579048746331765092114253163" }},
+ {{ "9.59375", "0.1705987577719601866335639057437200427987763331813918550294340474134857881430332967127222805799022305" }},
+ {{ "9.625", "0.2029412090417411123603662227278784038776298381618810811646084653751029723759416476460088872408054991" }},
+ {{ "9.65625", "0.2356966398441474632357392833080328068352054698543206659897268100728097017667724684606559049124154157" }},
+ {{ "9.6875", "0.268938332074403309291166325486527607211725274017137932139784676368590535825858340593417854926297648" }},
+ {{ "9.71875", "0.3027436928841933821970886411755473788376234496119460628913545818204169198969541686968930178216130025" }},
+ {{ "9.75", "0.3371950228159297335621484819773554194812863370480952763499236064163820830033268339692324715894157813" }},
+ {{ "9.78125", "0.3723803774359345699506506000690612357176932379964207743390433297005778841484733220050565284302113607" }},
+ {{ "9.8125", "0.4083945426204256871181400863951603330453056915705065091908373104020696107020950522244595815242992" }},
+ {{ "9.84375", "0.4453401476523343154827952361952568691359033281221121303793343966901885521315031273219697042193257942" }},
+ {{ "9.875", "0.4833289453490298299990038076226424305503958067355696981733291906588949898848660168661363237230401676" }},
+ {{ "9.90625", "0.5224832948561672053074357426518017813969502851835052528668887798173320745102979706674984553747785107" }},
+ {{ "9.9375", "0.5629378909036186388354128640753191217895638800506841967942363059454826038558876839732857927717227769" }},
+ {{ "9.96875", "0.6048417937509008993401606503437317082375426212574423350794174057182764889826011397690814642006452007" }},
+ {{ "10", "0.6483608274590866712591249330098086768168743429837249756336279673958556003746239008717172062971522862" }},
+ {{ "10.03125", "0.6936804314743542712398847790886887683057558913351293442530262309817850224201884209136086813403394689" }},
+ {{ "10.0625", "0.7410090731101333158449425961247175839017373828496178608167740610459452518219259199024083200316084101" }},
+ {{ "10.09375", "0.7905823581871925973468103245168030277845433796367670128316098222165598426689171297882306893568062531" }},
+ {{ "10.125", "0.8426680163689236497241316220032744251657095955743734411730267063148126128540903336099720150350195161" }},
+ {{ "10.15625", "0.8975719901861101829801016952033465293839624897512338971033212391126217276476390113488747550991133784" }},
+ {{ "10.1875", "0.9556459274758633915064588099748061258315512098776637126437164255246444193412583209025710708854064641" }},
+ {{ "10.21875", "1.017296473311965646505591388794303117791831049823203228782533350726187433458132860834038283268836837" }},
+ {{ "10.25", "1.082996890215945275135930985916637983213229101767681562664207604721345006616414244816945101012068962" }},
+ {{ "10.28125", "1.153301720414501166084164165377670663086784905305525053523750216145961391216299317767459210812275763" }},
+ {{ "10.3125", "1.228865465058231603544476514726969780448778330773071834149679410133713041325810373844792660869193974" }},
+ {{ "10.34375", "1.310466629156747359552320115718026861262813059499884349607868463460206624928464716803324337065850131" }},
+ {{ "10.375", "1.399039024262115717131604647733708995170160567832938194238903453989697561972061091597355404503662754" }},
+ {{ "10.40625", "1.49571302349195916111981867105861656396166182988283681852423319036111614206596318006249059781485835" }},
+ {{ "10.4375", "1.601870670512520509271426433671643695090231605946938642547694243879213679699085414650549829075718711" }},
+ {{ "10.46875", "1.719220395521651499721208794808194478968865549194510942718291121399341439043920644901884496910696737" }},
+ {{ "10.5", "1.849899993421927279907583573513910565419553685959044018741794327382830123593588324994882461965573398" }},
+ {{ "10.53125", "1.996621179417850643664093294309064624983038139124591902589207528735600835709855269195187933895652101" }},
+ {{ "10.5625", "2.162876723677546330469959787105963848827689014945066557592989408260164364548287694286197662196239537" }},
+ {{ "10.59375", "2.3532442330793790868766441879841993750130572630209439743618231460831573709883106394866434440837641" }},
+ {{ "10.625", "2.573843631271674362526537866893410697197766596999920083319154750577002457483161716337803596844925106" }},
+ {{ "10.65625", "2.833047421190427952095570132770964879184235914846751261896726812931990128759669900544999535061769791" }},
+ {{ "10.6875", "3.142623220176844496098570587446827716363816198180813628746017544330426339542323699691642256030772053" }},
+ {{ "10.71875", "3.519650155321593637030342256680131753850278370827948246193900683195030354927519452141570420409057437" }},
+ {{ "10.75", "3.989898450288877172272878730129464264004901452428968181149190336688176169073686050444717716156454253" }},
+ {{ "10.78125", "4.594165609870243515783279467995060486532380531283432068617070247011706442921648714627407953983920726" }},
+ {{ "10.8125", "5.401101953070107889048337369479695723086844105989269027204537226522869955593746957868263836003479647" }},
+ {{ "10.84375", "6.535875415517406207251199308597767679104658091064327476058394143828942638073632382427758536504917985" }},
+ {{ "10.875", "8.253411766339305537723460693388679535974907155823982004597806731192500887738499761977958603336992426" }},
+ {{ "10.90625", "11.16537284500979684723686544686940420453225367789354062936636940962591367864691678374577954865828186" }},
+ {{ "10.9375", "17.1999620041711094734838984205883317149769089588687370821690524219299315809266573264745104659869829" }},
+ {{ "10.96875", "37.27070620721793879698276661020742630154681506539144657714408230209752760393928366701053772541231071" }},
+ {{ "11", "-225.9508464541951420257954832034531539516575098851311946310945881123661134104031654779989090875181672" }},
+ {{ "11.03125", "-28.01838123473997016830887833476199550560697066011986939559933525309909705318537405182199378012840027" }},
+ {{ "11.0625", "-14.91962506867234581945151895985710289930225918712794589354339983163930894702818997439864076091931126" }},
+ {{ "11.09375", "-10.15307233756673521728139815893864848321827456537331024001764086854554203725293661816927668294489745" }},
+ {{ "11.125", "-7.683249828520493578856827081745572284486853920128557099054138395954224416767780846216824234128741871" }},
+ {{ "11.15625", "-6.170065007339837672004969274368706522165797321914087418607341946608032746141308987068347258026539261" }},
+ {{ "11.1875", "-5.146216397928971013498356330072590228022047015189051411856482418633925739244947714746552179251733944" }},
+ {{ "11.21875", "-4.406134215367990783634732996136714284665546485639321948525683144032506137127272195504713779988841399" }},
+ {{ "11.25", "-3.845243526046256589195292015214843119217023542577367989034898325348687250589462590349993156554307721" }},
+ {{ "11.28125", "-3.404725196340913894767892653680241020178288686778598191582702368768260415894176917496336011269246961" }},
+ {{ "11.3125", "-3.048957435167265586183006322737827462691340358802500561060757089057213237102895081676386924312658609" }},
+ {{ "11.34375", "-2.755105539085522466956356685286240136460553349428076133380205505661678601069631697225730693586354901" }},
+ {{ "11.375", "-2.507856046343293846165268336837981024254374791359792671451310995149841786950224129840033693800933455" }},
+ {{ "11.40625", "-2.296555085357014688557714000971300925194148838031073606034513705752180239656706450912207637184212202" }},
+ {{ "11.4375", "-2.113560858723099424307258719446955475134681339177645144130883477669849838830392714536871823793018366" }},
+ {{ "11.46875", "-1.953248965442351814769641861822757418968218808226145477990020040801933787597505710461744957513141637" }},
+ {{ "11.5", "-1.811387450326824859772397320474032833639713335926721521705076560469479148263546424971811321096648723" }},
+ {{ "11.53125", "-1.684730597525019137697751820797269016453098562968854704274935631922618587469362028272636692210544871" }},
+ {{ "11.5625", "-1.570747064811472615228088301480862011854346986220267355439332676174065617757164643849543074172144195" }},
+ {{ "11.59375", "-1.467433230574720919411941987695161181959171583863783447843463212366085434611122065381627004242638947" }},
+ {{ "11.625", "-1.373182138457896453349468046455100980035443259553659899722906361390876088856423969181083376455705666" }},
+ {{ "11.65625", "-1.286689630920366616376314221177221139006716016538511655589760746532540573609680625603641074608188434" }},
+ {{ "11.6875", "-1.206885914221201720054271911345572193315238450358663840449617121968073512366326525649980278803416278" }},
+ {{ "11.71875", "-1.132884861825656481798873135046969210301345541577298019300751660619960162890235612177970957925478595" }},
+ {{ "11.75", "-1.063945912486004409710559363045985530861938320222047288703751234746510874929602501339045816423036172" }},
+ {{ "11.78125", "-0.9994450559333915167440624304322053019403928948191033206551515159313846021422418864273459645373449009" }},
+ {{ "11.8125", "-0.9388524723222944773205643428254523492068640072627707382490811032852295370278108292005146916272238994" }},
+ {{ "11.84375", "-0.881715108900528303919177723946502416645736801861050134491985441499235913287446780705353461545417442" }},
+ {{ "11.875", "-0.8276429652929236471146892695710241706925495072977152657326004944101623406458452837545349486881138268" }},
+ {{ "11.90625", "-0.7762981960095720820932228114020179373213795483270746275212139165301756520252573166217954465331159458" }},
+ {{ "11.9375", "-0.7273863753138267917778418153001732955258816548283145725251801363629114248343367970028832122142992284" }},
+ {{ "11.96875", "-0.6806494377457210277597470928336025589584620324058462321470850608946457200573674297093242265437051282" }},
+ {{ "12", "-0.6358599286615807924609379429390076061509587586686860914514606814656551214484123291399643068894751555" }},
+ {{ "12.03125", "-0.5928162873294508906897144974924364212100987037074180867630829726623330818215300743873013630492129075" }},
+ {{ "12.0625", "-0.5513389500434250704976885869765975030435162971228425993732710884431519725994082993307502135366704687" }},
+ {{ "12.09375", "-0.5112671090040856778211886692327830312529713244160725823950417285454010972749346501560988873183882094" }},
+ {{ "12.125", "-0.472455998959126666328373026314261347130558625459848565935809588092219192527888607849005967299526205" }},
+ {{ "12.15625", "-0.4347746110466813389220145482909141465629503223075144609806539759358566301078783883593960376790796208" }},
+ {{ "12.1875", "-0.3981037542382981122358374348325646108510087325306228562334315140437947730049798142715674391074029588" }},
+ {{ "12.21875", "-0.3623344008952777173267729097645609415931859827734307762367947830110639831467043405387353622176899024" }},
+ {{ "12.25", "-0.3273662654331959909797507119051924955282853934206185144087221653583658953364484322496982215172064596" }},
+ {{ "12.28125", "-0.2931065748149348906573126400315634011327627839945547849105543140713203189089283254450491988430709458" }},
+ {{ "12.3125", "-0.2594689972120933396662267471796226223140842016040887149108653318448105627021634377488137220685751418" }},
+ {{ "12.34375", "-0.2263727011714726746425617255174464360665584672063083345910005855017649693977414015628137560181413471" }},
+ {{ "12.375", "-0.1937415223592955920421472499371716132396126974936842056246045191659136204224066400221303821918510103" }},
+ {{ "12.40625", "-0.1615032187034938758288345646836288312549849485871893783750506125037934982810946747034471565118071181" }},
+ {{ "12.4375", "-0.1295887977200466002615144930375243133915724779506460096421464176334192279649808190617654665646655393" }},
+ {{ "12.46875", "-0.09793190214949804406939767223801097423536917158984066549241688209747906679339832186909184479038423885" }},
+ {{ "12.5", "-0.06646824186327419610199266949441387194390610792357612079517505380578030434009894147743014400122005453" }},
+ {{ "12.53125", "-0.03513506141616282076636047393093268566965509833708523530838721391339373252314877573835767237228949322" }},
+ {{ "12.5625", "-0.003870633688692445796420680716701608075985971581256241161345780831826430572573689071744247468488929075" }},
+ {{ "12.59375", "0.02738622916941998236655243276631287278486472025157424329703232697741123275406245628528750156873296529" }},
+ {{ "12.625", "0.05869665578128338112635128913606850911677921227526205464651894469274626817414600063862113806671147531" }},
+ {{ "12.65625", "0.09012219459725165729474121609816933257302657281344601700769732387220992191083677289387048548334265912" }},
+ {{ "12.6875", "0.1217252999603408610668897042413571531127645503736599822403036205555496676066474076056000689949341066" }},
+ {{ "12.71875", "0.1535698333828775342772949638706552097777256705040011551078273258533143177119249497623834514512966756" }},
+ {{ "12.75", "0.1857215886751401902594186441708939448272141506734588329272148156845153012668419405756499880982943312" }},
+ {{ "12.78125", "0.2182488502657797346752690950871572837813792443000041521932413723748578742375061893600646885986149118" }},
+ {{ "12.8125", "0.2512229950428828425999138094132092852018197118941615412720196242900796512859843472371170313836583775" }},
+ {{ "12.84375", "0.2847191493692259054394416502657415422614131291273802036428533121457701035912610846112501083132620008" }},
+ {{ "12.875", "0.3188169146481101964165914224483354040480603343474688683709071564169780696806924149291320418944830542" }},
+ {{ "12.90625", "0.3536011770209831976646321735648611242564793780159081807119024532891168112397727872069370118132852613" }},
+ {{ "12.9375", "0.389163019575800390066324389631248715515481435421443727622672043630746566664120384677948936473787333" }},
+ {{ "12.96875", "0.4256007589819842824595519481972026675555296385735056063290277948532474177383987445148843331908874667" }},
+ {{ "13", "0.4630211329364895955117902835081206683532120959519440470950206693928302579327807145125758116501924079" }},
+ {{ "13.03125", "0.5015406704601738993466207755375547536965260852964643732753893793547109382261801451895601761930463122" }},
+ {{ "13.0625", "0.5412872842615681585626378992160244527886510964571032692368478641312818490839188830849928560962861538" }},
+ {{ "13.09375", "0.5824021335357886328662589223215248727421699777193264549116653046243519880397055116969487363618353957" }},
+ {{ "13.125", "0.6250418172930577232327055575810817395750497037126950514585195397519699819130820731538599564259401139" }},
+ {{ "13.15625", "0.6693809734298055686754246761212833674742679018564325405072602539903766997859347462285344333571366362" }},
+ {{ "13.1875", "0.7156153783773706463324211230116191534127258818669295732823217991324981875804470761472072117982861964" }},
+ {{ "13.21875", "0.7639656678174816067986696149135126827704120185065555912507382354963651332883430075609034401555571502" }},
+ {{ "13.25", "0.8146818327614344736464451806034453710444224291621571573625236805118070729970340362557654528804594448" }},
+ {{ "13.28125", "0.8680486902251570873258425734584921956065820604675624643643164481487468794096033758920520511975882962" }},
+ {{ "13.3125", "0.9243925880092635749600582006440809362226783655074073519865821148035556209179629462013383469424274175" }},
+ {{ "13.34375", "0.984089684751991735962930471741445607987192320278600727525448404432994693600540790050738561865588772" }},
+ {{ "13.375", "1.04757625822842897028900134354672689006793126569323519874122370449523706721491998653522405351511" }},
+ {{ "13.40625", "1.115361649708918497565229580465214098442269312226313131576538895853120727413355048723361997440716611" }},
+ {{ "13.4375", "1.188044669282090096413968423531415025467187597047077575491037309801518019505454161493737933958668965" }},
+ {{ "13.46875", "1.266334595496805761839284321117713547689424188079416196364317291844437171872585239983180116380091394" }},
+ {{ "13.5", "1.351078347287010480371085577712699470101212829099407611657174914155576868564657173832374341089513584" }},
+ {{ "13.53125", "1.443296057137394170028536177718664041051292527024487177527337760724543655637891131854085251072201818" }},
+ {{ "13.5625", "1.544228244055125768572769325179666059641117940456933228593668266762756226316757718141030898582889678" }},
+ {{ "13.59375", "1.65539925635608625536146268504299540984757874423396346584219270902415141849546774423536235044651061" }},
+ {{ "13.625", "1.778703933748487611100295794480392286774372855795510955005500225382241572963111907877924106343034439" }},
+ {{ "13.65625", "1.916528050760659646742064707886848214342582893475968412683323141359371632373241621750396872855231387" }},
+ {{ "13.6875", "2.071918975654530318165994049833557729201414960634819277207514404216213840009455116234485076356302166" }},
+ {{ "13.71875", "2.248832798150414958768559692131859458258869348641929756045263587943996112471489439485863476093034658" }},
+ {{ "13.75", "2.452501131436276534259505261160229408535827308333544989748716942417182101185885609613251793631088723" }},
+ {{ "13.78125", "2.689991141885544485574819071146851902487462547699495662222675009146133600868249015967786252574495347" }},
+ {{ "13.8125", "2.971088997454883061146937345921981294715821069297105784485484470539822403438727250351950923586461683" }},
+ {{ "13.84375", "3.309747852278236334086030022253642441335045150382837946015733966046635972988597769925369044448793434" }},
+ {{ "13.875", "3.726571412380592611642200928513525816649689030739311675986112325390668863787780356510815096395312152" }},
+ {{ "13.90625", "4.253314099623669334835259848593744934346239237141072606237802004691075608138259425654524049734148683" }},
+ {{ "13.9375", "4.941607147834976432334070015221138910450692007921150173618524899066416996751652602822476062787651509" }},
+ {{ "13.96875", "5.881399525150031955799636707531603412059246766703476508448423108137501182284498677930575806202198028" }},
+ {{ "14", "7.244606616094805116868776904419943839744730261240134752545587919443539234559937291680749763590851956" }},
+ {{ "14.03125", "9.406028188605279696133223875198323737712453281000019998207973537233195589286463672078393783342949057" }},
+ {{ "14.0625", "13.36790967265482265511197119971831749461310263946778620293662813338523575832270133240885318460296722" }},
+ {{ "14.09375", "23.0180098105772480411418077991835591801343058014965291845911306402355660736744079654039102037142972" }},
+ {{ "14.125", "82.18587088008837479889498738727608856213126524631858084352266182200806013924238364295643998983071042" }},
+ {{ "14.15625", "-52.39613928846073424250555787725052081495348867793023995281290229927733884543365803704289494278819236" }},
+ {{ "14.1875", "-19.85087749437963381473636677142019044036915990708056158011806608744982156130940528545579140382954901" }},
+ {{ "14.21875", "-12.23024032878110918179097238079573616977352169397336130087278904329232109578073694396971060087189843" }},
+ {{ "14.25", "-8.825007825823643194479070661167279551172813025945214108644920017576189426949178857879125100439566237" }},
+ {{ "14.28125", "-6.892346926954325909059194856822673062063097995636142714599547668355292064875194893124728097012275365" }},
+ {{ "14.3125", "-5.644866498825540128381929944705578552248933555730964244899773528736917184084590171390597212873718595" }},
+ {{ "14.34375", "-4.771610252795610046024685797665514766422880378783577882983742818079026166693261845053770481989424557" }},
+ {{ "14.375", "-4.125051680440956814255997242162117938555651270642110578618995113301257483035180159821309310658332941" }},
+ {{ "14.40625", "-3.626194314229776036712561256911661725676439848577743170654748551410882288678506147976699754338337632" }},
+ {{ "14.4375", "-3.228918544653384166822369480885301355908586468628448310353628937744136710166892378083809771029038072" }},
+ {{ "14.46875", "-2.904489208401961365438740405970863838028715766433251544998958231462070708355920879083964796103033733" }},
+ {{ "14.5", "-2.634069132503832833409607035052858278935807513368801311481801280408668028920599740332367971681453643" }},
+ {{ "14.53125", "-2.404794639925577553244012746285864594559572350297129379452932406519481483010765023196033751578709703" }},
+ {{ "14.5625", "-2.207581089523679545128355853946391835592464237094323506839360879131859583353800754571132350944473674" }},
+ {{ "14.59375", "-2.035829586659772321235017007716845648434117124540496962900856683971781311984497273615528750368081422" }},
+ {{ "14.625", "-1.884630768865435904935595378906947231717012177189752377379403964925875302521199447518722408719775981" }},
+ {{ "14.65625", "-1.750256190835124208623312849116061326812165846025415986783560739453729962659158203940996884358758139" }},
+ {{ "14.6875", "-1.629822991609989147184189043054819627629510818289435539398133590083260226275976603564527843030512624" }},
+ {{ "14.71875", "-1.521066667289361457373930052890176846963182405346389200320517277799503677666772192617687500257521097" }},
+ {{ "14.75", "-1.42218336083774197380789085745137021789867848279597800468450871698744869740438289092755542692570482" }},
+ {{ "14.78125", "-1.331718058572613129017722401996663023341875099157808098995252549045562547044521935057437210333349552" }},
+ {{ "14.8125", "-1.248483823169844883793467308858957913772012915051151771810074084965259104516379708093866536649015936" }},
+ {{ "14.84375", "-1.171502454280969620050113939757468091964527953537892858826299161314598145955301346129774398985079725" }},
+ {{ "14.875", "-1.09996022360423379094065298284739111500559223495806048377446355428125902586706149601540328954397664" }},
+ {{ "14.90625", "-1.033174396383465269461739738697259215672589493553897443441659340076220701053186730617856132398548093" }},
+ {{ "14.9375", "-0.9705675907155131163149460322607739770705545946870992276893226926978460501228871025636381103213358614" }},
+ {{ "14.96875", "-0.9116479124475490508064737825953723368462225788875404013990634500526165327350899245784037598875471869" }},
+ {{ "15", "-0.8559934009085187640261927782380296049897864414742962979687446281783012594486541122545103129259226012" }},
+ {{ "15.03125", "-0.8032397302332296612432159755337281904284459733163994877022298441144059785603187789136637043263789466" }},
+ {{ "15.0625", "-0.7530703960754939484978446924032015414437125508200990314934869704250553438069278960228507610120908637" }},
+ {{ "15.09375", "-0.7052088187318415299725928408540094093554358958059088325375638362095004704432693353838375709463129551" }},
+ {{ "15.125", "-0.659411937622644225218300893404169827076548649885412227383887901950221923526355502978543776575055119" }},
+ {{ "15.15625", "-0.6154649762727536414801474029122625793755198617269250343988631456453788448149731706979351529235579577" }},
+ {{ "15.1875", "-0.5731771332183040948793178896118867037269598773610412277642977614409075169432893108977656087532808068" }},
+ {{ "15.21875", "-0.5323780107028691176788965668440942781647156607765742951342412648358988559400799809724920990286528734" }},
+ {{ "15.25", "-0.4929146351866012621666401573415074523464609163340854530825224584649245974424596583470196176643838565" }},
+ {{ "15.28125", "-0.4546489554738299415350063572461193751006928326854122963028434583535719327916356408447934270192962049" }},
+ {{ "15.3125", "-0.4174557284251085623680148206370333657407709127949181945517726979253617292255491330234726669774559159" }},
+ {{ "15.34375", "-0.3812207207302419203446046603506711987787377766806738457878506795815713138223264722913354548269137032" }},
+ {{ "15.375", "-0.3458391695028422582485004568448026536356203654713446806415710694635885346246660520826948870993463705" }},
+ {{ "15.40625", "-0.311214455551825073642663079591570618837743590849903018274057606911872122304533000910107606645650336" }},
+ {{ "15.4375", "-0.2772569518534830079599506190692912755868921271423525814120233867695893487373304945292237740353757468" }},
+ {{ "15.46875", "-0.2438830165543173054192587099181568413614402066070223778896735213919894343566763962867244846621486138" }},
+ {{ "15.5", "-0.2110141052012553133863173741408514435037061655011970687100846880180438182550528565062101594891245018" }},
+ {{ "15.53125", "-0.1785759811388596991279739233477573236616687666102227187311862264495771634608666297275574790232136991" }},
+ {{ "15.5625", "-0.1464980063716879847555275878278898667317766571375499828106145375100216949704230935552550931052323183" }},
+ {{ "15.59375", "-0.1147124978452713735943481847220917786442201384229215777788278473922030662630912256721375261600875605" }},
+ }};
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ T val = tan(T(data[k][0]));
+ T e = relative_error(val, T(data[k][1]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ val = tan(-T(data[k][0]));
+ e = relative_error(val, T(-T(data[k][1])));
+ err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ {
+ max_err = err;
+ }
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+ // Check low multiprecision digit counts.
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<9> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<18> > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#endif
+ return boost::report_errors();
+}
+
+
+

Added: sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_tanh.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ sandbox/multiprecision.cpp_bin_float/libs/multiprecision/test/test_tanh.cpp 2013-08-10 04:55:14 EDT (Sat, 10 Aug 2013) (r85257)
@@ -0,0 +1,177 @@
+///////////////////////////////////////////////////////////////
+// Copyright Christopher Kormanyos 2002 - 2011.
+// Copyright 2011 John Maddock. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_
+//
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifdef _MSC_VER
+# define _SCL_SECURE_NO_WARNINGS
+#endif
+
+#include <boost/detail/lightweight_test.hpp>
+#include <boost/array.hpp>
+#include "test.hpp"
+
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+# define TEST_MPF_50
+# define TEST_MPFR_50
+# define TEST_MPFI_50
+# define TEST_BACKEND
+# define TEST_CPP_DEC_FLOAT
+# define TEST_FLOAT128
+# define TEST_CPP_BIN_FLOAT
+
+#ifdef _MSC_VER
+#pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
+#endif
+#ifdef __GNUC__
+#pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!"
+#endif
+
+#endif
+
+#if defined(TEST_MPF_50)
+#include <boost/multiprecision/gmp.hpp>
+#endif
+#if defined(TEST_MPFR_50)
+#include <boost/multiprecision/mpfr.hpp>
+#endif
+#if defined(TEST_MPFI_50)
+#include <boost/multiprecision/mpfi.hpp>
+#endif
+#ifdef TEST_BACKEND
+#include <boost/multiprecision/concepts/mp_number_archetypes.hpp>
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+#include <boost/multiprecision/cpp_dec_float.hpp>
+#endif
+#ifdef TEST_FLOAT128
+#include <boost/multiprecision/float128.hpp>
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+#include <boost/multiprecision/cpp_bin_float.hpp>
+#endif
+
+template <class T>
+void test()
+{
+ std::cout << "Testing type: " << typeid(T).name() << std::endl;
+ static const boost::array<const char*, 51u> data =
+ {{
+ "0.32137338579537729992840434899278935725496267444911714908205287462634251052210833615032073534299473485492692600156322137421801432333125051088723502425037485776412801577568405892077585206768190530859883094571475323319480739773193974206966728764224286661945738178210577326172938196062277314761537881936346874075881338768208490193827960565412814349738654540520356903367084438822830345189856017860672463017",
+ "0.98628073997374759901559180515206275902189609982907214282364143439537215491113710345866034807991101303183938339561499559327886956280789743287824488269072297413440935381715378233031399015496124706604318545539544610760151756970229801074280545428642122005982857974921606264103186878499260552388713716032507770319550435738767597150644370033277228635793175246197730488375240713357827246166262087899961098648",
+ "0.99999659728082161113542951278514830809677661658635225532792520501703544628367875293677270218317428676793098034276042396396797568103263882451732810190507733063467333056356770774002596898762991629653041854653269824642873291146068535300466473399592751219449187768646625229500705182676930009096545254478199838990703077597971823456671241141900968900216742636822174010867343154474773040184900973368250708724",
+ "0.9999999999846483268200051609594321550129159997920576480976206867496512752486590660437091205989616108531910897733432934135954788151766561209164605337537937873588006552145390152387235783207736999759875845070169747521389728857476525437483543080651125798739562649414879487621858466223255239845627205850217328574865852922872737234283038190096982410137471391847466112651349436875974689271288261759782261321",
+ "0.9999999999999999987314527242099750648171958211319474558707792311593804963057878814487720997303512134007272111464990650500302215773762906820778949397525329109311974741708703536680512747226155618703318739024344621256722269608969415280035337052044425138281821760268269187377517243951584969175035549994883451471918693502477485385682884154959809285569290940740978684264145737164182111806308430952867505356",
+ "0.9999999999999999999999999980800953069847308586840237590563929855339557065536765765234844240789584487443451033349994294426525006157530320529970966048109743850154174651033567146346966529198814047607015842020039899630884318521543225160212193994911746894335846264878066530266737005606770102869237101848445559941638381625615207320468184414917265299980278164193202897754476112968080358662232635784904263624",
+ "0.9999999999999999999999999999999999999467800140220866754762922747687784133233134010432889959570821554455247528344437918197518545105332713456859236726383195243056599177018396579766073961540714510399202497404647103138524118065391185503678895059096790300665805648569647351935897874460587855127436472608470703384261586158923066272124216158518232588330799027603391275039552776308636189531809031683723259525",
+ "0.9999999999999999999999999999999999999999999999999729795912960133359928587562229512337339217831178574875626619226954752643039860388090399659478676726654102118545764943682017611574275691203710439707807193180604656837503862242700430179591666329131728631752773789406064618682879167351725013888294859467540832310795515139677375807407622028485242969471516812171475098378942187864794497220152019202351747432",
+ "0.9999999999999999999999999999999999999999999999999999999999999997487354938310440650220692519525261552411539996830587326435051159231522052011310872619940247463640019105467860778515384738650636054646551611609757125760437266415865214306396520500343113189907306851418957620080971645943305760132385139924583154317156560414548076370893360020924960120441059315311380109752919823616149973862196846266297710225",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999572050575304159358359221596743379014313563214857593401545331495211888415913558896516895286943572966865708195832339959764445194449615969154689769557903166971249521898883489362426386924297872088925852892350150865941427355319827260914834268754732102528105919811851193667193380541054520023003326858641189063542651960743457613",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998665016733514821204959171836698281165918083005790816030823236096080522860514417075411055633676502699904415882389102672678124683084429720879962355892225321369091298491658349178472270952759208443767848312111069127329160464884932271685986610697222434145553035947750809388321614695213754318979469071722942883",
+ "0.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999992372516628147584832950728021842198359205201519966391076994594773600474674435473005118571751514446148292787696117866094991476340344341061706866751156257825144909115117822189019766805825304055482958970512463798453229341693148012213183553546720540880444569824125592343803193018989122964",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999920180539244323143459416025663362517256166793900312667214543096238752838226369161775531456005541374878274529461511286842988937830155704737448202558382612829022464635400289328916240002670783433827234852858267621807568393874737879853500598862298495727481132883728328",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998470116425957155787153557938061034698436461173594805292722874130433614266475136267606498346730583487791266503943659174886554170377537630914770998114573340081594827150737005158607830579000912020838690230498119348251553312722575955142752845289",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999462931048083476382670449719737943481963930626760625326765703815392249622625483433043363664396638162612437367800102332819699131841317348173451308570776544874933173719394861336636728378134900422312720743996219523365098",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996546783689748726752364896615532860288057097437452774779386074906915819380531729493071959232887620213723607155628959529584572083388979892309086717786559916703004365603135284141639480887703759",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999593332381019647939423999969519583099837564321056588766269967853479478603122899456262904869063959564274215899007623362296377022418464303752396325625838280378647335",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999122842714667567128203355585346559126606029196080721845292399104475997315344844970601651757832506169948906646054332493537761143729664",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999965347272050374435790597917065458623422102880662825928396981295898014081371503733411536311258910851858",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999974926240515037403282500845454464621558236030794140169313830052413917",
+ "0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999667705192725716176070161727364499",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ "1.",
+ }};
+
+ T eg = static_cast<T>("5.77215664901532860606512090082402431042159335939923598805767234884867726777664670936947063291746749514631447249807082480960504014486542836224173997644923536253500333742937337737673942792595258247094916008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519e-1");
+
+ unsigned max_err = 0;
+ for(unsigned k = 0; k < data.size(); k++)
+ {
+ const T x = eg + k;
+ T val = boost::multiprecision::tanh(x * x);
+ T e = relative_error(val, T(data[k]));
+ unsigned err = e.template convert_to<unsigned>();
+ if(err > max_err)
+ max_err = err;
+ }
+ std::cout << "Max error was: " << max_err << std::endl;
+ BOOST_TEST(max_err < 100);
+}
+
+
+int main()
+{
+#ifdef TEST_BACKEND
+ test<boost::multiprecision::number<boost::multiprecision::concepts::number_backend_float_architype> >();
+#endif
+#ifdef TEST_MPF_50
+ test<boost::multiprecision::mpf_float_50>();
+ test<boost::multiprecision::mpf_float_100>();
+#endif
+#ifdef TEST_MPFR_50
+ test<boost::multiprecision::mpfr_float_50>();
+ test<boost::multiprecision::mpfr_float_100>();
+#endif
+#ifdef TEST_MPFI_50
+ test<boost::multiprecision::mpfi_float_50>();
+ test<boost::multiprecision::mpfi_float_100>();
+#endif
+#ifdef TEST_CPP_DEC_FLOAT
+ test<boost::multiprecision::cpp_dec_float_50>();
+ test<boost::multiprecision::cpp_dec_float_100>();
+#ifndef SLOW_COMPLER
+ // Some "peculiar" digit counts which stress our code:
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<65> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<64> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<63> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<62> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<61, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<60, long long> > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<59, long long, std::allocator<void> > > >();
+ test<boost::multiprecision::number<boost::multiprecision::cpp_dec_float<58, long long, std::allocator<void> > > >();
+#endif
+#endif
+#ifdef TEST_FLOAT128
+ test<boost::multiprecision::float128>();
+#endif
+#ifdef TEST_CPP_BIN_FLOAT
+ test<boost::multiprecision::number<boost::multiprecision::cpp_bin_float<113> > >();
+#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