diff --git a/include/boost/math/cstdfloat/cstdfloat_cmath.hpp b/include/boost/math/cstdfloat/cstdfloat_cmath.hpp index 049ac4091..515f3052a 100644 --- a/include/boost/math/cstdfloat/cstdfloat_cmath.hpp +++ b/include/boost/math/cstdfloat/cstdfloat_cmath.hpp @@ -918,62 +918,6 @@ namespace std using boost::math::cstdfloat::detail::isunordered; // end more functions - // - // Very basic iostream operator: - // - inline std::ostream& operator << (std::ostream& os, __float128 m_value) - { - std::streamsize digits = os.precision(); - std::ios_base::fmtflags f = os.flags(); - std::string s; - - char buf[100]; - std::unique_ptr buf2; - std::string format = "%"; - if (f & std::ios_base::showpos) - format += "+"; - if (f & std::ios_base::showpoint) - format += "#"; - format += ".*"; - if (digits == 0) - digits = 36; - format += "Q"; - if (f & std::ios_base::scientific) - format += "e"; - else if (f & std::ios_base::fixed) - format += "f"; - else - format += "g"; - - int v = quadmath_snprintf(buf, 100, format.c_str(), digits, m_value); - - if ((v < 0) || (v >= 99)) - { - int v_max = v; - buf2.reset(new char[v + 3]); - v = quadmath_snprintf(&buf2[0], v_max + 3, format.c_str(), digits, m_value); - if (v >= v_max + 3) - { - BOOST_MATH_THROW_EXCEPTION(std::runtime_error("Formatting of float128_type failed.")); - } - s = &buf2[0]; - } - else - s = buf; - std::streamsize ss = os.width(); - if (ss > static_cast(s.size())) - { - char fill = os.fill(); - if ((os.flags() & std::ios_base::left) == std::ios_base::left) - s.append(static_cast(ss - s.size()), fill); - else - s.insert(static_cast(0), static_cast(ss - s.size()), fill); - } - - return os << s; - } - - } // namespace std // We will now remove the preprocessor symbols representing quadruple-precision diff --git a/include/boost/math/cstdfloat/cstdfloat_iostream.hpp b/include/boost/math/cstdfloat/cstdfloat_iostream.hpp index beb56209a..7c2c39677 100644 --- a/include/boost/math/cstdfloat/cstdfloat_iostream.hpp +++ b/include/boost/math/cstdfloat/cstdfloat_iostream.hpp @@ -32,8 +32,7 @@ #include #include -// #if (0) - #if defined(__GNUC__) +#if defined(__GNUC__) && !defined(BOOST_MATH_TEST_IO_AS_INTEL_QUAD) // Forward declarations of quadruple-precision string functions. extern "C" int quadmath_snprintf(char *str, size_t size, const char *format, ...) BOOST_MATH_NOTHROW; @@ -96,7 +95,7 @@ // So we have to use dynamic memory allocation for the output // string buffer. - char* my_buffer2 = static_cast(0U); + char* my_buffer2 = nullptr; #ifndef BOOST_NO_EXCEPTIONS try @@ -160,8 +159,7 @@ } } -// #elif defined(__GNUC__) - #elif defined(__INTEL_COMPILER) +#elif defined(__INTEL_COMPILER) || defined(BOOST_MATH_TEST_IO_AS_INTEL_QUAD) // The section for I/O stream support for the ICC compiler is particularly // long, because these functions must be painstakingly synthesized from @@ -172,6 +170,7 @@ // used in Boost.Multiprecision by John Maddock and Christopher Kormanyos. // This methodology has been slightly modified here for boost::float128_t. + #include #include @@ -266,7 +265,7 @@ { // Pad out the end with zero's if we need to. - int chars = static_cast(str.size()); + std::ptrdiff_t chars = static_cast(str.size()); chars = digits - chars; if(scientific) @@ -507,6 +506,8 @@ eval_subtract(t, digit); eval_multiply(t, ten); } + if (result.size() == 0) + result = "0"; // Possibly round the result. if(digits >= 0) @@ -522,11 +523,13 @@ if((static_cast(*result.rbegin() - '0') & 1) != 0) { round_string_up_at(result, static_cast(result.size() - 1U), expon); + if (digits == 0) digits = 1; } } else if(cdigit >= 5) { - round_string_up_at(result, static_cast(result.size() - 1), expon); + round_string_up_at(result, static_cast(result.size() - 1u), expon); + if (digits == 0) digits = 1; } } } @@ -569,7 +572,7 @@ { value = 0; - if((p == static_cast(0U)) || (*p == static_cast(0))) + if((p == nullptr) || (*p == '\0')) { return false; } @@ -584,11 +587,11 @@ constexpr int max_digits = std::numeric_limits::max_digits10 + 1; - if(*p == static_cast('+')) + if(*p == '+') { ++p; } - else if(*p == static_cast('-')) + else if(*p == '-') { is_neg = true; ++p; @@ -632,7 +635,7 @@ ++digits_seen; } - if(*p == static_cast('.')) + if(*p == '.') { // Grab everything after the point, stop when we've seen // enough digits, even if there are actually more available. @@ -659,15 +662,15 @@ } // Parse the exponent. - if((*p == static_cast('e')) || (*p == static_cast('E'))) + if((*p == 'e') || (*p == 'E')) { ++p; - if(*p == static_cast('+')) + if(*p == '+') { ++p; } - else if(*p == static_cast('-')) + else if(*p == '-') { is_neg_expon = true; ++p; @@ -718,7 +721,7 @@ value = -value; } - return (*p == static_cast(0)); + return (*p == '\0'); } } } } } // boost::math::cstdfloat::detail diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 90b605a90..44c76058b 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -909,6 +909,8 @@ test-suite new_floats : [ compile compile_test/float32.cpp ] [ compile compile_test/float64.cpp ] [ compile compile_test/float128.cpp ] + [ run test_float_io.cpp : : : [ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : BOOST_MATH_TEST_FLOAT128 "-Bstatic -lquadmath -Bdynamic" ] ] + [ run test_float_io.cpp : : : BOOST_MATH_TEST_IO_AS_INTEL_QUAD=1 [ check-target-builds ../config//has_float128 "GCC libquadmath and __float128 support" : BOOST_MATH_TEST_FLOAT128 "-Bstatic -lquadmath -Bdynamic" ] : test_float_io_quad ] ; test-suite mp : diff --git a/test/string_data.ipp b/test/string_data.ipp new file mode 100644 index 000000000..10cae8953 --- /dev/null +++ b/test/string_data.ipp @@ -0,0 +1,4765 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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_0.txt) + +{{ + "1e+08", + "1.e+08", + "+1e+08", + "1.2e+08", + "+1.2e+08", + "1.2e+08", + "123456789.0", + "123456789.0", + "+123456789.0", + "1.2e+08", + "1.2e+08", + "+1.2e+08", + "1.23e+08", + "+1.23e+08", + "1.23e+08", + "123456789.00", + "123456789.00", + "+123456789.00", + "1.23e+08", + "1.23e+08", + "+1.23e+08", + "1.235e+08", + "+1.235e+08", + "1.235e+08", + "123456789.000", + "123456789.000", + "+123456789.000", + "1.235e+08", + "1.235e+08", + "+1.235e+08", + "1.2346e+08", + "+1.2346e+08", + "1.2346e+08", + "123456789.0000", + "123456789.0000", + "+123456789.0000", + "1.2346e+08", + "1.2346e+08", + "+1.2346e+08", + "1.23457e+08", + "+1.23457e+08", + "1.23457e+08", + "123456789.00000", + "123456789.00000", + "+123456789.00000", + "1.23457e+08", + "1.23457e+08", + "+1.23457e+08", + "1.234568e+08", + "+1.234568e+08", + "1.234568e+08", + "123456789.000000", + "123456789.000000", + "+123456789.000000", + "1.234568e+08", + "1.234568e+08", + "+1.234568e+08", + "1.2345679e+08", + "+1.2345679e+08", + "1.2345679e+08", + "123456789.0000000", + "123456789.0000000", + "+123456789.0000000", + "1.2345679e+08", + "1.2345679e+08", + "+1.2345679e+08", + "1.23456789e+08", + "+1.23456789e+08", + "1.23456789e+08", + "123456789.00000000", + "123456789.00000000", + "+123456789.00000000", + "123456789", + "123456789.", + "+123456789", + "1.234567890e+08", + "+1.234567890e+08", + "1.234567890e+08", + "123456789.000000000", + "123456789.000000000", + "+123456789.000000000", + "123456789", + "123456789.0", + "+123456789", + "1.2345678900e+08", + "+1.2345678900e+08", + "1.2345678900e+08", + "123456789.0000000000", + "123456789.0000000000", + "+123456789.0000000000", + "123456789", + "123456789.00", + "+123456789", + "1.23456789000e+08", + "+1.23456789000e+08", + "1.23456789000e+08", + "123456789.00000000000", + "123456789.00000000000", + "+123456789.00000000000", + "123456789", + "123456789.000", + "+123456789", + "1.234567890000e+08", + "+1.234567890000e+08", + "1.234567890000e+08", + "123456789.000000000000", + "123456789.000000000000", + "+123456789.000000000000", + "123456789", + "123456789.0000", + "+123456789", + "1.2345678900000e+08", + "+1.2345678900000e+08", + "1.2345678900000e+08", + "123456789.0000000000000", + "123456789.0000000000000", + "+123456789.0000000000000", +}}, + {{ + "-1e+08", + "-1.e+08", + "-1e+08", + "-1.2e+08", + "-1.2e+08", + "-1.2e+08", + "-123456789.0", + "-123456789.0", + "-123456789.0", + "-1.2e+08", + "-1.2e+08", + "-1.2e+08", + "-1.23e+08", + "-1.23e+08", + "-1.23e+08", + "-123456789.00", + "-123456789.00", + "-123456789.00", + "-1.23e+08", + "-1.23e+08", + "-1.23e+08", + "-1.235e+08", + "-1.235e+08", + "-1.235e+08", + "-123456789.000", + "-123456789.000", + "-123456789.000", + "-1.235e+08", + "-1.235e+08", + "-1.235e+08", + "-1.2346e+08", + "-1.2346e+08", + "-1.2346e+08", + "-123456789.0000", + "-123456789.0000", + "-123456789.0000", + "-1.2346e+08", + "-1.2346e+08", + "-1.2346e+08", + "-1.23457e+08", + "-1.23457e+08", + "-1.23457e+08", + "-123456789.00000", + "-123456789.00000", + "-123456789.00000", + "-1.23457e+08", + "-1.23457e+08", + "-1.23457e+08", + "-1.234568e+08", + "-1.234568e+08", + "-1.234568e+08", + "-123456789.000000", + "-123456789.000000", + "-123456789.000000", + "-1.234568e+08", + "-1.234568e+08", + "-1.234568e+08", + "-1.2345679e+08", + "-1.2345679e+08", + "-1.2345679e+08", + "-123456789.0000000", + "-123456789.0000000", + "-123456789.0000000", + "-1.2345679e+08", + "-1.2345679e+08", + "-1.2345679e+08", + "-1.23456789e+08", + "-1.23456789e+08", + "-1.23456789e+08", + "-123456789.00000000", + "-123456789.00000000", + "-123456789.00000000", + "-123456789", + "-123456789.", + "-123456789", + "-1.234567890e+08", + "-1.234567890e+08", + "-1.234567890e+08", + "-123456789.000000000", + "-123456789.000000000", + "-123456789.000000000", + "-123456789", + "-123456789.0", + "-123456789", + "-1.2345678900e+08", + "-1.2345678900e+08", + "-1.2345678900e+08", + "-123456789.0000000000", + "-123456789.0000000000", + "-123456789.0000000000", + "-123456789", + "-123456789.00", + "-123456789", + "-1.23456789000e+08", + "-1.23456789000e+08", + "-1.23456789000e+08", + "-123456789.00000000000", + "-123456789.00000000000", + "-123456789.00000000000", + "-123456789", + "-123456789.000", + "-123456789", + "-1.234567890000e+08", + "-1.234567890000e+08", + "-1.234567890000e+08", + "-123456789.000000000000", + "-123456789.000000000000", + "-123456789.000000000000", + "-123456789", + "-123456789.0000", + "-123456789", + "-1.2345678900000e+08", + "-1.2345678900000e+08", + "-1.2345678900000e+08", + "-123456789.0000000000000", + "-123456789.0000000000000", + "-123456789.0000000000000", + }}, + {{ + "2e+07", + "2.e+07", + "+2e+07", + "1.5e+07", + "+1.5e+07", + "1.5e+07", + "15432098.6", + "15432098.6", + "+15432098.6", + "1.5e+07", + "1.5e+07", + "+1.5e+07", + "1.54e+07", + "+1.54e+07", + "1.54e+07", + "15432098.62", + "15432098.62", + "+15432098.62", + "1.54e+07", + "1.54e+07", + "+1.54e+07", + "1.543e+07", + "+1.543e+07", + "1.543e+07", + "15432098.625", + "15432098.625", + "+15432098.625", + "1.543e+07", + "1.543e+07", + "+1.543e+07", + "1.5432e+07", + "+1.5432e+07", + "1.5432e+07", + "15432098.6250", + "15432098.6250", + "+15432098.6250", + "1.5432e+07", + "1.5432e+07", + "+1.5432e+07", + "1.54321e+07", + "+1.54321e+07", + "1.54321e+07", + "15432098.62500", + "15432098.62500", + "+15432098.62500", + "1.54321e+07", + "1.54321e+07", + "+1.54321e+07", + "1.543210e+07", + "+1.543210e+07", + "1.543210e+07", + "15432098.625000", + "15432098.625000", + "+15432098.625000", + "1.54321e+07", + "1.543210e+07", + "+1.54321e+07", + "1.5432099e+07", + "+1.5432099e+07", + "1.5432099e+07", + "15432098.6250000", + "15432098.6250000", + "+15432098.6250000", + "15432099", + "15432099.", + "+15432099", + "1.54320986e+07", + "+1.54320986e+07", + "1.54320986e+07", + "15432098.62500000", + "15432098.62500000", + "+15432098.62500000", + "15432098.6", + "15432098.6", + "+15432098.6", + "1.543209862e+07", + "+1.543209862e+07", + "1.543209862e+07", + "15432098.625000000", + "15432098.625000000", + "+15432098.625000000", + "15432098.62", + "15432098.62", + "+15432098.62", + "1.5432098625e+07", + "+1.5432098625e+07", + "1.5432098625e+07", + "15432098.6250000000", + "15432098.6250000000", + "+15432098.6250000000", + "15432098.625", + "15432098.625", + "+15432098.625", + "1.54320986250e+07", + "+1.54320986250e+07", + "1.54320986250e+07", + "15432098.62500000000", + "15432098.62500000000", + "+15432098.62500000000", + "15432098.625", + "15432098.6250", + "+15432098.625", + "1.543209862500e+07", + "+1.543209862500e+07", + "1.543209862500e+07", + "15432098.625000000000", + "15432098.625000000000", + "+15432098.625000000000", + "15432098.625", + "15432098.62500", + "+15432098.625", + "1.5432098625000e+07", + "+1.5432098625000e+07", + "1.5432098625000e+07", + "15432098.6250000000000", + "15432098.6250000000000", + "+15432098.6250000000000", + }}, + {{ + "-2e+07", + "-2.e+07", + "-2e+07", + "-1.5e+07", + "-1.5e+07", + "-1.5e+07", + "-15432098.6", + "-15432098.6", + "-15432098.6", + "-1.5e+07", + "-1.5e+07", + "-1.5e+07", + "-1.54e+07", + "-1.54e+07", + "-1.54e+07", + "-15432098.62", + "-15432098.62", + "-15432098.62", + "-1.54e+07", + "-1.54e+07", + "-1.54e+07", + "-1.543e+07", + "-1.543e+07", + "-1.543e+07", + "-15432098.625", + "-15432098.625", + "-15432098.625", + "-1.543e+07", + "-1.543e+07", + "-1.543e+07", + "-1.5432e+07", + "-1.5432e+07", + "-1.5432e+07", + "-15432098.6250", + "-15432098.6250", + "-15432098.6250", + "-1.5432e+07", + "-1.5432e+07", + "-1.5432e+07", + "-1.54321e+07", + "-1.54321e+07", + "-1.54321e+07", + "-15432098.62500", + "-15432098.62500", + "-15432098.62500", + "-1.54321e+07", + "-1.54321e+07", + "-1.54321e+07", + "-1.543210e+07", + "-1.543210e+07", + "-1.543210e+07", + "-15432098.625000", + "-15432098.625000", + "-15432098.625000", + "-1.54321e+07", + "-1.543210e+07", + "-1.54321e+07", + "-1.5432099e+07", + "-1.5432099e+07", + "-1.5432099e+07", + "-15432098.6250000", + "-15432098.6250000", + "-15432098.6250000", + "-15432099", + "-15432099.", + "-15432099", + "-1.54320986e+07", + "-1.54320986e+07", + "-1.54320986e+07", + "-15432098.62500000", + "-15432098.62500000", + "-15432098.62500000", + "-15432098.6", + "-15432098.6", + "-15432098.6", + "-1.543209862e+07", + "-1.543209862e+07", + "-1.543209862e+07", + "-15432098.625000000", + "-15432098.625000000", + "-15432098.625000000", + "-15432098.62", + "-15432098.62", + "-15432098.62", + "-1.5432098625e+07", + "-1.5432098625e+07", + "-1.5432098625e+07", + "-15432098.6250000000", + "-15432098.6250000000", + "-15432098.6250000000", + "-15432098.625", + "-15432098.625", + "-15432098.625", + "-1.54320986250e+07", + "-1.54320986250e+07", + "-1.54320986250e+07", + "-15432098.62500000000", + "-15432098.62500000000", + "-15432098.62500000000", + "-15432098.625", + "-15432098.6250", + "-15432098.625", + "-1.543209862500e+07", + "-1.543209862500e+07", + "-1.543209862500e+07", + "-15432098.625000000000", + "-15432098.625000000000", + "-15432098.625000000000", + "-15432098.625", + "-15432098.62500", + "-15432098.625", + "-1.5432098625000e+07", + "-1.5432098625000e+07", + "-1.5432098625000e+07", + "-15432098.6250000000000", + "-15432098.6250000000000", + "-15432098.6250000000000", + }}, + {{ + "2e+06", + "2.e+06", + "+2e+06", + "1.9e+06", + "+1.9e+06", + "1.9e+06", + "1929012.3", + "1929012.3", + "+1929012.3", + "1.9e+06", + "1.9e+06", + "+1.9e+06", + "1.93e+06", + "+1.93e+06", + "1.93e+06", + "1929012.33", + "1929012.33", + "+1929012.33", + "1.93e+06", + "1.93e+06", + "+1.93e+06", + "1.929e+06", + "+1.929e+06", + "1.929e+06", + "1929012.328", + "1929012.328", + "+1929012.328", + "1.929e+06", + "1.929e+06", + "+1.929e+06", + "1.9290e+06", + "+1.9290e+06", + "1.9290e+06", + "1929012.3281", + "1929012.3281", + "+1929012.3281", + "1.929e+06", + "1.9290e+06", + "+1.929e+06", + "1.92901e+06", + "+1.92901e+06", + "1.92901e+06", + "1929012.32812", + "1929012.32812", + "+1929012.32812", + "1.92901e+06", + "1.92901e+06", + "+1.92901e+06", + "1.929012e+06", + "+1.929012e+06", + "1.929012e+06", + "1929012.328125", + "1929012.328125", + "+1929012.328125", + "1929012", + "1929012.", + "+1929012", + "1.9290123e+06", + "+1.9290123e+06", + "1.9290123e+06", + "1929012.3281250", + "1929012.3281250", + "+1929012.3281250", + "1929012.3", + "1929012.3", + "+1929012.3", + "1.92901233e+06", + "+1.92901233e+06", + "1.92901233e+06", + "1929012.32812500", + "1929012.32812500", + "+1929012.32812500", + "1929012.33", + "1929012.33", + "+1929012.33", + "1.929012328e+06", + "+1.929012328e+06", + "1.929012328e+06", + "1929012.328125000", + "1929012.328125000", + "+1929012.328125000", + "1929012.328", + "1929012.328", + "+1929012.328", + "1.9290123281e+06", + "+1.9290123281e+06", + "1.9290123281e+06", + "1929012.3281250000", + "1929012.3281250000", + "+1929012.3281250000", + "1929012.3281", + "1929012.3281", + "+1929012.3281", + "1.92901232812e+06", + "+1.92901232812e+06", + "1.92901232812e+06", + "1929012.32812500000", + "1929012.32812500000", + "+1929012.32812500000", + "1929012.32812", + "1929012.32812", + "+1929012.32812", + "1.929012328125e+06", + "+1.929012328125e+06", + "1.929012328125e+06", + "1929012.328125000000", + "1929012.328125000000", + "+1929012.328125000000", + "1929012.328125", + "1929012.328125", + "+1929012.328125", + "1.9290123281250e+06", + "+1.9290123281250e+06", + "1.9290123281250e+06", + "1929012.3281250000000", + "1929012.3281250000000", + "+1929012.3281250000000", + }}, + {{ + "-2e+06", + "-2.e+06", + "-2e+06", + "-1.9e+06", + "-1.9e+06", + "-1.9e+06", + "-1929012.3", + "-1929012.3", + "-1929012.3", + "-1.9e+06", + "-1.9e+06", + "-1.9e+06", + "-1.93e+06", + "-1.93e+06", + "-1.93e+06", + "-1929012.33", + "-1929012.33", + "-1929012.33", + "-1.93e+06", + "-1.93e+06", + "-1.93e+06", + "-1.929e+06", + "-1.929e+06", + "-1.929e+06", + "-1929012.328", + "-1929012.328", + "-1929012.328", + "-1.929e+06", + "-1.929e+06", + "-1.929e+06", + "-1.9290e+06", + "-1.9290e+06", + "-1.9290e+06", + "-1929012.3281", + "-1929012.3281", + "-1929012.3281", + "-1.929e+06", + "-1.9290e+06", + "-1.929e+06", + "-1.92901e+06", + "-1.92901e+06", + "-1.92901e+06", + "-1929012.32812", + "-1929012.32812", + "-1929012.32812", + "-1.92901e+06", + "-1.92901e+06", + "-1.92901e+06", + "-1.929012e+06", + "-1.929012e+06", + "-1.929012e+06", + "-1929012.328125", + "-1929012.328125", + "-1929012.328125", + "-1929012", + "-1929012.", + "-1929012", + "-1.9290123e+06", + "-1.9290123e+06", + "-1.9290123e+06", + "-1929012.3281250", + "-1929012.3281250", + "-1929012.3281250", + "-1929012.3", + "-1929012.3", + "-1929012.3", + "-1.92901233e+06", + "-1.92901233e+06", + "-1.92901233e+06", + "-1929012.32812500", + "-1929012.32812500", + "-1929012.32812500", + "-1929012.33", + "-1929012.33", + "-1929012.33", + "-1.929012328e+06", + "-1.929012328e+06", + "-1.929012328e+06", + "-1929012.328125000", + "-1929012.328125000", + "-1929012.328125000", + "-1929012.328", + "-1929012.328", + "-1929012.328", + "-1.9290123281e+06", + "-1.9290123281e+06", + "-1.9290123281e+06", + "-1929012.3281250000", + "-1929012.3281250000", + "-1929012.3281250000", + "-1929012.3281", + "-1929012.3281", + "-1929012.3281", + "-1.92901232812e+06", + "-1.92901232812e+06", + "-1.92901232812e+06", + "-1929012.32812500000", + "-1929012.32812500000", + "-1929012.32812500000", + "-1929012.32812", + "-1929012.32812", + "-1929012.32812", + "-1.929012328125e+06", + "-1.929012328125e+06", + "-1.929012328125e+06", + "-1929012.328125000000", + "-1929012.328125000000", + "-1929012.328125000000", + "-1929012.328125", + "-1929012.328125", + "-1929012.328125", + "-1.9290123281250e+06", + "-1.9290123281250e+06", + "-1.9290123281250e+06", + "-1929012.3281250000000", + "-1929012.3281250000000", + "-1929012.3281250000000", + }}, + {{ + "2e+05", + "2.e+05", + "+2e+05", + "2.4e+05", + "+2.4e+05", + "2.4e+05", + "241126.5", + "241126.5", + "+241126.5", + "2.4e+05", + "2.4e+05", + "+2.4e+05", + "2.41e+05", + "+2.41e+05", + "2.41e+05", + "241126.54", + "241126.54", + "+241126.54", + "2.41e+05", + "2.41e+05", + "+2.41e+05", + "2.411e+05", + "+2.411e+05", + "2.411e+05", + "241126.541", + "241126.541", + "+241126.541", + "2.411e+05", + "2.411e+05", + "+2.411e+05", + "2.4113e+05", + "+2.4113e+05", + "2.4113e+05", + "241126.5410", + "241126.5410", + "+241126.5410", + "2.4113e+05", + "2.4113e+05", + "+2.4113e+05", + "2.41127e+05", + "+2.41127e+05", + "2.41127e+05", + "241126.54102", + "241126.54102", + "+241126.54102", + "241127", + "241127.", + "+241127", + "2.411265e+05", + "+2.411265e+05", + "2.411265e+05", + "241126.541016", + "241126.541016", + "+241126.541016", + "241126.5", + "241126.5", + "+241126.5", + "2.4112654e+05", + "+2.4112654e+05", + "2.4112654e+05", + "241126.5410156", + "241126.5410156", + "+241126.5410156", + "241126.54", + "241126.54", + "+241126.54", + "2.41126541e+05", + "+2.41126541e+05", + "2.41126541e+05", + "241126.54101562", + "241126.54101562", + "+241126.54101562", + "241126.541", + "241126.541", + "+241126.541", + "2.411265410e+05", + "+2.411265410e+05", + "2.411265410e+05", + "241126.541015625", + "241126.541015625", + "+241126.541015625", + "241126.541", + "241126.5410", + "+241126.541", + "2.4112654102e+05", + "+2.4112654102e+05", + "2.4112654102e+05", + "241126.5410156250", + "241126.5410156250", + "+241126.5410156250", + "241126.54102", + "241126.54102", + "+241126.54102", + "2.41126541016e+05", + "+2.41126541016e+05", + "2.41126541016e+05", + "241126.54101562500", + "241126.54101562500", + "+241126.54101562500", + "241126.541016", + "241126.541016", + "+241126.541016", + "2.411265410156e+05", + "+2.411265410156e+05", + "2.411265410156e+05", + "241126.541015625000", + "241126.541015625000", + "+241126.541015625000", + "241126.5410156", + "241126.5410156", + "+241126.5410156", + "2.4112654101562e+05", + "+2.4112654101562e+05", + "2.4112654101562e+05", + "241126.5410156250000", + "241126.5410156250000", + "+241126.5410156250000", + }}, + {{ + "-2e+05", + "-2.e+05", + "-2e+05", + "-2.4e+05", + "-2.4e+05", + "-2.4e+05", + "-241126.5", + "-241126.5", + "-241126.5", + "-2.4e+05", + "-2.4e+05", + "-2.4e+05", + "-2.41e+05", + "-2.41e+05", + "-2.41e+05", + "-241126.54", + "-241126.54", + "-241126.54", + "-2.41e+05", + "-2.41e+05", + "-2.41e+05", + "-2.411e+05", + "-2.411e+05", + "-2.411e+05", + "-241126.541", + "-241126.541", + "-241126.541", + "-2.411e+05", + "-2.411e+05", + "-2.411e+05", + "-2.4113e+05", + "-2.4113e+05", + "-2.4113e+05", + "-241126.5410", + "-241126.5410", + "-241126.5410", + "-2.4113e+05", + "-2.4113e+05", + "-2.4113e+05", + "-2.41127e+05", + "-2.41127e+05", + "-2.41127e+05", + "-241126.54102", + "-241126.54102", + "-241126.54102", + "-241127", + "-241127.", + "-241127", + "-2.411265e+05", + "-2.411265e+05", + "-2.411265e+05", + "-241126.541016", + "-241126.541016", + "-241126.541016", + "-241126.5", + "-241126.5", + "-241126.5", + "-2.4112654e+05", + "-2.4112654e+05", + "-2.4112654e+05", + "-241126.5410156", + "-241126.5410156", + "-241126.5410156", + "-241126.54", + "-241126.54", + "-241126.54", + "-2.41126541e+05", + "-2.41126541e+05", + "-2.41126541e+05", + "-241126.54101562", + "-241126.54101562", + "-241126.54101562", + "-241126.541", + "-241126.541", + "-241126.541", + "-2.411265410e+05", + "-2.411265410e+05", + "-2.411265410e+05", + "-241126.541015625", + "-241126.541015625", + "-241126.541015625", + "-241126.541", + "-241126.5410", + "-241126.541", + "-2.4112654102e+05", + "-2.4112654102e+05", + "-2.4112654102e+05", + "-241126.5410156250", + "-241126.5410156250", + "-241126.5410156250", + "-241126.54102", + "-241126.54102", + "-241126.54102", + "-2.41126541016e+05", + "-2.41126541016e+05", + "-2.41126541016e+05", + "-241126.54101562500", + "-241126.54101562500", + "-241126.54101562500", + "-241126.541016", + "-241126.541016", + "-241126.541016", + "-2.411265410156e+05", + "-2.411265410156e+05", + "-2.411265410156e+05", + "-241126.541015625000", + "-241126.541015625000", + "-241126.541015625000", + "-241126.5410156", + "-241126.5410156", + "-241126.5410156", + "-2.4112654101562e+05", + "-2.4112654101562e+05", + "-2.4112654101562e+05", + "-241126.5410156250000", + "-241126.5410156250000", + "-241126.5410156250000", + }}, + {{ + "3e+04", + "3.e+04", + "+3e+04", + "3.0e+04", + "+3.0e+04", + "3.0e+04", + "30140.8", + "30140.8", + "+30140.8", + "3e+04", + "3.0e+04", + "+3e+04", + "3.01e+04", + "+3.01e+04", + "3.01e+04", + "30140.82", + "30140.82", + "+30140.82", + "3.01e+04", + "3.01e+04", + "+3.01e+04", + "3.014e+04", + "+3.014e+04", + "3.014e+04", + "30140.818", + "30140.818", + "+30140.818", + "3.014e+04", + "3.014e+04", + "+3.014e+04", + "3.0141e+04", + "+3.0141e+04", + "3.0141e+04", + "30140.8176", + "30140.8176", + "+30140.8176", + "30141", + "30141.", + "+30141", + "3.01408e+04", + "+3.01408e+04", + "3.01408e+04", + "30140.81763", + "30140.81763", + "+30140.81763", + "30140.8", + "30140.8", + "+30140.8", + "3.014082e+04", + "+3.014082e+04", + "3.014082e+04", + "30140.817627", + "30140.817627", + "+30140.817627", + "30140.82", + "30140.82", + "+30140.82", + "3.0140818e+04", + "+3.0140818e+04", + "3.0140818e+04", + "30140.8176270", + "30140.8176270", + "+30140.8176270", + "30140.818", + "30140.818", + "+30140.818", + "3.01408176e+04", + "+3.01408176e+04", + "3.01408176e+04", + "30140.81762695", + "30140.81762695", + "+30140.81762695", + "30140.8176", + "30140.8176", + "+30140.8176", + "3.014081763e+04", + "+3.014081763e+04", + "3.014081763e+04", + "30140.817626953", + "30140.817626953", + "+30140.817626953", + "30140.81763", + "30140.81763", + "+30140.81763", + "3.0140817627e+04", + "+3.0140817627e+04", + "3.0140817627e+04", + "30140.8176269531", + "30140.8176269531", + "+30140.8176269531", + "30140.817627", + "30140.817627", + "+30140.817627", + "3.01408176270e+04", + "+3.01408176270e+04", + "3.01408176270e+04", + "30140.81762695312", + "30140.81762695312", + "+30140.81762695312", + "30140.817627", + "30140.8176270", + "+30140.817627", + "3.014081762695e+04", + "+3.014081762695e+04", + "3.014081762695e+04", + "30140.817626953125", + "30140.817626953125", + "+30140.817626953125", + "30140.81762695", + "30140.81762695", + "+30140.81762695", + "3.0140817626953e+04", + "+3.0140817626953e+04", + "3.0140817626953e+04", + "30140.8176269531250", + "30140.8176269531250", + "+30140.8176269531250", + }}, + {{ + "-3e+04", + "-3.e+04", + "-3e+04", + "-3.0e+04", + "-3.0e+04", + "-3.0e+04", + "-30140.8", + "-30140.8", + "-30140.8", + "-3e+04", + "-3.0e+04", + "-3e+04", + "-3.01e+04", + "-3.01e+04", + "-3.01e+04", + "-30140.82", + "-30140.82", + "-30140.82", + "-3.01e+04", + "-3.01e+04", + "-3.01e+04", + "-3.014e+04", + "-3.014e+04", + "-3.014e+04", + "-30140.818", + "-30140.818", + "-30140.818", + "-3.014e+04", + "-3.014e+04", + "-3.014e+04", + "-3.0141e+04", + "-3.0141e+04", + "-3.0141e+04", + "-30140.8176", + "-30140.8176", + "-30140.8176", + "-30141", + "-30141.", + "-30141", + "-3.01408e+04", + "-3.01408e+04", + "-3.01408e+04", + "-30140.81763", + "-30140.81763", + "-30140.81763", + "-30140.8", + "-30140.8", + "-30140.8", + "-3.014082e+04", + "-3.014082e+04", + "-3.014082e+04", + "-30140.817627", + "-30140.817627", + "-30140.817627", + "-30140.82", + "-30140.82", + "-30140.82", + "-3.0140818e+04", + "-3.0140818e+04", + "-3.0140818e+04", + "-30140.8176270", + "-30140.8176270", + "-30140.8176270", + "-30140.818", + "-30140.818", + "-30140.818", + "-3.01408176e+04", + "-3.01408176e+04", + "-3.01408176e+04", + "-30140.81762695", + "-30140.81762695", + "-30140.81762695", + "-30140.8176", + "-30140.8176", + "-30140.8176", + "-3.014081763e+04", + "-3.014081763e+04", + "-3.014081763e+04", + "-30140.817626953", + "-30140.817626953", + "-30140.817626953", + "-30140.81763", + "-30140.81763", + "-30140.81763", + "-3.0140817627e+04", + "-3.0140817627e+04", + "-3.0140817627e+04", + "-30140.8176269531", + "-30140.8176269531", + "-30140.8176269531", + "-30140.817627", + "-30140.817627", + "-30140.817627", + "-3.01408176270e+04", + "-3.01408176270e+04", + "-3.01408176270e+04", + "-30140.81762695312", + "-30140.81762695312", + "-30140.81762695312", + "-30140.817627", + "-30140.8176270", + "-30140.817627", + "-3.014081762695e+04", + "-3.014081762695e+04", + "-3.014081762695e+04", + "-30140.817626953125", + "-30140.817626953125", + "-30140.817626953125", + "-30140.81762695", + "-30140.81762695", + "-30140.81762695", + "-3.0140817626953e+04", + "-3.0140817626953e+04", + "-3.0140817626953e+04", + "-30140.8176269531250", + "-30140.8176269531250", + "-30140.8176269531250", + }}, + {{ + "4e+03", + "4.e+03", + "+4e+03", + "3.8e+03", + "+3.8e+03", + "3.8e+03", + "3767.6", + "3767.6", + "+3767.6", + "3.8e+03", + "3.8e+03", + "+3.8e+03", + "3.77e+03", + "+3.77e+03", + "3.77e+03", + "3767.60", + "3767.60", + "+3767.60", + "3.77e+03", + "3.77e+03", + "+3.77e+03", + "3.768e+03", + "+3.768e+03", + "3.768e+03", + "3767.602", + "3767.602", + "+3767.602", + "3768", + "3768.", + "+3768", + "3.7676e+03", + "+3.7676e+03", + "3.7676e+03", + "3767.6022", + "3767.6022", + "+3767.6022", + "3767.6", + "3767.6", + "+3767.6", + "3.76760e+03", + "+3.76760e+03", + "3.76760e+03", + "3767.60220", + "3767.60220", + "+3767.60220", + "3767.6", + "3767.60", + "+3767.6", + "3.767602e+03", + "+3.767602e+03", + "3.767602e+03", + "3767.602203", + "3767.602203", + "+3767.602203", + "3767.602", + "3767.602", + "+3767.602", + "3.7676022e+03", + "+3.7676022e+03", + "3.7676022e+03", + "3767.6022034", + "3767.6022034", + "+3767.6022034", + "3767.6022", + "3767.6022", + "+3767.6022", + "3.76760220e+03", + "+3.76760220e+03", + "3.76760220e+03", + "3767.60220337", + "3767.60220337", + "+3767.60220337", + "3767.6022", + "3767.60220", + "+3767.6022", + "3.767602203e+03", + "+3.767602203e+03", + "3.767602203e+03", + "3767.602203369", + "3767.602203369", + "+3767.602203369", + "3767.602203", + "3767.602203", + "+3767.602203", + "3.7676022034e+03", + "+3.7676022034e+03", + "3.7676022034e+03", + "3767.6022033691", + "3767.6022033691", + "+3767.6022033691", + "3767.6022034", + "3767.6022034", + "+3767.6022034", + "3.76760220337e+03", + "+3.76760220337e+03", + "3.76760220337e+03", + "3767.60220336914", + "3767.60220336914", + "+3767.60220336914", + "3767.60220337", + "3767.60220337", + "+3767.60220337", + "3.767602203369e+03", + "+3.767602203369e+03", + "3.767602203369e+03", + "3767.602203369141", + "3767.602203369141", + "+3767.602203369141", + "3767.602203369", + "3767.602203369", + "+3767.602203369", + "3.7676022033691e+03", + "+3.7676022033691e+03", + "3.7676022033691e+03", + "3767.6022033691406", + "3767.6022033691406", + "+3767.6022033691406", + }}, + {{ + "-4e+03", + "-4.e+03", + "-4e+03", + "-3.8e+03", + "-3.8e+03", + "-3.8e+03", + "-3767.6", + "-3767.6", + "-3767.6", + "-3.8e+03", + "-3.8e+03", + "-3.8e+03", + "-3.77e+03", + "-3.77e+03", + "-3.77e+03", + "-3767.60", + "-3767.60", + "-3767.60", + "-3.77e+03", + "-3.77e+03", + "-3.77e+03", + "-3.768e+03", + "-3.768e+03", + "-3.768e+03", + "-3767.602", + "-3767.602", + "-3767.602", + "-3768", + "-3768.", + "-3768", + "-3.7676e+03", + "-3.7676e+03", + "-3.7676e+03", + "-3767.6022", + "-3767.6022", + "-3767.6022", + "-3767.6", + "-3767.6", + "-3767.6", + "-3.76760e+03", + "-3.76760e+03", + "-3.76760e+03", + "-3767.60220", + "-3767.60220", + "-3767.60220", + "-3767.6", + "-3767.60", + "-3767.6", + "-3.767602e+03", + "-3.767602e+03", + "-3.767602e+03", + "-3767.602203", + "-3767.602203", + "-3767.602203", + "-3767.602", + "-3767.602", + "-3767.602", + "-3.7676022e+03", + "-3.7676022e+03", + "-3.7676022e+03", + "-3767.6022034", + "-3767.6022034", + "-3767.6022034", + "-3767.6022", + "-3767.6022", + "-3767.6022", + "-3.76760220e+03", + "-3.76760220e+03", + "-3.76760220e+03", + "-3767.60220337", + "-3767.60220337", + "-3767.60220337", + "-3767.6022", + "-3767.60220", + "-3767.6022", + "-3.767602203e+03", + "-3.767602203e+03", + "-3.767602203e+03", + "-3767.602203369", + "-3767.602203369", + "-3767.602203369", + "-3767.602203", + "-3767.602203", + "-3767.602203", + "-3.7676022034e+03", + "-3.7676022034e+03", + "-3.7676022034e+03", + "-3767.6022033691", + "-3767.6022033691", + "-3767.6022033691", + "-3767.6022034", + "-3767.6022034", + "-3767.6022034", + "-3.76760220337e+03", + "-3.76760220337e+03", + "-3.76760220337e+03", + "-3767.60220336914", + "-3767.60220336914", + "-3767.60220336914", + "-3767.60220337", + "-3767.60220337", + "-3767.60220337", + "-3.767602203369e+03", + "-3.767602203369e+03", + "-3.767602203369e+03", + "-3767.602203369141", + "-3767.602203369141", + "-3767.602203369141", + "-3767.602203369", + "-3767.602203369", + "-3767.602203369", + "-3.7676022033691e+03", + "-3.7676022033691e+03", + "-3.7676022033691e+03", + "-3767.6022033691406", + "-3767.6022033691406", + "-3767.6022033691406", + }}, + {{ + "5e+02", + "5.e+02", + "+5e+02", + "4.7e+02", + "+4.7e+02", + "4.7e+02", + "471.0", + "471.0", + "+471.0", + "4.7e+02", + "4.7e+02", + "+4.7e+02", + "4.71e+02", + "+4.71e+02", + "4.71e+02", + "470.95", + "470.95", + "+470.95", + "471", + "471.", + "+471", + "4.710e+02", + "+4.710e+02", + "4.710e+02", + "470.950", + "470.950", + "+470.950", + "471", + "471.0", + "+471", + "4.7095e+02", + "+4.7095e+02", + "4.7095e+02", + "470.9503", + "470.9503", + "+470.9503", + "470.95", + "470.95", + "+470.95", + "4.70950e+02", + "+4.70950e+02", + "4.70950e+02", + "470.95028", + "470.95028", + "+470.95028", + "470.95", + "470.950", + "+470.95", + "4.709503e+02", + "+4.709503e+02", + "4.709503e+02", + "470.950275", + "470.950275", + "+470.950275", + "470.9503", + "470.9503", + "+470.9503", + "4.7095028e+02", + "+4.7095028e+02", + "4.7095028e+02", + "470.9502754", + "470.9502754", + "+470.9502754", + "470.95028", + "470.95028", + "+470.95028", + "4.70950275e+02", + "+4.70950275e+02", + "4.70950275e+02", + "470.95027542", + "470.95027542", + "+470.95027542", + "470.950275", + "470.950275", + "+470.950275", + "4.709502754e+02", + "+4.709502754e+02", + "4.709502754e+02", + "470.950275421", + "470.950275421", + "+470.950275421", + "470.9502754", + "470.9502754", + "+470.9502754", + "4.7095027542e+02", + "+4.7095027542e+02", + "4.7095027542e+02", + "470.9502754211", + "470.9502754211", + "+470.9502754211", + "470.95027542", + "470.95027542", + "+470.95027542", + "4.70950275421e+02", + "+4.70950275421e+02", + "4.70950275421e+02", + "470.95027542114", + "470.95027542114", + "+470.95027542114", + "470.950275421", + "470.950275421", + "+470.950275421", + "4.709502754211e+02", + "+4.709502754211e+02", + "4.709502754211e+02", + "470.950275421143", + "470.950275421143", + "+470.950275421143", + "470.9502754211", + "470.9502754211", + "+470.9502754211", + "4.7095027542114e+02", + "+4.7095027542114e+02", + "4.7095027542114e+02", + "470.9502754211426", + "470.9502754211426", + "+470.9502754211426", + }}, + {{ + "-5e+02", + "-5.e+02", + "-5e+02", + "-4.7e+02", + "-4.7e+02", + "-4.7e+02", + "-471.0", + "-471.0", + "-471.0", + "-4.7e+02", + "-4.7e+02", + "-4.7e+02", + "-4.71e+02", + "-4.71e+02", + "-4.71e+02", + "-470.95", + "-470.95", + "-470.95", + "-471", + "-471.", + "-471", + "-4.710e+02", + "-4.710e+02", + "-4.710e+02", + "-470.950", + "-470.950", + "-470.950", + "-471", + "-471.0", + "-471", + "-4.7095e+02", + "-4.7095e+02", + "-4.7095e+02", + "-470.9503", + "-470.9503", + "-470.9503", + "-470.95", + "-470.95", + "-470.95", + "-4.70950e+02", + "-4.70950e+02", + "-4.70950e+02", + "-470.95028", + "-470.95028", + "-470.95028", + "-470.95", + "-470.950", + "-470.95", + "-4.709503e+02", + "-4.709503e+02", + "-4.709503e+02", + "-470.950275", + "-470.950275", + "-470.950275", + "-470.9503", + "-470.9503", + "-470.9503", + "-4.7095028e+02", + "-4.7095028e+02", + "-4.7095028e+02", + "-470.9502754", + "-470.9502754", + "-470.9502754", + "-470.95028", + "-470.95028", + "-470.95028", + "-4.70950275e+02", + "-4.70950275e+02", + "-4.70950275e+02", + "-470.95027542", + "-470.95027542", + "-470.95027542", + "-470.950275", + "-470.950275", + "-470.950275", + "-4.709502754e+02", + "-4.709502754e+02", + "-4.709502754e+02", + "-470.950275421", + "-470.950275421", + "-470.950275421", + "-470.9502754", + "-470.9502754", + "-470.9502754", + "-4.7095027542e+02", + "-4.7095027542e+02", + "-4.7095027542e+02", + "-470.9502754211", + "-470.9502754211", + "-470.9502754211", + "-470.95027542", + "-470.95027542", + "-470.95027542", + "-4.70950275421e+02", + "-4.70950275421e+02", + "-4.70950275421e+02", + "-470.95027542114", + "-470.95027542114", + "-470.95027542114", + "-470.950275421", + "-470.950275421", + "-470.950275421", + "-4.709502754211e+02", + "-4.709502754211e+02", + "-4.709502754211e+02", + "-470.950275421143", + "-470.950275421143", + "-470.950275421143", + "-470.9502754211", + "-470.9502754211", + "-470.9502754211", + "-4.7095027542114e+02", + "-4.7095027542114e+02", + "-4.7095027542114e+02", + "-470.9502754211426", + "-470.9502754211426", + "-470.9502754211426", + }}, + {{ + "6e+01", + "6.e+01", + "+6e+01", + "5.9e+01", + "+5.9e+01", + "5.9e+01", + "58.9", + "58.9", + "+58.9", + "59", + "59.", + "+59", + "5.89e+01", + "+5.89e+01", + "5.89e+01", + "58.87", + "58.87", + "+58.87", + "58.9", + "58.9", + "+58.9", + "5.887e+01", + "+5.887e+01", + "5.887e+01", + "58.869", + "58.869", + "+58.869", + "58.87", + "58.87", + "+58.87", + "5.8869e+01", + "+5.8869e+01", + "5.8869e+01", + "58.8688", + "58.8688", + "+58.8688", + "58.869", + "58.869", + "+58.869", + "5.88688e+01", + "+5.88688e+01", + "5.88688e+01", + "58.86878", + "58.86878", + "+58.86878", + "58.8688", + "58.8688", + "+58.8688", + "5.886878e+01", + "+5.886878e+01", + "5.886878e+01", + "58.868784", + "58.868784", + "+58.868784", + "58.86878", + "58.86878", + "+58.86878", + "5.8868784e+01", + "+5.8868784e+01", + "5.8868784e+01", + "58.8687844", + "58.8687844", + "+58.8687844", + "58.868784", + "58.868784", + "+58.868784", + "5.88687844e+01", + "+5.88687844e+01", + "5.88687844e+01", + "58.86878443", + "58.86878443", + "+58.86878443", + "58.8687844", + "58.8687844", + "+58.8687844", + "5.886878443e+01", + "+5.886878443e+01", + "5.886878443e+01", + "58.868784428", + "58.868784428", + "+58.868784428", + "58.86878443", + "58.86878443", + "+58.86878443", + "5.8868784428e+01", + "+5.8868784428e+01", + "5.8868784428e+01", + "58.8687844276", + "58.8687844276", + "+58.8687844276", + "58.868784428", + "58.868784428", + "+58.868784428", + "5.88687844276e+01", + "+5.88687844276e+01", + "5.88687844276e+01", + "58.86878442764", + "58.86878442764", + "+58.86878442764", + "58.8687844276", + "58.8687844276", + "+58.8687844276", + "5.886878442764e+01", + "+5.886878442764e+01", + "5.886878442764e+01", + "58.868784427643", + "58.868784427643", + "+58.868784427643", + "58.86878442764", + "58.86878442764", + "+58.86878442764", + "5.8868784427643e+01", + "+5.8868784427643e+01", + "5.8868784427643e+01", + "58.8687844276428", + "58.8687844276428", + "+58.8687844276428", + }}, + {{ + "-6e+01", + "-6.e+01", + "-6e+01", + "-5.9e+01", + "-5.9e+01", + "-5.9e+01", + "-58.9", + "-58.9", + "-58.9", + "-59", + "-59.", + "-59", + "-5.89e+01", + "-5.89e+01", + "-5.89e+01", + "-58.87", + "-58.87", + "-58.87", + "-58.9", + "-58.9", + "-58.9", + "-5.887e+01", + "-5.887e+01", + "-5.887e+01", + "-58.869", + "-58.869", + "-58.869", + "-58.87", + "-58.87", + "-58.87", + "-5.8869e+01", + "-5.8869e+01", + "-5.8869e+01", + "-58.8688", + "-58.8688", + "-58.8688", + "-58.869", + "-58.869", + "-58.869", + "-5.88688e+01", + "-5.88688e+01", + "-5.88688e+01", + "-58.86878", + "-58.86878", + "-58.86878", + "-58.8688", + "-58.8688", + "-58.8688", + "-5.886878e+01", + "-5.886878e+01", + "-5.886878e+01", + "-58.868784", + "-58.868784", + "-58.868784", + "-58.86878", + "-58.86878", + "-58.86878", + "-5.8868784e+01", + "-5.8868784e+01", + "-5.8868784e+01", + "-58.8687844", + "-58.8687844", + "-58.8687844", + "-58.868784", + "-58.868784", + "-58.868784", + "-5.88687844e+01", + "-5.88687844e+01", + "-5.88687844e+01", + "-58.86878443", + "-58.86878443", + "-58.86878443", + "-58.8687844", + "-58.8687844", + "-58.8687844", + "-5.886878443e+01", + "-5.886878443e+01", + "-5.886878443e+01", + "-58.868784428", + "-58.868784428", + "-58.868784428", + "-58.86878443", + "-58.86878443", + "-58.86878443", + "-5.8868784428e+01", + "-5.8868784428e+01", + "-5.8868784428e+01", + "-58.8687844276", + "-58.8687844276", + "-58.8687844276", + "-58.868784428", + "-58.868784428", + "-58.868784428", + "-5.88687844276e+01", + "-5.88687844276e+01", + "-5.88687844276e+01", + "-58.86878442764", + "-58.86878442764", + "-58.86878442764", + "-58.8687844276", + "-58.8687844276", + "-58.8687844276", + "-5.886878442764e+01", + "-5.886878442764e+01", + "-5.886878442764e+01", + "-58.868784427643", + "-58.868784427643", + "-58.868784427643", + "-58.86878442764", + "-58.86878442764", + "-58.86878442764", + "-5.8868784427643e+01", + "-5.8868784427643e+01", + "-5.8868784427643e+01", + "-58.8687844276428", + "-58.8687844276428", + "-58.8687844276428", + }}, + {{ + "7", + "7.", + "+7", + "7.4e+00", + "+7.4e+00", + "7.4e+00", + "7.4", + "7.4", + "+7.4", + "7.4", + "7.4", + "+7.4", + "7.36e+00", + "+7.36e+00", + "7.36e+00", + "7.36", + "7.36", + "+7.36", + "7.36", + "7.36", + "+7.36", + "7.359e+00", + "+7.359e+00", + "7.359e+00", + "7.359", + "7.359", + "+7.359", + "7.359", + "7.359", + "+7.359", + "7.3586e+00", + "+7.3586e+00", + "7.3586e+00", + "7.3586", + "7.3586", + "+7.3586", + "7.3586", + "7.3586", + "+7.3586", + "7.35860e+00", + "+7.35860e+00", + "7.35860e+00", + "7.35860", + "7.35860", + "+7.35860", + "7.3586", + "7.35860", + "+7.3586", + "7.358598e+00", + "+7.358598e+00", + "7.358598e+00", + "7.358598", + "7.358598", + "+7.358598", + "7.358598", + "7.358598", + "+7.358598", + "7.3585981e+00", + "+7.3585981e+00", + "7.3585981e+00", + "7.3585981", + "7.3585981", + "+7.3585981", + "7.3585981", + "7.3585981", + "+7.3585981", + "7.35859805e+00", + "+7.35859805e+00", + "7.35859805e+00", + "7.35859805", + "7.35859805", + "+7.35859805", + "7.35859805", + "7.35859805", + "+7.35859805", + "7.358598053e+00", + "+7.358598053e+00", + "7.358598053e+00", + "7.358598053", + "7.358598053", + "+7.358598053", + "7.358598053", + "7.358598053", + "+7.358598053", + "7.3585980535e+00", + "+7.3585980535e+00", + "7.3585980535e+00", + "7.3585980535", + "7.3585980535", + "+7.3585980535", + "7.3585980535", + "7.3585980535", + "+7.3585980535", + "7.35859805346e+00", + "+7.35859805346e+00", + "7.35859805346e+00", + "7.35859805346", + "7.35859805346", + "+7.35859805346", + "7.35859805346", + "7.35859805346", + "+7.35859805346", + "7.358598053455e+00", + "+7.358598053455e+00", + "7.358598053455e+00", + "7.358598053455", + "7.358598053455", + "+7.358598053455", + "7.358598053455", + "7.358598053455", + "+7.358598053455", + "7.3585980534554e+00", + "+7.3585980534554e+00", + "7.3585980534554e+00", + "7.3585980534554", + "7.3585980534554", + "+7.3585980534554", + }}, + {{ + "-7", + "-7.", + "-7", + "-7.4e+00", + "-7.4e+00", + "-7.4e+00", + "-7.4", + "-7.4", + "-7.4", + "-7.4", + "-7.4", + "-7.4", + "-7.36e+00", + "-7.36e+00", + "-7.36e+00", + "-7.36", + "-7.36", + "-7.36", + "-7.36", + "-7.36", + "-7.36", + "-7.359e+00", + "-7.359e+00", + "-7.359e+00", + "-7.359", + "-7.359", + "-7.359", + "-7.359", + "-7.359", + "-7.359", + "-7.3586e+00", + "-7.3586e+00", + "-7.3586e+00", + "-7.3586", + "-7.3586", + "-7.3586", + "-7.3586", + "-7.3586", + "-7.3586", + "-7.35860e+00", + "-7.35860e+00", + "-7.35860e+00", + "-7.35860", + "-7.35860", + "-7.35860", + "-7.3586", + "-7.35860", + "-7.3586", + "-7.358598e+00", + "-7.358598e+00", + "-7.358598e+00", + "-7.358598", + "-7.358598", + "-7.358598", + "-7.358598", + "-7.358598", + "-7.358598", + "-7.3585981e+00", + "-7.3585981e+00", + "-7.3585981e+00", + "-7.3585981", + "-7.3585981", + "-7.3585981", + "-7.3585981", + "-7.3585981", + "-7.3585981", + "-7.35859805e+00", + "-7.35859805e+00", + "-7.35859805e+00", + "-7.35859805", + "-7.35859805", + "-7.35859805", + "-7.35859805", + "-7.35859805", + "-7.35859805", + "-7.358598053e+00", + "-7.358598053e+00", + "-7.358598053e+00", + "-7.358598053", + "-7.358598053", + "-7.358598053", + "-7.358598053", + "-7.358598053", + "-7.358598053", + "-7.3585980535e+00", + "-7.3585980535e+00", + "-7.3585980535e+00", + "-7.3585980535", + "-7.3585980535", + "-7.3585980535", + "-7.3585980535", + "-7.3585980535", + "-7.3585980535", + "-7.35859805346e+00", + "-7.35859805346e+00", + "-7.35859805346e+00", + "-7.35859805346", + "-7.35859805346", + "-7.35859805346", + "-7.35859805346", + "-7.35859805346", + "-7.35859805346", + "-7.358598053455e+00", + "-7.358598053455e+00", + "-7.358598053455e+00", + "-7.358598053455", + "-7.358598053455", + "-7.358598053455", + "-7.358598053455", + "-7.358598053455", + "-7.358598053455", + "-7.3585980534554e+00", + "-7.3585980534554e+00", + "-7.3585980534554e+00", + "-7.3585980534554", + "-7.3585980534554", + "-7.3585980534554", + }}, + {{ + "0.9", + "0.9", + "+0.9", + "9.2e-01", + "+9.2e-01", + "9.2e-01", + "0.9", + "0.9", + "+0.9", + "0.92", + "0.92", + "+0.92", + "9.20e-01", + "+9.20e-01", + "9.20e-01", + "0.92", + "0.92", + "+0.92", + "0.92", + "0.920", + "+0.92", + "9.198e-01", + "+9.198e-01", + "9.198e-01", + "0.920", + "0.920", + "+0.920", + "0.9198", + "0.9198", + "+0.9198", + "9.1982e-01", + "+9.1982e-01", + "9.1982e-01", + "0.9198", + "0.9198", + "+0.9198", + "0.91982", + "0.91982", + "+0.91982", + "9.19825e-01", + "+9.19825e-01", + "9.19825e-01", + "0.91982", + "0.91982", + "+0.91982", + "0.919825", + "0.919825", + "+0.919825", + "9.198248e-01", + "+9.198248e-01", + "9.198248e-01", + "0.919825", + "0.919825", + "+0.919825", + "0.9198248", + "0.9198248", + "+0.9198248", + "9.1982476e-01", + "+9.1982476e-01", + "9.1982476e-01", + "0.9198248", + "0.9198248", + "+0.9198248", + "0.91982476", + "0.91982476", + "+0.91982476", + "9.19824757e-01", + "+9.19824757e-01", + "9.19824757e-01", + "0.91982476", + "0.91982476", + "+0.91982476", + "0.919824757", + "0.919824757", + "+0.919824757", + "9.198247567e-01", + "+9.198247567e-01", + "9.198247567e-01", + "0.919824757", + "0.919824757", + "+0.919824757", + "0.9198247567", + "0.9198247567", + "+0.9198247567", + "9.1982475668e-01", + "+9.1982475668e-01", + "9.1982475668e-01", + "0.9198247567", + "0.9198247567", + "+0.9198247567", + "0.91982475668", + "0.91982475668", + "+0.91982475668", + "9.19824756682e-01", + "+9.19824756682e-01", + "9.19824756682e-01", + "0.91982475668", + "0.91982475668", + "+0.91982475668", + "0.919824756682", + "0.919824756682", + "+0.919824756682", + "9.198247566819e-01", + "+9.198247566819e-01", + "9.198247566819e-01", + "0.919824756682", + "0.919824756682", + "+0.919824756682", + "0.9198247566819", + "0.9198247566819", + "+0.9198247566819", + "9.1982475668192e-01", + "+9.1982475668192e-01", + "9.1982475668192e-01", + "0.9198247566819", + "0.9198247566819", + "+0.9198247566819", + }}, + {{ + "-0.9", + "-0.9", + "-0.9", + "-9.2e-01", + "-9.2e-01", + "-9.2e-01", + "-0.9", + "-0.9", + "-0.9", + "-0.92", + "-0.92", + "-0.92", + "-9.20e-01", + "-9.20e-01", + "-9.20e-01", + "-0.92", + "-0.92", + "-0.92", + "-0.92", + "-0.920", + "-0.92", + "-9.198e-01", + "-9.198e-01", + "-9.198e-01", + "-0.920", + "-0.920", + "-0.920", + "-0.9198", + "-0.9198", + "-0.9198", + "-9.1982e-01", + "-9.1982e-01", + "-9.1982e-01", + "-0.9198", + "-0.9198", + "-0.9198", + "-0.91982", + "-0.91982", + "-0.91982", + "-9.19825e-01", + "-9.19825e-01", + "-9.19825e-01", + "-0.91982", + "-0.91982", + "-0.91982", + "-0.919825", + "-0.919825", + "-0.919825", + "-9.198248e-01", + "-9.198248e-01", + "-9.198248e-01", + "-0.919825", + "-0.919825", + "-0.919825", + "-0.9198248", + "-0.9198248", + "-0.9198248", + "-9.1982476e-01", + "-9.1982476e-01", + "-9.1982476e-01", + "-0.9198248", + "-0.9198248", + "-0.9198248", + "-0.91982476", + "-0.91982476", + "-0.91982476", + "-9.19824757e-01", + "-9.19824757e-01", + "-9.19824757e-01", + "-0.91982476", + "-0.91982476", + "-0.91982476", + "-0.919824757", + "-0.919824757", + "-0.919824757", + "-9.198247567e-01", + "-9.198247567e-01", + "-9.198247567e-01", + "-0.919824757", + "-0.919824757", + "-0.919824757", + "-0.9198247567", + "-0.9198247567", + "-0.9198247567", + "-9.1982475668e-01", + "-9.1982475668e-01", + "-9.1982475668e-01", + "-0.9198247567", + "-0.9198247567", + "-0.9198247567", + "-0.91982475668", + "-0.91982475668", + "-0.91982475668", + "-9.19824756682e-01", + "-9.19824756682e-01", + "-9.19824756682e-01", + "-0.91982475668", + "-0.91982475668", + "-0.91982475668", + "-0.919824756682", + "-0.919824756682", + "-0.919824756682", + "-9.198247566819e-01", + "-9.198247566819e-01", + "-9.198247566819e-01", + "-0.919824756682", + "-0.919824756682", + "-0.919824756682", + "-0.9198247566819", + "-0.9198247566819", + "-0.9198247566819", + "-9.1982475668192e-01", + "-9.1982475668192e-01", + "-9.1982475668192e-01", + "-0.9198247566819", + "-0.9198247566819", + "-0.9198247566819", + }}, + {{ + "0.1", + "0.1", + "+0.1", + "1.1e-01", + "+1.1e-01", + "1.1e-01", + "0.1", + "0.1", + "+0.1", + "0.11", + "0.11", + "+0.11", + "1.15e-01", + "+1.15e-01", + "1.15e-01", + "0.11", + "0.11", + "+0.11", + "0.115", + "0.115", + "+0.115", + "1.150e-01", + "+1.150e-01", + "1.150e-01", + "0.115", + "0.115", + "+0.115", + "0.115", + "0.1150", + "+0.115", + "1.1498e-01", + "+1.1498e-01", + "1.1498e-01", + "0.1150", + "0.1150", + "+0.1150", + "0.11498", + "0.11498", + "+0.11498", + "1.14978e-01", + "+1.14978e-01", + "1.14978e-01", + "0.11498", + "0.11498", + "+0.11498", + "0.114978", + "0.114978", + "+0.114978", + "1.149781e-01", + "+1.149781e-01", + "1.149781e-01", + "0.114978", + "0.114978", + "+0.114978", + "0.1149781", + "0.1149781", + "+0.1149781", + "1.1497809e-01", + "+1.1497809e-01", + "1.1497809e-01", + "0.1149781", + "0.1149781", + "+0.1149781", + "0.11497809", + "0.11497809", + "+0.11497809", + "1.14978095e-01", + "+1.14978095e-01", + "1.14978095e-01", + "0.11497809", + "0.11497809", + "+0.11497809", + "0.114978095", + "0.114978095", + "+0.114978095", + "1.149780946e-01", + "+1.149780946e-01", + "1.149780946e-01", + "0.114978095", + "0.114978095", + "+0.114978095", + "0.1149780946", + "0.1149780946", + "+0.1149780946", + "1.1497809459e-01", + "+1.1497809459e-01", + "1.1497809459e-01", + "0.1149780946", + "0.1149780946", + "+0.1149780946", + "0.11497809459", + "0.11497809459", + "+0.11497809459", + "1.14978094585e-01", + "+1.14978094585e-01", + "1.14978094585e-01", + "0.11497809459", + "0.11497809459", + "+0.11497809459", + "0.114978094585", + "0.114978094585", + "+0.114978094585", + "1.149780945852e-01", + "+1.149780945852e-01", + "1.149780945852e-01", + "0.114978094585", + "0.114978094585", + "+0.114978094585", + "0.1149780945852", + "0.1149780945852", + "+0.1149780945852", + "1.1497809458524e-01", + "+1.1497809458524e-01", + "1.1497809458524e-01", + "0.1149780945852", + "0.1149780945852", + "+0.1149780945852", + }}, + {{ + "-0.1", + "-0.1", + "-0.1", + "-1.1e-01", + "-1.1e-01", + "-1.1e-01", + "-0.1", + "-0.1", + "-0.1", + "-0.11", + "-0.11", + "-0.11", + "-1.15e-01", + "-1.15e-01", + "-1.15e-01", + "-0.11", + "-0.11", + "-0.11", + "-0.115", + "-0.115", + "-0.115", + "-1.150e-01", + "-1.150e-01", + "-1.150e-01", + "-0.115", + "-0.115", + "-0.115", + "-0.115", + "-0.1150", + "-0.115", + "-1.1498e-01", + "-1.1498e-01", + "-1.1498e-01", + "-0.1150", + "-0.1150", + "-0.1150", + "-0.11498", + "-0.11498", + "-0.11498", + "-1.14978e-01", + "-1.14978e-01", + "-1.14978e-01", + "-0.11498", + "-0.11498", + "-0.11498", + "-0.114978", + "-0.114978", + "-0.114978", + "-1.149781e-01", + "-1.149781e-01", + "-1.149781e-01", + "-0.114978", + "-0.114978", + "-0.114978", + "-0.1149781", + "-0.1149781", + "-0.1149781", + "-1.1497809e-01", + "-1.1497809e-01", + "-1.1497809e-01", + "-0.1149781", + "-0.1149781", + "-0.1149781", + "-0.11497809", + "-0.11497809", + "-0.11497809", + "-1.14978095e-01", + "-1.14978095e-01", + "-1.14978095e-01", + "-0.11497809", + "-0.11497809", + "-0.11497809", + "-0.114978095", + "-0.114978095", + "-0.114978095", + "-1.149780946e-01", + "-1.149780946e-01", + "-1.149780946e-01", + "-0.114978095", + "-0.114978095", + "-0.114978095", + "-0.1149780946", + "-0.1149780946", + "-0.1149780946", + "-1.1497809459e-01", + "-1.1497809459e-01", + "-1.1497809459e-01", + "-0.1149780946", + "-0.1149780946", + "-0.1149780946", + "-0.11497809459", + "-0.11497809459", + "-0.11497809459", + "-1.14978094585e-01", + "-1.14978094585e-01", + "-1.14978094585e-01", + "-0.11497809459", + "-0.11497809459", + "-0.11497809459", + "-0.114978094585", + "-0.114978094585", + "-0.114978094585", + "-1.149780945852e-01", + "-1.149780945852e-01", + "-1.149780945852e-01", + "-0.114978094585", + "-0.114978094585", + "-0.114978094585", + "-0.1149780945852", + "-0.1149780945852", + "-0.1149780945852", + "-1.1497809458524e-01", + "-1.1497809458524e-01", + "-1.1497809458524e-01", + "-0.1149780945852", + "-0.1149780945852", + "-0.1149780945852", + }}, + {{ + "0.01", + "0.01", + "+0.01", + "1.4e-02", + "+1.4e-02", + "1.4e-02", + "0.0", + "0.0", + "+0.0", + "0.014", + "0.014", + "+0.014", + "1.44e-02", + "+1.44e-02", + "1.44e-02", + "0.01", + "0.01", + "+0.01", + "0.0144", + "0.0144", + "+0.0144", + "1.437e-02", + "+1.437e-02", + "1.437e-02", + "0.014", + "0.014", + "+0.014", + "0.01437", + "0.01437", + "+0.01437", + "1.4372e-02", + "+1.4372e-02", + "1.4372e-02", + "0.0144", + "0.0144", + "+0.0144", + "0.014372", + "0.014372", + "+0.014372", + "1.43723e-02", + "+1.43723e-02", + "1.43723e-02", + "0.01437", + "0.01437", + "+0.01437", + "0.0143723", + "0.0143723", + "+0.0143723", + "1.437226e-02", + "+1.437226e-02", + "1.437226e-02", + "0.014372", + "0.014372", + "+0.014372", + "0.01437226", + "0.01437226", + "+0.01437226", + "1.4372262e-02", + "+1.4372262e-02", + "1.4372262e-02", + "0.0143723", + "0.0143723", + "+0.0143723", + "0.014372262", + "0.014372262", + "+0.014372262", + "1.43722618e-02", + "+1.43722618e-02", + "1.43722618e-02", + "0.01437226", + "0.01437226", + "+0.01437226", + "0.0143722618", + "0.0143722618", + "+0.0143722618", + "1.437226182e-02", + "+1.437226182e-02", + "1.437226182e-02", + "0.014372262", + "0.014372262", + "+0.014372262", + "0.01437226182", + "0.01437226182", + "+0.01437226182", + "1.4372261823e-02", + "+1.4372261823e-02", + "1.4372261823e-02", + "0.0143722618", + "0.0143722618", + "+0.0143722618", + "0.014372261823", + "0.014372261823", + "+0.014372261823", + "1.43722618232e-02", + "+1.43722618232e-02", + "1.43722618232e-02", + "0.01437226182", + "0.01437226182", + "+0.01437226182", + "0.0143722618232", + "0.0143722618232", + "+0.0143722618232", + "1.437226182315e-02", + "+1.437226182315e-02", + "1.437226182315e-02", + "0.014372261823", + "0.014372261823", + "+0.014372261823", + "0.01437226182315", + "0.01437226182315", + "+0.01437226182315", + "1.4372261823155e-02", + "+1.4372261823155e-02", + "1.4372261823155e-02", + "0.0143722618232", + "0.0143722618232", + "+0.0143722618232", + }}, + {{ + "-0.01", + "-0.01", + "-0.01", + "-1.4e-02", + "-1.4e-02", + "-1.4e-02", + "-0.0", + "-0.0", + "-0.0", + "-0.014", + "-0.014", + "-0.014", + "-1.44e-02", + "-1.44e-02", + "-1.44e-02", + "-0.01", + "-0.01", + "-0.01", + "-0.0144", + "-0.0144", + "-0.0144", + "-1.437e-02", + "-1.437e-02", + "-1.437e-02", + "-0.014", + "-0.014", + "-0.014", + "-0.01437", + "-0.01437", + "-0.01437", + "-1.4372e-02", + "-1.4372e-02", + "-1.4372e-02", + "-0.0144", + "-0.0144", + "-0.0144", + "-0.014372", + "-0.014372", + "-0.014372", + "-1.43723e-02", + "-1.43723e-02", + "-1.43723e-02", + "-0.01437", + "-0.01437", + "-0.01437", + "-0.0143723", + "-0.0143723", + "-0.0143723", + "-1.437226e-02", + "-1.437226e-02", + "-1.437226e-02", + "-0.014372", + "-0.014372", + "-0.014372", + "-0.01437226", + "-0.01437226", + "-0.01437226", + "-1.4372262e-02", + "-1.4372262e-02", + "-1.4372262e-02", + "-0.0143723", + "-0.0143723", + "-0.0143723", + "-0.014372262", + "-0.014372262", + "-0.014372262", + "-1.43722618e-02", + "-1.43722618e-02", + "-1.43722618e-02", + "-0.01437226", + "-0.01437226", + "-0.01437226", + "-0.0143722618", + "-0.0143722618", + "-0.0143722618", + "-1.437226182e-02", + "-1.437226182e-02", + "-1.437226182e-02", + "-0.014372262", + "-0.014372262", + "-0.014372262", + "-0.01437226182", + "-0.01437226182", + "-0.01437226182", + "-1.4372261823e-02", + "-1.4372261823e-02", + "-1.4372261823e-02", + "-0.0143722618", + "-0.0143722618", + "-0.0143722618", + "-0.014372261823", + "-0.014372261823", + "-0.014372261823", + "-1.43722618232e-02", + "-1.43722618232e-02", + "-1.43722618232e-02", + "-0.01437226182", + "-0.01437226182", + "-0.01437226182", + "-0.0143722618232", + "-0.0143722618232", + "-0.0143722618232", + "-1.437226182315e-02", + "-1.437226182315e-02", + "-1.437226182315e-02", + "-0.014372261823", + "-0.014372261823", + "-0.014372261823", + "-0.01437226182315", + "-0.01437226182315", + "-0.01437226182315", + "-1.4372261823155e-02", + "-1.4372261823155e-02", + "-1.4372261823155e-02", + "-0.0143722618232", + "-0.0143722618232", + "-0.0143722618232", + }}, + {{ + "0.002", + "0.002", + "+0.002", + "1.8e-03", + "+1.8e-03", + "1.8e-03", + "0.0", + "0.0", + "+0.0", + "0.0018", + "0.0018", + "+0.0018", + "1.80e-03", + "+1.80e-03", + "1.80e-03", + "0.00", + "0.00", + "+0.00", + "0.0018", + "0.00180", + "+0.0018", + "1.797e-03", + "+1.797e-03", + "1.797e-03", + "0.002", + "0.002", + "+0.002", + "0.001797", + "0.001797", + "+0.001797", + "1.7965e-03", + "+1.7965e-03", + "1.7965e-03", + "0.0018", + "0.0018", + "+0.0018", + "0.0017965", + "0.0017965", + "+0.0017965", + "1.79653e-03", + "+1.79653e-03", + "1.79653e-03", + "0.00180", + "0.00180", + "+0.00180", + "0.00179653", + "0.00179653", + "+0.00179653", + "1.796533e-03", + "+1.796533e-03", + "1.796533e-03", + "0.001797", + "0.001797", + "+0.001797", + "0.001796533", + "0.001796533", + "+0.001796533", + "1.7965327e-03", + "+1.7965327e-03", + "1.7965327e-03", + "0.0017965", + "0.0017965", + "+0.0017965", + "0.0017965327", + "0.0017965327", + "+0.0017965327", + "1.79653273e-03", + "+1.79653273e-03", + "1.79653273e-03", + "0.00179653", + "0.00179653", + "+0.00179653", + "0.00179653273", + "0.00179653273", + "+0.00179653273", + "1.796532728e-03", + "+1.796532728e-03", + "1.796532728e-03", + "0.001796533", + "0.001796533", + "+0.001796533", + "0.001796532728", + "0.001796532728", + "+0.001796532728", + "1.7965327279e-03", + "+1.7965327279e-03", + "1.7965327279e-03", + "0.0017965327", + "0.0017965327", + "+0.0017965327", + "0.0017965327279", + "0.0017965327279", + "+0.0017965327279", + "1.79653272789e-03", + "+1.79653272789e-03", + "1.79653272789e-03", + "0.00179653273", + "0.00179653273", + "+0.00179653273", + "0.00179653272789", + "0.00179653272789", + "+0.00179653272789", + "1.796532727894e-03", + "+1.796532727894e-03", + "1.796532727894e-03", + "0.001796532728", + "0.001796532728", + "+0.001796532728", + "0.001796532727894", + "0.001796532727894", + "+0.001796532727894", + "1.7965327278944e-03", + "+1.7965327278944e-03", + "1.7965327278944e-03", + "0.0017965327279", + "0.0017965327279", + "+0.0017965327279", + }}, + {{ + "-0.002", + "-0.002", + "-0.002", + "-1.8e-03", + "-1.8e-03", + "-1.8e-03", + "-0.0", + "-0.0", + "-0.0", + "-0.0018", + "-0.0018", + "-0.0018", + "-1.80e-03", + "-1.80e-03", + "-1.80e-03", + "-0.00", + "-0.00", + "-0.00", + "-0.0018", + "-0.00180", + "-0.0018", + "-1.797e-03", + "-1.797e-03", + "-1.797e-03", + "-0.002", + "-0.002", + "-0.002", + "-0.001797", + "-0.001797", + "-0.001797", + "-1.7965e-03", + "-1.7965e-03", + "-1.7965e-03", + "-0.0018", + "-0.0018", + "-0.0018", + "-0.0017965", + "-0.0017965", + "-0.0017965", + "-1.79653e-03", + "-1.79653e-03", + "-1.79653e-03", + "-0.00180", + "-0.00180", + "-0.00180", + "-0.00179653", + "-0.00179653", + "-0.00179653", + "-1.796533e-03", + "-1.796533e-03", + "-1.796533e-03", + "-0.001797", + "-0.001797", + "-0.001797", + "-0.001796533", + "-0.001796533", + "-0.001796533", + "-1.7965327e-03", + "-1.7965327e-03", + "-1.7965327e-03", + "-0.0017965", + "-0.0017965", + "-0.0017965", + "-0.0017965327", + "-0.0017965327", + "-0.0017965327", + "-1.79653273e-03", + "-1.79653273e-03", + "-1.79653273e-03", + "-0.00179653", + "-0.00179653", + "-0.00179653", + "-0.00179653273", + "-0.00179653273", + "-0.00179653273", + "-1.796532728e-03", + "-1.796532728e-03", + "-1.796532728e-03", + "-0.001796533", + "-0.001796533", + "-0.001796533", + "-0.001796532728", + "-0.001796532728", + "-0.001796532728", + "-1.7965327279e-03", + "-1.7965327279e-03", + "-1.7965327279e-03", + "-0.0017965327", + "-0.0017965327", + "-0.0017965327", + "-0.0017965327279", + "-0.0017965327279", + "-0.0017965327279", + "-1.79653272789e-03", + "-1.79653272789e-03", + "-1.79653272789e-03", + "-0.00179653273", + "-0.00179653273", + "-0.00179653273", + "-0.00179653272789", + "-0.00179653272789", + "-0.00179653272789", + "-1.796532727894e-03", + "-1.796532727894e-03", + "-1.796532727894e-03", + "-0.001796532728", + "-0.001796532728", + "-0.001796532728", + "-0.001796532727894", + "-0.001796532727894", + "-0.001796532727894", + "-1.7965327278944e-03", + "-1.7965327278944e-03", + "-1.7965327278944e-03", + "-0.0017965327279", + "-0.0017965327279", + "-0.0017965327279", + }}, + {{ + "0.0002", + "0.0002", + "+0.0002", + "2.2e-04", + "+2.2e-04", + "2.2e-04", + "0.0", + "0.0", + "+0.0", + "0.00022", + "0.00022", + "+0.00022", + "2.25e-04", + "+2.25e-04", + "2.25e-04", + "0.00", + "0.00", + "+0.00", + "0.000225", + "0.000225", + "+0.000225", + "2.246e-04", + "+2.246e-04", + "2.246e-04", + "0.000", + "0.000", + "+0.000", + "0.0002246", + "0.0002246", + "+0.0002246", + "2.2457e-04", + "+2.2457e-04", + "2.2457e-04", + "0.0002", + "0.0002", + "+0.0002", + "0.00022457", + "0.00022457", + "+0.00022457", + "2.24567e-04", + "+2.24567e-04", + "2.24567e-04", + "0.00022", + "0.00022", + "+0.00022", + "0.000224567", + "0.000224567", + "+0.000224567", + "2.245666e-04", + "+2.245666e-04", + "2.245666e-04", + "0.000225", + "0.000225", + "+0.000225", + "0.0002245666", + "0.0002245666", + "+0.0002245666", + "2.2456659e-04", + "+2.2456659e-04", + "2.2456659e-04", + "0.0002246", + "0.0002246", + "+0.0002246", + "0.00022456659", + "0.00022456659", + "+0.00022456659", + "2.24566591e-04", + "+2.24566591e-04", + "2.24566591e-04", + "0.00022457", + "0.00022457", + "+0.00022457", + "0.000224566591", + "0.000224566591", + "+0.000224566591", + "2.245665910e-04", + "+2.245665910e-04", + "2.245665910e-04", + "0.000224567", + "0.000224567", + "+0.000224567", + "0.000224566591", + "0.0002245665910", + "+0.000224566591", + "2.2456659099e-04", + "+2.2456659099e-04", + "2.2456659099e-04", + "0.0002245666", + "0.0002245666", + "+0.0002245666", + "0.00022456659099", + "0.00022456659099", + "+0.00022456659099", + "2.24566590987e-04", + "+2.24566590987e-04", + "2.24566590987e-04", + "0.00022456659", + "0.00022456659", + "+0.00022456659", + "0.000224566590987", + "0.000224566590987", + "+0.000224566590987", + "2.245665909868e-04", + "+2.245665909868e-04", + "2.245665909868e-04", + "0.000224566591", + "0.000224566591", + "+0.000224566591", + "0.0002245665909868", + "0.0002245665909868", + "+0.0002245665909868", + "2.2456659098680e-04", + "+2.2456659098680e-04", + "2.2456659098680e-04", + "0.0002245665910", + "0.0002245665910", + "+0.0002245665910", + }}, + {{ + "-0.0002", + "-0.0002", + "-0.0002", + "-2.2e-04", + "-2.2e-04", + "-2.2e-04", + "-0.0", + "-0.0", + "-0.0", + "-0.00022", + "-0.00022", + "-0.00022", + "-2.25e-04", + "-2.25e-04", + "-2.25e-04", + "-0.00", + "-0.00", + "-0.00", + "-0.000225", + "-0.000225", + "-0.000225", + "-2.246e-04", + "-2.246e-04", + "-2.246e-04", + "-0.000", + "-0.000", + "-0.000", + "-0.0002246", + "-0.0002246", + "-0.0002246", + "-2.2457e-04", + "-2.2457e-04", + "-2.2457e-04", + "-0.0002", + "-0.0002", + "-0.0002", + "-0.00022457", + "-0.00022457", + "-0.00022457", + "-2.24567e-04", + "-2.24567e-04", + "-2.24567e-04", + "-0.00022", + "-0.00022", + "-0.00022", + "-0.000224567", + "-0.000224567", + "-0.000224567", + "-2.245666e-04", + "-2.245666e-04", + "-2.245666e-04", + "-0.000225", + "-0.000225", + "-0.000225", + "-0.0002245666", + "-0.0002245666", + "-0.0002245666", + "-2.2456659e-04", + "-2.2456659e-04", + "-2.2456659e-04", + "-0.0002246", + "-0.0002246", + "-0.0002246", + "-0.00022456659", + "-0.00022456659", + "-0.00022456659", + "-2.24566591e-04", + "-2.24566591e-04", + "-2.24566591e-04", + "-0.00022457", + "-0.00022457", + "-0.00022457", + "-0.000224566591", + "-0.000224566591", + "-0.000224566591", + "-2.245665910e-04", + "-2.245665910e-04", + "-2.245665910e-04", + "-0.000224567", + "-0.000224567", + "-0.000224567", + "-0.000224566591", + "-0.0002245665910", + "-0.000224566591", + "-2.2456659099e-04", + "-2.2456659099e-04", + "-2.2456659099e-04", + "-0.0002245666", + "-0.0002245666", + "-0.0002245666", + "-0.00022456659099", + "-0.00022456659099", + "-0.00022456659099", + "-2.24566590987e-04", + "-2.24566590987e-04", + "-2.24566590987e-04", + "-0.00022456659", + "-0.00022456659", + "-0.00022456659", + "-0.000224566590987", + "-0.000224566590987", + "-0.000224566590987", + "-2.245665909868e-04", + "-2.245665909868e-04", + "-2.245665909868e-04", + "-0.000224566591", + "-0.000224566591", + "-0.000224566591", + "-0.0002245665909868", + "-0.0002245665909868", + "-0.0002245665909868", + "-2.2456659098680e-04", + "-2.2456659098680e-04", + "-2.2456659098680e-04", + "-0.0002245665910", + "-0.0002245665910", + "-0.0002245665910", + }}, + {{ + "3e-05", + "3.e-05", + "+3e-05", + "2.8e-05", + "+2.8e-05", + "2.8e-05", + "0.0", + "0.0", + "+0.0", + "2.8e-05", + "2.8e-05", + "+2.8e-05", + "2.81e-05", + "+2.81e-05", + "2.81e-05", + "0.00", + "0.00", + "+0.00", + "2.81e-05", + "2.81e-05", + "+2.81e-05", + "2.807e-05", + "+2.807e-05", + "2.807e-05", + "0.000", + "0.000", + "+0.000", + "2.807e-05", + "2.807e-05", + "+2.807e-05", + "2.8071e-05", + "+2.8071e-05", + "2.8071e-05", + "0.0000", + "0.0000", + "+0.0000", + "2.8071e-05", + "2.8071e-05", + "+2.8071e-05", + "2.80708e-05", + "+2.80708e-05", + "2.80708e-05", + "0.00003", + "0.00003", + "+0.00003", + "2.80708e-05", + "2.80708e-05", + "+2.80708e-05", + "2.807082e-05", + "+2.807082e-05", + "2.807082e-05", + "0.000028", + "0.000028", + "+0.000028", + "2.807082e-05", + "2.807082e-05", + "+2.807082e-05", + "2.8070824e-05", + "+2.8070824e-05", + "2.8070824e-05", + "0.0000281", + "0.0000281", + "+0.0000281", + "2.8070824e-05", + "2.8070824e-05", + "+2.8070824e-05", + "2.80708239e-05", + "+2.80708239e-05", + "2.80708239e-05", + "0.00002807", + "0.00002807", + "+0.00002807", + "2.80708239e-05", + "2.80708239e-05", + "+2.80708239e-05", + "2.807082387e-05", + "+2.807082387e-05", + "2.807082387e-05", + "0.000028071", + "0.000028071", + "+0.000028071", + "2.807082387e-05", + "2.807082387e-05", + "+2.807082387e-05", + "2.8070823873e-05", + "+2.8070823873e-05", + "2.8070823873e-05", + "0.0000280708", + "0.0000280708", + "+0.0000280708", + "2.8070823873e-05", + "2.8070823873e-05", + "+2.8070823873e-05", + "2.80708238733e-05", + "+2.80708238733e-05", + "2.80708238733e-05", + "0.00002807082", + "0.00002807082", + "+0.00002807082", + "2.80708238733e-05", + "2.80708238733e-05", + "+2.80708238733e-05", + "2.807082387335e-05", + "+2.807082387335e-05", + "2.807082387335e-05", + "0.000028070824", + "0.000028070824", + "+0.000028070824", + "2.807082387335e-05", + "2.807082387335e-05", + "+2.807082387335e-05", + "2.8070823873350e-05", + "+2.8070823873350e-05", + "2.8070823873350e-05", + "0.0000280708239", + "0.0000280708239", + "+0.0000280708239", + }}, + {{ + "-3e-05", + "-3.e-05", + "-3e-05", + "-2.8e-05", + "-2.8e-05", + "-2.8e-05", + "-0.0", + "-0.0", + "-0.0", + "-2.8e-05", + "-2.8e-05", + "-2.8e-05", + "-2.81e-05", + "-2.81e-05", + "-2.81e-05", + "-0.00", + "-0.00", + "-0.00", + "-2.81e-05", + "-2.81e-05", + "-2.81e-05", + "-2.807e-05", + "-2.807e-05", + "-2.807e-05", + "-0.000", + "-0.000", + "-0.000", + "-2.807e-05", + "-2.807e-05", + "-2.807e-05", + "-2.8071e-05", + "-2.8071e-05", + "-2.8071e-05", + "-0.0000", + "-0.0000", + "-0.0000", + "-2.8071e-05", + "-2.8071e-05", + "-2.8071e-05", + "-2.80708e-05", + "-2.80708e-05", + "-2.80708e-05", + "-0.00003", + "-0.00003", + "-0.00003", + "-2.80708e-05", + "-2.80708e-05", + "-2.80708e-05", + "-2.807082e-05", + "-2.807082e-05", + "-2.807082e-05", + "-0.000028", + "-0.000028", + "-0.000028", + "-2.807082e-05", + "-2.807082e-05", + "-2.807082e-05", + "-2.8070824e-05", + "-2.8070824e-05", + "-2.8070824e-05", + "-0.0000281", + "-0.0000281", + "-0.0000281", + "-2.8070824e-05", + "-2.8070824e-05", + "-2.8070824e-05", + "-2.80708239e-05", + "-2.80708239e-05", + "-2.80708239e-05", + "-0.00002807", + "-0.00002807", + "-0.00002807", + "-2.80708239e-05", + "-2.80708239e-05", + "-2.80708239e-05", + "-2.807082387e-05", + "-2.807082387e-05", + "-2.807082387e-05", + "-0.000028071", + "-0.000028071", + "-0.000028071", + "-2.807082387e-05", + "-2.807082387e-05", + "-2.807082387e-05", + "-2.8070823873e-05", + "-2.8070823873e-05", + "-2.8070823873e-05", + "-0.0000280708", + "-0.0000280708", + "-0.0000280708", + "-2.8070823873e-05", + "-2.8070823873e-05", + "-2.8070823873e-05", + "-2.80708238733e-05", + "-2.80708238733e-05", + "-2.80708238733e-05", + "-0.00002807082", + "-0.00002807082", + "-0.00002807082", + "-2.80708238733e-05", + "-2.80708238733e-05", + "-2.80708238733e-05", + "-2.807082387335e-05", + "-2.807082387335e-05", + "-2.807082387335e-05", + "-0.000028070824", + "-0.000028070824", + "-0.000028070824", + "-2.807082387335e-05", + "-2.807082387335e-05", + "-2.807082387335e-05", + "-2.8070823873350e-05", + "-2.8070823873350e-05", + "-2.8070823873350e-05", + "-0.0000280708239", + "-0.0000280708239", + "-0.0000280708239", + }}, + {{ + "4e-06", + "4.e-06", + "+4e-06", + "3.5e-06", + "+3.5e-06", + "3.5e-06", + "0.0", + "0.0", + "+0.0", + "3.5e-06", + "3.5e-06", + "+3.5e-06", + "3.51e-06", + "+3.51e-06", + "3.51e-06", + "0.00", + "0.00", + "+0.00", + "3.51e-06", + "3.51e-06", + "+3.51e-06", + "3.509e-06", + "+3.509e-06", + "3.509e-06", + "0.000", + "0.000", + "+0.000", + "3.509e-06", + "3.509e-06", + "+3.509e-06", + "3.5089e-06", + "+3.5089e-06", + "3.5089e-06", + "0.0000", + "0.0000", + "+0.0000", + "3.5089e-06", + "3.5089e-06", + "+3.5089e-06", + "3.50885e-06", + "+3.50885e-06", + "3.50885e-06", + "0.00000", + "0.00000", + "+0.00000", + "3.50885e-06", + "3.50885e-06", + "+3.50885e-06", + "3.508853e-06", + "+3.508853e-06", + "3.508853e-06", + "0.000004", + "0.000004", + "+0.000004", + "3.508853e-06", + "3.508853e-06", + "+3.508853e-06", + "3.5088530e-06", + "+3.5088530e-06", + "3.5088530e-06", + "0.0000035", + "0.0000035", + "+0.0000035", + "3.508853e-06", + "3.5088530e-06", + "+3.508853e-06", + "3.50885298e-06", + "+3.50885298e-06", + "3.50885298e-06", + "0.00000351", + "0.00000351", + "+0.00000351", + "3.50885298e-06", + "3.50885298e-06", + "+3.50885298e-06", + "3.508852984e-06", + "+3.508852984e-06", + "3.508852984e-06", + "0.000003509", + "0.000003509", + "+0.000003509", + "3.508852984e-06", + "3.508852984e-06", + "+3.508852984e-06", + "3.5088529842e-06", + "+3.5088529842e-06", + "3.5088529842e-06", + "0.0000035089", + "0.0000035089", + "+0.0000035089", + "3.5088529842e-06", + "3.5088529842e-06", + "+3.5088529842e-06", + "3.50885298417e-06", + "+3.50885298417e-06", + "3.50885298417e-06", + "0.00000350885", + "0.00000350885", + "+0.00000350885", + "3.50885298417e-06", + "3.50885298417e-06", + "+3.50885298417e-06", + "3.508852984169e-06", + "+3.508852984169e-06", + "3.508852984169e-06", + "0.000003508853", + "0.000003508853", + "+0.000003508853", + "3.508852984169e-06", + "3.508852984169e-06", + "+3.508852984169e-06", + "3.5088529841687e-06", + "+3.5088529841687e-06", + "3.5088529841687e-06", + "0.0000035088530", + "0.0000035088530", + "+0.0000035088530", + }}, + {{ + "-4e-06", + "-4.e-06", + "-4e-06", + "-3.5e-06", + "-3.5e-06", + "-3.5e-06", + "-0.0", + "-0.0", + "-0.0", + "-3.5e-06", + "-3.5e-06", + "-3.5e-06", + "-3.51e-06", + "-3.51e-06", + "-3.51e-06", + "-0.00", + "-0.00", + "-0.00", + "-3.51e-06", + "-3.51e-06", + "-3.51e-06", + "-3.509e-06", + "-3.509e-06", + "-3.509e-06", + "-0.000", + "-0.000", + "-0.000", + "-3.509e-06", + "-3.509e-06", + "-3.509e-06", + "-3.5089e-06", + "-3.5089e-06", + "-3.5089e-06", + "-0.0000", + "-0.0000", + "-0.0000", + "-3.5089e-06", + "-3.5089e-06", + "-3.5089e-06", + "-3.50885e-06", + "-3.50885e-06", + "-3.50885e-06", + "-0.00000", + "-0.00000", + "-0.00000", + "-3.50885e-06", + "-3.50885e-06", + "-3.50885e-06", + "-3.508853e-06", + "-3.508853e-06", + "-3.508853e-06", + "-0.000004", + "-0.000004", + "-0.000004", + "-3.508853e-06", + "-3.508853e-06", + "-3.508853e-06", + "-3.5088530e-06", + "-3.5088530e-06", + "-3.5088530e-06", + "-0.0000035", + "-0.0000035", + "-0.0000035", + "-3.508853e-06", + "-3.5088530e-06", + "-3.508853e-06", + "-3.50885298e-06", + "-3.50885298e-06", + "-3.50885298e-06", + "-0.00000351", + "-0.00000351", + "-0.00000351", + "-3.50885298e-06", + "-3.50885298e-06", + "-3.50885298e-06", + "-3.508852984e-06", + "-3.508852984e-06", + "-3.508852984e-06", + "-0.000003509", + "-0.000003509", + "-0.000003509", + "-3.508852984e-06", + "-3.508852984e-06", + "-3.508852984e-06", + "-3.5088529842e-06", + "-3.5088529842e-06", + "-3.5088529842e-06", + "-0.0000035089", + "-0.0000035089", + "-0.0000035089", + "-3.5088529842e-06", + "-3.5088529842e-06", + "-3.5088529842e-06", + "-3.50885298417e-06", + "-3.50885298417e-06", + "-3.50885298417e-06", + "-0.00000350885", + "-0.00000350885", + "-0.00000350885", + "-3.50885298417e-06", + "-3.50885298417e-06", + "-3.50885298417e-06", + "-3.508852984169e-06", + "-3.508852984169e-06", + "-3.508852984169e-06", + "-0.000003508853", + "-0.000003508853", + "-0.000003508853", + "-3.508852984169e-06", + "-3.508852984169e-06", + "-3.508852984169e-06", + "-3.5088529841687e-06", + "-3.5088529841687e-06", + "-3.5088529841687e-06", + "-0.0000035088530", + "-0.0000035088530", + "-0.0000035088530", + }}, + {{ + "4e-07", + "4.e-07", + "+4e-07", + "4.4e-07", + "+4.4e-07", + "4.4e-07", + "0.0", + "0.0", + "+0.0", + "4.4e-07", + "4.4e-07", + "+4.4e-07", + "4.39e-07", + "+4.39e-07", + "4.39e-07", + "0.00", + "0.00", + "+0.00", + "4.39e-07", + "4.39e-07", + "+4.39e-07", + "4.386e-07", + "+4.386e-07", + "4.386e-07", + "0.000", + "0.000", + "+0.000", + "4.386e-07", + "4.386e-07", + "+4.386e-07", + "4.3861e-07", + "+4.3861e-07", + "4.3861e-07", + "0.0000", + "0.0000", + "+0.0000", + "4.3861e-07", + "4.3861e-07", + "+4.3861e-07", + "4.38607e-07", + "+4.38607e-07", + "4.38607e-07", + "0.00000", + "0.00000", + "+0.00000", + "4.38607e-07", + "4.38607e-07", + "+4.38607e-07", + "4.386066e-07", + "+4.386066e-07", + "4.386066e-07", + "0.000000", + "0.000000", + "+0.000000", + "4.386066e-07", + "4.386066e-07", + "+4.386066e-07", + "4.3860662e-07", + "+4.3860662e-07", + "4.3860662e-07", + "0.0000004", + "0.0000004", + "+0.0000004", + "4.3860662e-07", + "4.3860662e-07", + "+4.3860662e-07", + "4.38606623e-07", + "+4.38606623e-07", + "4.38606623e-07", + "0.00000044", + "0.00000044", + "+0.00000044", + "4.38606623e-07", + "4.38606623e-07", + "+4.38606623e-07", + "4.386066230e-07", + "+4.386066230e-07", + "4.386066230e-07", + "0.000000439", + "0.000000439", + "+0.000000439", + "4.38606623e-07", + "4.386066230e-07", + "+4.38606623e-07", + "4.3860662302e-07", + "+4.3860662302e-07", + "4.3860662302e-07", + "0.0000004386", + "0.0000004386", + "+0.0000004386", + "4.3860662302e-07", + "4.3860662302e-07", + "+4.3860662302e-07", + "4.38606623021e-07", + "+4.38606623021e-07", + "4.38606623021e-07", + "0.00000043861", + "0.00000043861", + "+0.00000043861", + "4.38606623021e-07", + "4.38606623021e-07", + "+4.38606623021e-07", + "4.386066230211e-07", + "+4.386066230211e-07", + "4.386066230211e-07", + "0.000000438607", + "0.000000438607", + "+0.000000438607", + "4.386066230211e-07", + "4.386066230211e-07", + "+4.386066230211e-07", + "4.3860662302109e-07", + "+4.3860662302109e-07", + "4.3860662302109e-07", + "0.0000004386066", + "0.0000004386066", + "+0.0000004386066", + }}, + {{ + "-4e-07", + "-4.e-07", + "-4e-07", + "-4.4e-07", + "-4.4e-07", + "-4.4e-07", + "-0.0", + "-0.0", + "-0.0", + "-4.4e-07", + "-4.4e-07", + "-4.4e-07", + "-4.39e-07", + "-4.39e-07", + "-4.39e-07", + "-0.00", + "-0.00", + "-0.00", + "-4.39e-07", + "-4.39e-07", + "-4.39e-07", + "-4.386e-07", + "-4.386e-07", + "-4.386e-07", + "-0.000", + "-0.000", + "-0.000", + "-4.386e-07", + "-4.386e-07", + "-4.386e-07", + "-4.3861e-07", + "-4.3861e-07", + "-4.3861e-07", + "-0.0000", + "-0.0000", + "-0.0000", + "-4.3861e-07", + "-4.3861e-07", + "-4.3861e-07", + "-4.38607e-07", + "-4.38607e-07", + "-4.38607e-07", + "-0.00000", + "-0.00000", + "-0.00000", + "-4.38607e-07", + "-4.38607e-07", + "-4.38607e-07", + "-4.386066e-07", + "-4.386066e-07", + "-4.386066e-07", + "-0.000000", + "-0.000000", + "-0.000000", + "-4.386066e-07", + "-4.386066e-07", + "-4.386066e-07", + "-4.3860662e-07", + "-4.3860662e-07", + "-4.3860662e-07", + "-0.0000004", + "-0.0000004", + "-0.0000004", + "-4.3860662e-07", + "-4.3860662e-07", + "-4.3860662e-07", + "-4.38606623e-07", + "-4.38606623e-07", + "-4.38606623e-07", + "-0.00000044", + "-0.00000044", + "-0.00000044", + "-4.38606623e-07", + "-4.38606623e-07", + "-4.38606623e-07", + "-4.386066230e-07", + "-4.386066230e-07", + "-4.386066230e-07", + "-0.000000439", + "-0.000000439", + "-0.000000439", + "-4.38606623e-07", + "-4.386066230e-07", + "-4.38606623e-07", + "-4.3860662302e-07", + "-4.3860662302e-07", + "-4.3860662302e-07", + "-0.0000004386", + "-0.0000004386", + "-0.0000004386", + "-4.3860662302e-07", + "-4.3860662302e-07", + "-4.3860662302e-07", + "-4.38606623021e-07", + "-4.38606623021e-07", + "-4.38606623021e-07", + "-0.00000043861", + "-0.00000043861", + "-0.00000043861", + "-4.38606623021e-07", + "-4.38606623021e-07", + "-4.38606623021e-07", + "-4.386066230211e-07", + "-4.386066230211e-07", + "-4.386066230211e-07", + "-0.000000438607", + "-0.000000438607", + "-0.000000438607", + "-4.386066230211e-07", + "-4.386066230211e-07", + "-4.386066230211e-07", + "-4.3860662302109e-07", + "-4.3860662302109e-07", + "-4.3860662302109e-07", + "-0.0000004386066", + "-0.0000004386066", + "-0.0000004386066", + }}, + {{ + "5e-08", + "5.e-08", + "+5e-08", + "5.5e-08", + "+5.5e-08", + "5.5e-08", + "0.0", + "0.0", + "+0.0", + "5.5e-08", + "5.5e-08", + "+5.5e-08", + "5.48e-08", + "+5.48e-08", + "5.48e-08", + "0.00", + "0.00", + "+0.00", + "5.48e-08", + "5.48e-08", + "+5.48e-08", + "5.483e-08", + "+5.483e-08", + "5.483e-08", + "0.000", + "0.000", + "+0.000", + "5.483e-08", + "5.483e-08", + "+5.483e-08", + "5.4826e-08", + "+5.4826e-08", + "5.4826e-08", + "0.0000", + "0.0000", + "+0.0000", + "5.4826e-08", + "5.4826e-08", + "+5.4826e-08", + "5.48258e-08", + "+5.48258e-08", + "5.48258e-08", + "0.00000", + "0.00000", + "+0.00000", + "5.48258e-08", + "5.48258e-08", + "+5.48258e-08", + "5.482583e-08", + "+5.482583e-08", + "5.482583e-08", + "0.000000", + "0.000000", + "+0.000000", + "5.482583e-08", + "5.482583e-08", + "+5.482583e-08", + "5.4825828e-08", + "+5.4825828e-08", + "5.4825828e-08", + "0.0000001", + "0.0000001", + "+0.0000001", + "5.4825828e-08", + "5.4825828e-08", + "+5.4825828e-08", + "5.48258279e-08", + "+5.48258279e-08", + "5.48258279e-08", + "0.00000005", + "0.00000005", + "+0.00000005", + "5.48258279e-08", + "5.48258279e-08", + "+5.48258279e-08", + "5.482582788e-08", + "+5.482582788e-08", + "5.482582788e-08", + "0.000000055", + "0.000000055", + "+0.000000055", + "5.482582788e-08", + "5.482582788e-08", + "+5.482582788e-08", + "5.4825827878e-08", + "+5.4825827878e-08", + "5.4825827878e-08", + "0.0000000548", + "0.0000000548", + "+0.0000000548", + "5.4825827878e-08", + "5.4825827878e-08", + "+5.4825827878e-08", + "5.48258278776e-08", + "+5.48258278776e-08", + "5.48258278776e-08", + "0.00000005483", + "0.00000005483", + "+0.00000005483", + "5.48258278776e-08", + "5.48258278776e-08", + "+5.48258278776e-08", + "5.482582787764e-08", + "+5.482582787764e-08", + "5.482582787764e-08", + "0.000000054826", + "0.000000054826", + "+0.000000054826", + "5.482582787764e-08", + "5.482582787764e-08", + "+5.482582787764e-08", + "5.4825827877636e-08", + "+5.4825827877636e-08", + "5.4825827877636e-08", + "0.0000000548258", + "0.0000000548258", + "+0.0000000548258", + }}, + {{ + "-5e-08", + "-5.e-08", + "-5e-08", + "-5.5e-08", + "-5.5e-08", + "-5.5e-08", + "-0.0", + "-0.0", + "-0.0", + "-5.5e-08", + "-5.5e-08", + "-5.5e-08", + "-5.48e-08", + "-5.48e-08", + "-5.48e-08", + "-0.00", + "-0.00", + "-0.00", + "-5.48e-08", + "-5.48e-08", + "-5.48e-08", + "-5.483e-08", + "-5.483e-08", + "-5.483e-08", + "-0.000", + "-0.000", + "-0.000", + "-5.483e-08", + "-5.483e-08", + "-5.483e-08", + "-5.4826e-08", + "-5.4826e-08", + "-5.4826e-08", + "-0.0000", + "-0.0000", + "-0.0000", + "-5.4826e-08", + "-5.4826e-08", + "-5.4826e-08", + "-5.48258e-08", + "-5.48258e-08", + "-5.48258e-08", + "-0.00000", + "-0.00000", + "-0.00000", + "-5.48258e-08", + "-5.48258e-08", + "-5.48258e-08", + "-5.482583e-08", + "-5.482583e-08", + "-5.482583e-08", + "-0.000000", + "-0.000000", + "-0.000000", + "-5.482583e-08", + "-5.482583e-08", + "-5.482583e-08", + "-5.4825828e-08", + "-5.4825828e-08", + "-5.4825828e-08", + "-0.0000001", + "-0.0000001", + "-0.0000001", + "-5.4825828e-08", + "-5.4825828e-08", + "-5.4825828e-08", + "-5.48258279e-08", + "-5.48258279e-08", + "-5.48258279e-08", + "-0.00000005", + "-0.00000005", + "-0.00000005", + "-5.48258279e-08", + "-5.48258279e-08", + "-5.48258279e-08", + "-5.482582788e-08", + "-5.482582788e-08", + "-5.482582788e-08", + "-0.000000055", + "-0.000000055", + "-0.000000055", + "-5.482582788e-08", + "-5.482582788e-08", + "-5.482582788e-08", + "-5.4825827878e-08", + "-5.4825827878e-08", + "-5.4825827878e-08", + "-0.0000000548", + "-0.0000000548", + "-0.0000000548", + "-5.4825827878e-08", + "-5.4825827878e-08", + "-5.4825827878e-08", + "-5.48258278776e-08", + "-5.48258278776e-08", + "-5.48258278776e-08", + "-0.00000005483", + "-0.00000005483", + "-0.00000005483", + "-5.48258278776e-08", + "-5.48258278776e-08", + "-5.48258278776e-08", + "-5.482582787764e-08", + "-5.482582787764e-08", + "-5.482582787764e-08", + "-0.000000054826", + "-0.000000054826", + "-0.000000054826", + "-5.482582787764e-08", + "-5.482582787764e-08", + "-5.482582787764e-08", + "-5.4825827877636e-08", + "-5.4825827877636e-08", + "-5.4825827877636e-08", + "-0.0000000548258", + "-0.0000000548258", + "-0.0000000548258", + }}, + {{ + "7e-09", + "7.e-09", + "+7e-09", + "6.9e-09", + "+6.9e-09", + "6.9e-09", + "0.0", + "0.0", + "+0.0", + "6.9e-09", + "6.9e-09", + "+6.9e-09", + "6.85e-09", + "+6.85e-09", + "6.85e-09", + "0.00", + "0.00", + "+0.00", + "6.85e-09", + "6.85e-09", + "+6.85e-09", + "6.853e-09", + "+6.853e-09", + "6.853e-09", + "0.000", + "0.000", + "+0.000", + "6.853e-09", + "6.853e-09", + "+6.853e-09", + "6.8532e-09", + "+6.8532e-09", + "6.8532e-09", + "0.0000", + "0.0000", + "+0.0000", + "6.8532e-09", + "6.8532e-09", + "+6.8532e-09", + "6.85323e-09", + "+6.85323e-09", + "6.85323e-09", + "0.00000", + "0.00000", + "+0.00000", + "6.85323e-09", + "6.85323e-09", + "+6.85323e-09", + "6.853228e-09", + "+6.853228e-09", + "6.853228e-09", + "0.000000", + "0.000000", + "+0.000000", + "6.853228e-09", + "6.853228e-09", + "+6.853228e-09", + "6.8532285e-09", + "+6.8532285e-09", + "6.8532285e-09", + "0.0000000", + "0.0000000", + "+0.0000000", + "6.8532285e-09", + "6.8532285e-09", + "+6.8532285e-09", + "6.85322848e-09", + "+6.85322848e-09", + "6.85322848e-09", + "0.00000001", + "0.00000001", + "+0.00000001", + "6.85322848e-09", + "6.85322848e-09", + "+6.85322848e-09", + "6.853228485e-09", + "+6.853228485e-09", + "6.853228485e-09", + "0.000000007", + "0.000000007", + "+0.000000007", + "6.853228485e-09", + "6.853228485e-09", + "+6.853228485e-09", + "6.8532284847e-09", + "+6.8532284847e-09", + "6.8532284847e-09", + "0.0000000069", + "0.0000000069", + "+0.0000000069", + "6.8532284847e-09", + "6.8532284847e-09", + "+6.8532284847e-09", + "6.85322848470e-09", + "+6.85322848470e-09", + "6.85322848470e-09", + "0.00000000685", + "0.00000000685", + "+0.00000000685", + "6.8532284847e-09", + "6.85322848470e-09", + "+6.8532284847e-09", + "6.853228484704e-09", + "+6.853228484704e-09", + "6.853228484704e-09", + "0.000000006853", + "0.000000006853", + "+0.000000006853", + "6.853228484704e-09", + "6.853228484704e-09", + "+6.853228484704e-09", + "6.8532284847045e-09", + "+6.8532284847045e-09", + "6.8532284847045e-09", + "0.0000000068532", + "0.0000000068532", + "+0.0000000068532", + }}, + {{ + "-7e-09", + "-7.e-09", + "-7e-09", + "-6.9e-09", + "-6.9e-09", + "-6.9e-09", + "-0.0", + "-0.0", + "-0.0", + "-6.9e-09", + "-6.9e-09", + "-6.9e-09", + "-6.85e-09", + "-6.85e-09", + "-6.85e-09", + "-0.00", + "-0.00", + "-0.00", + "-6.85e-09", + "-6.85e-09", + "-6.85e-09", + "-6.853e-09", + "-6.853e-09", + "-6.853e-09", + "-0.000", + "-0.000", + "-0.000", + "-6.853e-09", + "-6.853e-09", + "-6.853e-09", + "-6.8532e-09", + "-6.8532e-09", + "-6.8532e-09", + "-0.0000", + "-0.0000", + "-0.0000", + "-6.8532e-09", + "-6.8532e-09", + "-6.8532e-09", + "-6.85323e-09", + "-6.85323e-09", + "-6.85323e-09", + "-0.00000", + "-0.00000", + "-0.00000", + "-6.85323e-09", + "-6.85323e-09", + "-6.85323e-09", + "-6.853228e-09", + "-6.853228e-09", + "-6.853228e-09", + "-0.000000", + "-0.000000", + "-0.000000", + "-6.853228e-09", + "-6.853228e-09", + "-6.853228e-09", + "-6.8532285e-09", + "-6.8532285e-09", + "-6.8532285e-09", + "-0.0000000", + "-0.0000000", + "-0.0000000", + "-6.8532285e-09", + "-6.8532285e-09", + "-6.8532285e-09", + "-6.85322848e-09", + "-6.85322848e-09", + "-6.85322848e-09", + "-0.00000001", + "-0.00000001", + "-0.00000001", + "-6.85322848e-09", + "-6.85322848e-09", + "-6.85322848e-09", + "-6.853228485e-09", + "-6.853228485e-09", + "-6.853228485e-09", + "-0.000000007", + "-0.000000007", + "-0.000000007", + "-6.853228485e-09", + "-6.853228485e-09", + "-6.853228485e-09", + "-6.8532284847e-09", + "-6.8532284847e-09", + "-6.8532284847e-09", + "-0.0000000069", + "-0.0000000069", + "-0.0000000069", + "-6.8532284847e-09", + "-6.8532284847e-09", + "-6.8532284847e-09", + "-6.85322848470e-09", + "-6.85322848470e-09", + "-6.85322848470e-09", + "-0.00000000685", + "-0.00000000685", + "-0.00000000685", + "-6.8532284847e-09", + "-6.85322848470e-09", + "-6.8532284847e-09", + "-6.853228484704e-09", + "-6.853228484704e-09", + "-6.853228484704e-09", + "-0.000000006853", + "-0.000000006853", + "-0.000000006853", + "-6.853228484704e-09", + "-6.853228484704e-09", + "-6.853228484704e-09", + "-6.8532284847045e-09", + "-6.8532284847045e-09", + "-6.8532284847045e-09", + "-0.0000000068532", + "-0.0000000068532", + "-0.0000000068532", + }}, + {{ + "9e-10", + "9.e-10", + "+9e-10", + "8.6e-10", + "+8.6e-10", + "8.6e-10", + "0.0", + "0.0", + "+0.0", + "8.6e-10", + "8.6e-10", + "+8.6e-10", + "8.57e-10", + "+8.57e-10", + "8.57e-10", + "0.00", + "0.00", + "+0.00", + "8.57e-10", + "8.57e-10", + "+8.57e-10", + "8.567e-10", + "+8.567e-10", + "8.567e-10", + "0.000", + "0.000", + "+0.000", + "8.567e-10", + "8.567e-10", + "+8.567e-10", + "8.5665e-10", + "+8.5665e-10", + "8.5665e-10", + "0.0000", + "0.0000", + "+0.0000", + "8.5665e-10", + "8.5665e-10", + "+8.5665e-10", + "8.56654e-10", + "+8.56654e-10", + "8.56654e-10", + "0.00000", + "0.00000", + "+0.00000", + "8.56654e-10", + "8.56654e-10", + "+8.56654e-10", + "8.566536e-10", + "+8.566536e-10", + "8.566536e-10", + "0.000000", + "0.000000", + "+0.000000", + "8.566536e-10", + "8.566536e-10", + "+8.566536e-10", + "8.5665356e-10", + "+8.5665356e-10", + "8.5665356e-10", + "0.0000000", + "0.0000000", + "+0.0000000", + "8.5665356e-10", + "8.5665356e-10", + "+8.5665356e-10", + "8.56653561e-10", + "+8.56653561e-10", + "8.56653561e-10", + "0.00000000", + "0.00000000", + "+0.00000000", + "8.56653561e-10", + "8.56653561e-10", + "+8.56653561e-10", + "8.566535606e-10", + "+8.566535606e-10", + "8.566535606e-10", + "0.000000001", + "0.000000001", + "+0.000000001", + "8.566535606e-10", + "8.566535606e-10", + "+8.566535606e-10", + "8.5665356059e-10", + "+8.5665356059e-10", + "8.5665356059e-10", + "0.0000000009", + "0.0000000009", + "+0.0000000009", + "8.5665356059e-10", + "8.5665356059e-10", + "+8.5665356059e-10", + "8.56653560588e-10", + "+8.56653560588e-10", + "8.56653560588e-10", + "0.00000000086", + "0.00000000086", + "+0.00000000086", + "8.56653560588e-10", + "8.56653560588e-10", + "+8.56653560588e-10", + "8.566535605881e-10", + "+8.566535605881e-10", + "8.566535605881e-10", + "0.000000000857", + "0.000000000857", + "+0.000000000857", + "8.566535605881e-10", + "8.566535605881e-10", + "+8.566535605881e-10", + "8.5665356058806e-10", + "+8.5665356058806e-10", + "8.5665356058806e-10", + "0.0000000008567", + "0.0000000008567", + "+0.0000000008567", + }}, + {{ + "-9e-10", + "-9.e-10", + "-9e-10", + "-8.6e-10", + "-8.6e-10", + "-8.6e-10", + "-0.0", + "-0.0", + "-0.0", + "-8.6e-10", + "-8.6e-10", + "-8.6e-10", + "-8.57e-10", + "-8.57e-10", + "-8.57e-10", + "-0.00", + "-0.00", + "-0.00", + "-8.57e-10", + "-8.57e-10", + "-8.57e-10", + "-8.567e-10", + "-8.567e-10", + "-8.567e-10", + "-0.000", + "-0.000", + "-0.000", + "-8.567e-10", + "-8.567e-10", + "-8.567e-10", + "-8.5665e-10", + "-8.5665e-10", + "-8.5665e-10", + "-0.0000", + "-0.0000", + "-0.0000", + "-8.5665e-10", + "-8.5665e-10", + "-8.5665e-10", + "-8.56654e-10", + "-8.56654e-10", + "-8.56654e-10", + "-0.00000", + "-0.00000", + "-0.00000", + "-8.56654e-10", + "-8.56654e-10", + "-8.56654e-10", + "-8.566536e-10", + "-8.566536e-10", + "-8.566536e-10", + "-0.000000", + "-0.000000", + "-0.000000", + "-8.566536e-10", + "-8.566536e-10", + "-8.566536e-10", + "-8.5665356e-10", + "-8.5665356e-10", + "-8.5665356e-10", + "-0.0000000", + "-0.0000000", + "-0.0000000", + "-8.5665356e-10", + "-8.5665356e-10", + "-8.5665356e-10", + "-8.56653561e-10", + "-8.56653561e-10", + "-8.56653561e-10", + "-0.00000000", + "-0.00000000", + "-0.00000000", + "-8.56653561e-10", + "-8.56653561e-10", + "-8.56653561e-10", + "-8.566535606e-10", + "-8.566535606e-10", + "-8.566535606e-10", + "-0.000000001", + "-0.000000001", + "-0.000000001", + "-8.566535606e-10", + "-8.566535606e-10", + "-8.566535606e-10", + "-8.5665356059e-10", + "-8.5665356059e-10", + "-8.5665356059e-10", + "-0.0000000009", + "-0.0000000009", + "-0.0000000009", + "-8.5665356059e-10", + "-8.5665356059e-10", + "-8.5665356059e-10", + "-8.56653560588e-10", + "-8.56653560588e-10", + "-8.56653560588e-10", + "-0.00000000086", + "-0.00000000086", + "-0.00000000086", + "-8.56653560588e-10", + "-8.56653560588e-10", + "-8.56653560588e-10", + "-8.566535605881e-10", + "-8.566535605881e-10", + "-8.566535605881e-10", + "-0.000000000857", + "-0.000000000857", + "-0.000000000857", + "-8.566535605881e-10", + "-8.566535605881e-10", + "-8.566535605881e-10", + "-8.5665356058806e-10", + "-8.5665356058806e-10", + "-8.5665356058806e-10", + "-0.0000000008567", + "-0.0000000008567", + "-0.0000000008567", + }}, diff --git a/test/test_float_io.cpp b/test/test_float_io.cpp new file mode 100644 index 000000000..05bf25657 --- /dev/null +++ b/test/test_float_io.cpp @@ -0,0 +1,448 @@ +// Copyright John Maddock 2023. + +// 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 +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(__INTEL_COMPILER) || defined(BOOST_MATH_TEST_IO_AS_INTEL_QUAD) +bool has_bad_bankers_rounding(const boost::float128_t&) +{ + return true; +} +#endif + +template +bool has_bad_bankers_rounding(const T&) +{ + return false; +} + +enum +{ + warn_on_fail, + error_on_fail, + abort_on_fail +}; + +inline std::ostream& report_where(const char* file, int line, const char* function) +{ + if (function) + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "In function: " << function << std::endl; + BOOST_LIGHTWEIGHT_TEST_OSTREAM << file << ":" << line; + return BOOST_LIGHTWEIGHT_TEST_OSTREAM; +} + +#define BOOST_MP_REPORT_WHERE report_where(__FILE__, __LINE__, BOOST_CURRENT_FUNCTION) + +inline void report_severity(int severity) +{ + if (severity == error_on_fail) + ++boost::detail::test_errors(); + else if (severity == abort_on_fail) + { + ++boost::detail::test_errors(); + abort(); + } +} + +#define BOOST_MP_REPORT_SEVERITY(severity) report_severity(severity) + +template +void report_unexpected_exception(const E& e, int severity, const char* file, int line, const char* function) +{ + report_where(file, line, function) << " Unexpected exception of type " << typeid(e).name() << std::endl; + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "Errot message was: " << e.what() << std::endl; + BOOST_MP_REPORT_SEVERITY(severity); +} + +#ifdef BOOST_HAS_INT128 + +std::ostream& operator<<(std::ostream& os, boost::int128_type val) +{ + std::stringstream ss; + ss << std::hex << "0x" << static_cast(static_cast(val) >> 64) << static_cast(val); + return os << ss.str(); +} + +std::ostream& operator<<(std::ostream& os, boost::uint128_type val) +{ + std::stringstream ss; + ss << std::hex << "0x" << static_cast(val >> 64) << static_cast(val); + return os << ss.str(); +} + +#endif + +#ifndef BOOST_NO_EXCEPTIONS +#define BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) \ + catch (const std::exception& e) \ + { \ + report_unexpected_exception(e, severity, __FILE__, __LINE__, BOOST_CURRENT_FUNCTION); \ + } \ + catch (...) \ + { \ + std::cout << "Exception of unknown type was thrown" << std::endl; \ + report_severity(severity); \ + } +#define BOOST_MP_TEST_TRY try +#else +#define BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) +#define BOOST_MP_TEST_TRY +#endif + +#define BOOST_CHECK_IMP(x, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (x) \ + { \ + } \ + else \ + { \ + BOOST_MP_REPORT_WHERE << " Failed predicate: " << BOOST_STRINGIZE(x) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_CHECK(x) BOOST_CHECK_IMP(x, error_on_fail) +#define BOOST_WARN(x) BOOST_CHECK_IMP(x, warn_on_fail) +#define BOOST_REQUIRE(x) BOOST_CHECK_IMP(x, abort_on_fail) + +#define BOOST_CLOSE_IMP(x, y, tol, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (relative_error(x, y) > tol) \ + { \ + BOOST_MP_REPORT_WHERE << " Failed check for closeness: \n" \ + << std::setprecision(std::numeric_limits::max_digits10) << std::scientific \ + << "Value of LHS was: " << x << "\n" \ + << "Value of RHS was: " << y << "\n" \ + << std::setprecision(5) << std::fixed \ + << "Relative error was: " << relative_error(x, y) << "eps\n" \ + << "Tolerance was: " << tol << "eps" << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_EQUAL_IMP(x, y, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (!((x) == (y))) \ + { \ + BOOST_MP_REPORT_WHERE << " Failed check for equality: \n" \ + << std::setprecision(std::numeric_limits::max_digits10) << std::scientific \ + << "Value of LHS was: " << (x) << "\n" \ + << "Value of RHS was: " << (y) << "\n" \ + << std::setprecision(3) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_NE_IMP(x, y, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (!(x != y)) \ + { \ + BOOST_MP_REPORT_WHERE << " Failed check for non-equality: \n" \ + << std::setprecision(std::numeric_limits::max_digits10) << std::scientific \ + << "Value of LHS was: " << x << "\n" \ + << "Value of RHS was: " << y << "\n" \ + << std::setprecision(3) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_LT_IMP(x, y, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (!(x < y)) \ + { \ + BOOST_MP_REPORT_WHERE << " Failed check for less than: \n" \ + << std::setprecision(std::numeric_limits::max_digits10) << std::scientific \ + << "Value of LHS was: " << x << "\n" \ + << "Value of RHS was: " << y << "\n" \ + << std::setprecision(3) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_GT_IMP(x, y, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (!(x > y)) \ + { \ + BOOST_MP_REPORT_WHERE << " Failed check for greater than: \n" \ + << std::setprecision(std::numeric_limits::max_digits10) << std::scientific \ + << "Value of LHS was: " << x << "\n" \ + << "Value of RHS was: " << y << "\n" \ + << std::setprecision(3) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_LE_IMP(x, y, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (!(x <= y)) \ + { \ + BOOST_MP_REPORT_WHERE << " Failed check for less-than-equal-to: \n" \ + << std::setprecision(std::numeric_limits::max_digits10) << std::scientific \ + << "Value of LHS was: " << x << "\n" \ + << "Value of RHS was: " << y << "\n" \ + << std::setprecision(3) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#define BOOST_GE_IMP(x, y, severity) \ + BOOST_MP_TEST_TRY \ + { \ + if (!(x >= y)) \ + { \ + BOOST_MP_REPORT_WHERE << " Failed check for greater-than-equal-to \n" \ + << std::setprecision(std::numeric_limits::max_digits10) << std::scientific \ + << "Value of LHS was: " << x << "\n" \ + << "Value of RHS was: " << y << "\n" \ + << std::setprecision(3) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + } \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) + +#ifndef BOOST_NO_EXCEPTIONS +#define BOOST_MT_CHECK_THROW_IMP(x, E, severity) \ + BOOST_MP_TEST_TRY \ + { \ + x; \ + BOOST_MP_REPORT_WHERE << " Expected exception not thrown in expression " << BOOST_STRINGIZE(x) << std::endl; \ + BOOST_MP_REPORT_SEVERITY(severity); \ + } \ + catch (const E&) {} \ + BOOST_MP_UNEXPECTED_EXCEPTION_CHECK(severity) +#else +#define BOOST_MT_CHECK_THROW_IMP(x, E, severity) +#endif + +#define BOOST_CHECK_EQUAL(x, y) BOOST_EQUAL_IMP(x, y, error_on_fail) +#define BOOST_WARN_EQUAL(x, y) BOOST_EQUAL_IMP(x, y, warn_on_fail) +#define BOOST_REQUIRE_EQUAL(x, y) BOOST_EQUAL_IMP(x, y, abort_on_fail) + +void print_flags(std::ios_base::fmtflags f) +{ + std::cout << "Formatting flags were: "; + if (f & std::ios_base::scientific) + std::cout << "scientific "; + if (f & std::ios_base::fixed) + std::cout << "fixed "; + if (f & std::ios_base::showpoint) + std::cout << "showpoint "; + if (f & std::ios_base::showpos) + std::cout << "showpos "; + std::cout << std::endl; +} + +bool is_bankers_rounding_error(const std::string& s, const char* expect) +{ + // This check isn't foolproof: that would require *much* more sophisticated code!!! + std::string::size_type l = std::strlen(expect); + if (l != s.size()) + return false; + std::string::size_type len = s.find('e'); + if (len == std::string::npos) + len = l - 1; + else + --len; + if (s.compare(0, len, expect, len)) + return false; + if (s[len] != expect[len] + 1) + return false; + return true; +} + +template +bool is_bankers_rounding_error(T new_val, T val) +{ + // This check isn't foolproof: that would require *much* more sophisticated code!!! + auto n = boost::math::float_distance(new_val, val) == 1; + std::cout << "Distance was: " << n << std::endl; + return std::abs(n) <= 1; +} + +template +void test() +{ + typedef T mp_t; + boost::array f = + {{std::ios_base::fmtflags(0), std::ios_base::showpoint, std::ios_base::showpos, std::ios_base::scientific, std::ios_base::scientific | std::ios_base::showpos, + std::ios_base::scientific | std::ios_base::showpoint, std::ios_base::fixed, std::ios_base::fixed | std::ios_base::showpoint, + std::ios_base::fixed | std::ios_base::showpos}}; + + boost::array, 40> string_data = {{ +#include "libs/math/test/string_data.ipp" + }}; + + double num = 123456789.0; + double denom = 1; + double val = num; + for (unsigned j = 0; j < 40; ++j) + { + unsigned col = 0; + for (unsigned prec = 1; prec < 14; ++prec) + { + for (unsigned i = 0; i < f.size(); ++i, ++col) + { + std::stringstream ss; + ss.precision(prec); + ss.flags(f[i]); + ss << mp_t(val); + const char* expect = string_data[j][col]; + if (ss.str() != expect) + { + if (has_bad_bankers_rounding(mp_t()) && is_bankers_rounding_error(ss.str(), expect)) + { + std::cout << "Ignoring bankers-rounding error with Intel _Quad.\n"; + } + else + { + std::cout << std::setprecision(20) << "Testing value " << val << std::endl; + print_flags(f[i]); + std::cout << "Precision is: " << prec << std::endl; + std::cout << "Got: " << ss.str() << std::endl; + std::cout << "Expected: " << expect << std::endl; + ++boost::detail::test_errors(); + } + } + } + } + num = -num; + if (j & 1) + denom *= 8; + val = num / denom; + } + + boost::array zeros = + {{"0", "0.", "+0", "0.0e+00", "+0.0e+00", "0.0e+00", "0.0", "0.0", "+0.0", "0", "0.0", "+0", "0.00e+00", "+0.00e+00", "0.00e+00", "0.00", "0.00", "+0.00", "0", "0.00", "+0", "0.000e+00", "+0.000e+00", "0.000e+00", "0.000", "0.000", "+0.000", "0", "0.000", "+0", "0.0000e+00", "+0.0000e+00", "0.0000e+00", "0.0000", "0.0000", "+0.0000", "0", "0.0000", "+0", "0.00000e+00", "+0.00000e+00", "0.00000e+00", "0.00000", "0.00000", "+0.00000", "0", "0.00000", "+0", "0.000000e+00", "+0.000000e+00", "0.000000e+00", "0.000000", "0.000000", "+0.000000", "0", "0.000000", "+0", "0.0000000e+00", "+0.0000000e+00", "0.0000000e+00", "0.0000000", "0.0000000", "+0.0000000", "0", "0.0000000", "+0", "0.00000000e+00", "+0.00000000e+00", "0.00000000e+00", "0.00000000", "0.00000000", "+0.00000000", "0", "0.00000000", "+0", "0.000000000e+00", "+0.000000000e+00", "0.000000000e+00", "0.000000000", "0.000000000", "+0.000000000", "0", "0.000000000", "+0", "0.0000000000e+00", "+0.0000000000e+00", "0.0000000000e+00", "0.0000000000", "0.0000000000", "+0.0000000000", "0", "0.0000000000", "+0", "0.00000000000e+00", "+0.00000000000e+00", "0.00000000000e+00", "0.00000000000", "0.00000000000", "+0.00000000000", "0", "0.00000000000", "+0", "0.000000000000e+00", "+0.000000000000e+00", "0.000000000000e+00", "0.000000000000", "0.000000000000", "+0.000000000000", "0", "0.000000000000", "+0", "0.0000000000000e+00", "+0.0000000000000e+00", "0.0000000000000e+00", "0.0000000000000", "0.0000000000000", "+0.0000000000000"}}; + + unsigned col = 0; + val = 0; + for (unsigned prec = 1; prec < 14; ++prec) + { + for (unsigned i = 0; i < f.size(); ++i, ++col) + { + std::stringstream ss; + ss.precision(prec); + ss.flags(f[i]); + ss << mp_t(val); + const char* expect = zeros[col]; + if (ss.str() != expect) + { + std::cout << std::setprecision(20) << "Testing value " << val << std::endl; + print_flags(f[i]); + std::cout << "Precision is: " << prec << std::endl; + std::cout << "Got: " << ss.str() << std::endl; + std::cout << "Expected: " << expect << std::endl; + ++boost::detail::test_errors(); + } + } + } +} + +template +T generate_random() +{ + typedef int e_type; + static boost::random::mt19937 gen; + T val = gen(); + T prev_val = -1; + while (val != prev_val) + { + val *= (gen.max)(); + prev_val = val; + val += gen(); + } + e_type e; + val = frexp(val, &e); + + static boost::random::uniform_int_distribution ui(0, std::numeric_limits::max_exponent - 10); + return ldexp(val, ui(gen)); +} + +template +void do_round_trip(const T& val, std::ios_base::fmtflags f) +{ + std::stringstream ss; + ss << std::setprecision(std::numeric_limits::max_digits10); + ss.flags(f); + ss << val; + T new_val; + ss >> new_val; + if (new_val != val) + { + if (has_bad_bankers_rounding(T()) && is_bankers_rounding_error(new_val, val)) + { + std::cout << "Ignoring bankers-rounding error with Intel _Quad mp_f.\n"; + } + else + { + BOOST_CHECK_EQUAL(new_val, val); + } + } +} + +template +void do_round_trip(const T& val) +{ + do_round_trip(val, std::ios_base::fmtflags(0)); + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::scientific)); + if ((fabs(val) > 1) && (fabs(val) < 1e100)) + do_round_trip(val, std::ios_base::fmtflags(std::ios_base::fixed)); +} + +template +void test_round_trip() +{ + for (unsigned i = 0; i < 1000; ++i) + { + T val = generate_random(); + do_round_trip(val); + do_round_trip(T(-val)); + do_round_trip(T(1 / val)); + do_round_trip(T(-1 / val)); + } +} + +int main() +{ + test(); + test(); + + test_round_trip(); + test_round_trip(); + +#ifdef BOOST_FLOAT128_C + test(); + test_round_trip(); +#endif + return boost::report_errors(); +}