Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r73023 - in sandbox/e_float: . boost boost/e_float doc libs libs/e_float libs/e_float/build libs/e_float/license libs/e_float/src libs/e_float/src/e_float libs/e_float/src/e_float/efx libs/e_float/src/e_float/gmp libs/e_float/src/e_float/gmp/4-2-4 libs/e_float/src/e_float/gmp/4-2-4/vc9 libs/e_float/src/e_float/gmp/4-2-4/vc9/p4 libs/e_float/src/e_float/gmp/4-2-4/vc9/x64 libs/e_float/src/e_float/mpfr libs/e_float/src/e_float/mpfr/2-4-1 libs/e_float/src/e_float/mpfr/2-4-1/vc9 libs/e_float/src/e_float/mpfr/2-4-1/vc9/p4 libs/e_float/src/e_float/mpfr/2-4-1/vc9/x64 libs/e_float/src/functions libs/e_float/src/functions/constants libs/e_float/src/functions/elementary libs/e_float/src/functions/gamma libs/e_float/src/functions/integer libs/e_float/src/functions/tables libs/e_float/src/functions/zeta libs/e_float/src/generic_functions libs/e_float/src/generic_functions/constants libs/e_float/src/generic_functions/elementary libs/e_float/src/utility libs/e_float/test libs/e_float/test/imag libs/e_float/test/imag/cases libs/e_float/test/real libs/e_float/test/real/cases libs/e_float/test/spot
From: e_float_at_[hidden]
Date: 2011-07-12 17:06:00


Author: christopher_kormanyos
Date: 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
New Revision: 73023
URL: http://svn.boost.org/trac/boost/changeset/73023

Log:
New import
Added:
   sandbox/e_float/
   sandbox/e_float/boost/
   sandbox/e_float/boost/e_float/
   sandbox/e_float/boost/e_float/e_float.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_base.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_complex.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_constants.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_efx.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_elementary.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_elementary_complex.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_elementary_math.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_elementary_trans.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_functions.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_gamma.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_global_math.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_gmp.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_integer.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_limits.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_mpfr.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_prime.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_types.hpp (contents, props changed)
   sandbox/e_float/boost/e_float/e_float_zeta.hpp (contents, props changed)
   sandbox/e_float/doc/
   sandbox/e_float/libs/
   sandbox/e_float/libs/e_float/
   sandbox/e_float/libs/e_float/build/
   sandbox/e_float/libs/e_float/build/Makefile.gmk (contents, props changed)
   sandbox/e_float/libs/e_float/build/MakefileFiles.gmk (contents, props changed)
   sandbox/e_float/libs/e_float/build/e_float.vcxproj (contents, props changed)
   sandbox/e_float/libs/e_float/build/e_float.vcxproj.filters (contents, props changed)
   sandbox/e_float/libs/e_float/build/e_float_vs2010.sln (contents, props changed)
   sandbox/e_float/libs/e_float/license/
   sandbox/e_float/libs/e_float/license/LICENSE_1_0.txt (contents, props changed)
   sandbox/e_float/libs/e_float/src/
   sandbox/e_float/libs/e_float/src/e_float/
   sandbox/e_float/libs/e_float/src/e_float/e_float.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/e_float/e_float_base.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/e_float/efx/
   sandbox/e_float/libs/e_float/src/e_float/efx/e_float_efx.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/e_float/gmp/
   sandbox/e_float/libs/e_float/src/e_float/gmp/4-2-4/
   sandbox/e_float/libs/e_float/src/e_float/gmp/4-2-4/vc9/
   sandbox/e_float/libs/e_float/src/e_float/gmp/4-2-4/vc9/p4/
   sandbox/e_float/libs/e_float/src/e_float/gmp/4-2-4/vc9/x64/
   sandbox/e_float/libs/e_float/src/e_float/gmp/e_float_gmp.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/e_float/gmp/e_float_gmp_protos.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/e_float/mpfr/
   sandbox/e_float/libs/e_float/src/e_float/mpfr/2-4-1/
   sandbox/e_float/libs/e_float/src/e_float/mpfr/2-4-1/vc9/
   sandbox/e_float/libs/e_float/src/e_float/mpfr/2-4-1/vc9/p4/
   sandbox/e_float/libs/e_float/src/e_float/mpfr/2-4-1/vc9/x64/
   sandbox/e_float/libs/e_float/src/e_float/mpfr/e_float_mpfr.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/e_float/mpfr/e_float_mpfr_protos.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/
   sandbox/e_float/libs/e_float/src/functions/constants/
   sandbox/e_float/libs/e_float/src/functions/constants/constants.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/elementary/
   sandbox/e_float/libs/e_float/src/functions/elementary/elementary_complex.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/elementary/elementary_hyper_g.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/elementary/elementary_math.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/elementary/elementary_trans.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/elementary/elementary_trig.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/gamma/
   sandbox/e_float/libs/e_float/src/functions/gamma/factorial.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/gamma/factorial2.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/gamma/gamma.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/gamma/gamma_util.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/gamma/gamma_util.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/gamma/pochhammer.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/integer/
   sandbox/e_float/libs/e_float/src/functions/integer/bernoulli_b.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/integer/prime.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/integer/prime_factor.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/integer/prime_factors.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/tables/
   sandbox/e_float/libs/e_float/src/functions/tables/A000142.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/tables/A000367.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/tables/A002445.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/tables/A006882.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/tables/A007318.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/tables/tables.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/functions/zeta/
   sandbox/e_float/libs/e_float/src/functions/zeta/zeta.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/generic_functions/
   sandbox/e_float/libs/e_float/src/generic_functions/constants/
   sandbox/e_float/libs/e_float/src/generic_functions/constants/generic_functions_constants.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/generic_functions/elementary/
   sandbox/e_float/libs/e_float/src/generic_functions/elementary/generic_functions_elementary.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/
   sandbox/e_float/libs/e_float/src/utility/util_alternating_sum.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_coefficient_expansion.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_digit_scale.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_digit_scale.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_find_root_base.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_find_root_bisect.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_find_root_newton_raphson.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_function.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_function_derivative.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_function_operation.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_interpolate.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_lexical_cast.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_noncopyable.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_numeric_cast.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_point.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_power_j_pow_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_power_j_pow_x.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_power_x_pow_n.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_ranged_function_operation.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_timer.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_timer.h (contents, props changed)
   sandbox/e_float/libs/e_float/src/utility/util_trapezoid.h (contents, props changed)
   sandbox/e_float/libs/e_float/test/
   sandbox/e_float/libs/e_float/test/imag/
   sandbox/e_float/libs/e_float/test/imag/cases/
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02101_z_sin.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02102_z_cos.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02103_z_exp.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02104_z_log.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02105_z_sqrt.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02106_z_rootn.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02111_z_asin.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02112_z_acos.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02113_z_atan.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02114_z_various_trig.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02115_z_various_elem_trans_log.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02116_z_various_elem.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02121_z_sinh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02122_z_cosh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02123_z_tanh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02124_z_asinh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02125_z_acosh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02126_z_atanh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02201_z_gamma.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02202_z_gamma_medium_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02901_z_zeta_small_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02902_z_zeta_all_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02903_z_zeta_neg_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/cases/test_case_02911_z_zeta_crit_strip.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/test_case_imag.h (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/test_imag.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/imag/test_imag.h (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/
   sandbox/e_float/libs/e_float/test/real/cases/
   sandbox/e_float/libs/e_float/test/real/cases/test_case_0000x_overflow_underflow.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00011_various_elem_math.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00021_bernoulli.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00051_factorial.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00052_factorial2.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00071_various_int_func.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00101_sin.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00102_cos.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00103_exp.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00104_log.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00105_sqrt.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00106_rootn.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00111_sin_small_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00112_cos_x_near_pi_half.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00113_atan_x_small_to_large.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00114_various_trig.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00115_various_elem_trans.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00121_sinh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00122_cosh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00123_tanh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00124_asinh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00125_acosh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00126_atanh.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00201_gamma.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00202_gamma_medium_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00203_gamma_small_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00204_gamma_tiny_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00205_gamma_near_neg_n.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00221_various_gamma_func.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00901_zeta_small_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00902_zeta_all_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/cases/test_case_00903_zeta_neg_x.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/test_case_real.h (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/test_real.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/real/test_real.h (contents, props changed)
   sandbox/e_float/libs/e_float/test/spot/
   sandbox/e_float/libs/e_float/test/spot/test_spot.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/spot/test_spot.h (contents, props changed)
   sandbox/e_float/libs/e_float/test/test.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/test_case_base.cpp (contents, props changed)
   sandbox/e_float/libs/e_float/test/test_case_base.h (contents, props changed)

Added: sandbox/e_float/boost/e_float/e_float.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,31 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_HPP_
+ #define _E_FLOAT_HPP_
+
+ // Select the e_float back-end big-number type
+ // by defining E_FLOAT_TYPE_xxx, for example,
+ // as a compiler defined preprocessor macro.
+
+ #if defined(E_FLOAT_TYPE_EFX)
+ #include <e_float/e_float_efx.hpp>
+ #elif defined(E_FLOAT_TYPE_GMP)
+ #include <e_float/e_float_gmp.hpp>
+ #elif defined(E_FLOAT_TYPE_MPFR)
+ #include <e_float/e_float_mpfr.hpp>
+ #else
+ #error e_float type undefined!
+ #endif
+
+ #include <e_float/e_float_global_math.hpp>
+ #include <e_float/e_float_limits.hpp>
+
+#endif // _E_FLOAT_HPP_

Added: sandbox/e_float/boost/e_float/e_float_base.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_base.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,168 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_BASE_HPP_
+ #define _E_FLOAT_BASE_HPP_
+
+ #if defined(__GNUC__)
+ #include <tr1/array>
+ #else
+ #include <array>
+ #endif
+
+ #include <iostream>
+ #include <string>
+
+ #include <e_float/e_float_types.hpp>
+
+ // Select the number of decimal digits in e_float
+ // by setting the value of E_FLOAT_DIGITS10.
+ // The supported range is 30-300.
+ // Note: This is a compile-time constant.
+
+ #define E_FLOAT_DIGITS10 100
+ #define E_FLOAT_DIGITS10_MAX 300
+
+ #if defined(E_FLOAT_TYPE_EFX)
+ namespace efx { class e_float; }
+ using efx::e_float;
+ #elif defined(E_FLOAT_TYPE_GMP)
+ namespace gmp { class e_float; }
+ using gmp::e_float;
+ #elif defined(E_FLOAT_TYPE_MPFR)
+ namespace mpfr { class e_float; }
+ using mpfr::e_float;
+ #else
+ #error The e_float type is undefined! Define the e_float type!
+ #endif
+
+ class e_float_base
+ {
+ public:
+
+ // The value of ef_digits10_setting is the desired number of decimal digits
+ // of precision in the e_float implementation. It is limited to the range of
+ // 30...300 decimal digits. The digit tolerance is invariant and it is set
+ // to be 15 percent (or maximally 150 digits) larger than ef_digits10.
+ // All of these quantities are invariant and they are set at compile time.
+ static const INT32 ef_digits10_setting = E_FLOAT_DIGITS10;
+ static const INT32 ef_digits10_max = E_FLOAT_DIGITS10_MAX;
+ static const INT32 ef_digits10 = ((ef_digits10_setting < 30) ? 30 : ((ef_digits10_setting > ef_digits10_max) ? ef_digits10_max : ef_digits10_setting));
+ static const INT32 ef_digits10_extra = static_cast<INT32>(((static_cast<INT64>(ef_digits10) * 15LL) + 50LL) / 100LL);
+ static const INT32 ef_digits10_tol = static_cast<INT32>(ef_digits10 + ((ef_digits10_extra < 15) ? 15 : ((ef_digits10_extra > 150) ? 150 : ef_digits10_extra)));
+
+ static const std::string::size_type& width_of_exponent_field(void);
+
+ virtual ~e_float_base() { }
+
+ // Specific special values.
+ virtual const e_float_base& my_value_nan(void) const = 0;
+ virtual const e_float_base& my_value_inf(void) const = 0;
+ virtual const e_float_base& my_value_max(void) const = 0;
+ virtual const e_float_base& my_value_min(void) const = 0;
+
+ virtual INT32 cmp(const e_float&) const = 0;
+
+ virtual void precision(const INT32) = 0;
+
+ // Basic operations.
+ virtual e_float_base& operator= (const e_float&) = 0;
+ virtual e_float_base& operator+=(const e_float&) = 0;
+ virtual e_float_base& operator-=(const e_float&) = 0;
+ virtual e_float_base& operator*=(const e_float&) = 0;
+ virtual e_float_base& operator/=(const e_float&) = 0;
+ virtual e_float_base& mul_by_int(const INT32) = 0;
+ virtual e_float_base& div_by_int(const INT32) = 0;
+
+ virtual e_float_base& calculate_inv (void) = 0;
+ virtual e_float_base& calculate_sqrt(void) = 0;
+
+ // Comparison functions
+ virtual bool isnan (void) const = 0;
+ virtual bool isinf (void) const = 0;
+ virtual bool isfinite(void) const = 0;
+
+ virtual bool iszero (void) const = 0;
+ virtual bool isone (void) const = 0;
+ virtual bool isint (void) const = 0;
+ virtual bool isneg (void) const = 0;
+ bool ispos (void) const { return !isneg(); }
+
+ virtual e_float_base& negate(void) = 0;
+
+ // Operators pre-increment and pre-decrement
+ virtual e_float_base& operator++(void) = 0;
+ virtual e_float_base& operator--(void) = 0;
+
+ // Argument range and check functions
+ virtual INT64 order(void) const = 0;
+
+ // Conversion routines
+ virtual void extract_parts (double&, INT64&) const = 0;
+ virtual double extract_double (void) const = 0;
+ virtual INT64 extract_int64 (void) const = 0;
+ virtual e_float extract_integer_part(void) const = 0;
+ virtual e_float extract_decimal_part(void) const = 0;
+
+ // Formated Output routine.
+ virtual void wr_string(std::string&, std::ostream&) const = 0;
+ virtual bool rd_string(const char* const) = 0;
+
+ // Specific higher functions which might be present in the MP implementation.
+ virtual bool has_its_own_cbrt (void) const { return false; }
+ virtual bool has_its_own_rootn (void) const { return false; }
+ virtual bool has_its_own_exp (void) const { return false; }
+ virtual bool has_its_own_log (void) const { return false; }
+ virtual bool has_its_own_sin (void) const { return false; }
+ virtual bool has_its_own_cos (void) const { return false; }
+ virtual bool has_its_own_tan (void) const { return false; }
+ virtual bool has_its_own_asin (void) const { return false; }
+ virtual bool has_its_own_acos (void) const { return false; }
+ virtual bool has_its_own_atan (void) const { return false; }
+ virtual bool has_its_own_sinh (void) const { return false; }
+ virtual bool has_its_own_cosh (void) const { return false; }
+ virtual bool has_its_own_tanh (void) const { return false; }
+ virtual bool has_its_own_asinh (void) const { return false; }
+ virtual bool has_its_own_acosh (void) const { return false; }
+ virtual bool has_its_own_atanh (void) const { return false; }
+ virtual bool has_its_own_gamma (void) const { return false; }
+ virtual bool has_its_own_riemann_zeta (void) const { return false; }
+ virtual bool has_its_own_cyl_bessel_jn(void) const { return false; }
+ virtual bool has_its_own_cyl_bessel_yn(void) const { return false; }
+
+ static e_float my_cbrt (const e_float&);
+ static e_float my_rootn (const e_float&, const UINT32);
+ static e_float my_exp (const e_float&);
+ static e_float my_log (const e_float&);
+ static e_float my_sin (const e_float&);
+ static e_float my_cos (const e_float&);
+ static e_float my_tan (const e_float&);
+ static e_float my_asin (const e_float&);
+ static e_float my_acos (const e_float&);
+ static e_float my_atan (const e_float&);
+ static e_float my_sinh (const e_float&);
+ static e_float my_cosh (const e_float&);
+ static e_float my_tanh (const e_float&);
+ static e_float my_asinh (const e_float&);
+ static e_float my_acosh (const e_float&);
+ static e_float my_atanh (const e_float&);
+ static e_float my_gamma (const e_float&);
+ static e_float my_riemann_zeta (const e_float&);
+ static e_float my_cyl_bessel_jn(const INT32, const e_float&);
+ static e_float my_cyl_bessel_yn(const INT32, const e_float&);
+
+ protected:
+ e_float_base() { }
+ };
+
+ std::ostream& operator<<(std::ostream& os, const e_float_base& f);
+ std::istream& operator>>(std::istream& is, e_float_base& f);
+
+#endif // _E_FLOAT_BASE_HPP_

Added: sandbox/e_float/boost/e_float/e_float_complex.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_complex.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,117 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_COMPLEX_HPP_
+ #define _E_FLOAT_COMPLEX_HPP_
+
+ #include <e_float/e_float.hpp>
+
+ // A separate complex class for e_float has been created. Even though
+ // a generic template class std::complex<T> exists, the C++ specification
+ // ISO7IEC 14882:2003 paragraph 26.2/2 indicates that: "The effect of
+ // instantiating the template complex<T> for any type other than float,
+ // double or long double is unspecified". The strict interpretation thereof
+ // disallows both using the template class std::complex<T> with e_float
+ // as well as creating a template specialization for e_float.
+ // Therefore the separate class ef_complex is needed.
+
+ class ef_complex
+ {
+ private:
+
+ e_float Re;
+ e_float Im;
+
+ public:
+
+ explicit ef_complex(const INT32 n) : Re(n), Im(ef::zero()) { }
+ explicit ef_complex(const INT64 n) : Re(n), Im(ef::zero()) { }
+ explicit ef_complex(const UINT32 u) : Re(u), Im(ef::zero()) { }
+ explicit ef_complex(const UINT64 u) : Re(u), Im(ef::zero()) { }
+ explicit ef_complex(const double d) : Re(d), Im(ef::zero()) { }
+
+ ef_complex(const e_float& re = ef::zero(), const e_float& im = ef::zero()) : Re(re), Im(im) { }
+
+ ef_complex(const ef_complex& z) : Re(z.Re), Im(z.Im) { }
+
+ e_float real(void) const { return Re; }
+ e_float imag(void) const { return Im; }
+
+ static e_float real(const ef_complex& z) { return z.Re; }
+ static e_float imag(const ef_complex& z) { return z.Im; }
+
+ e_float norm(void) const { return (Re * Re) + (Im * Im); }
+
+ ef_complex& operator=(const ef_complex& v) { Re = v.Re; Im = v.Im; return *this; }
+ ef_complex& operator=(const e_float& v) { Re = v; Im = ef::zero(); return *this; }
+
+ ef_complex& operator+=(const ef_complex& v) { Re += v.Re; Im += v.Im; return *this; }
+ ef_complex& operator-=(const ef_complex& v) { Re -= v.Re; Im -= v.Im; return *this; }
+
+ ef_complex& operator*=(const ef_complex& v)
+ {
+ const e_float re = (Re * v.Re) - (Im * v.Im);
+ const e_float im = (Re * v.Im) + (Im * v.Re);
+
+ Re = re;
+ Im = im;
+
+ return *this;
+ }
+
+ ef_complex& operator/=(const ef_complex& v)
+ {
+ const e_float one_over_denom = ef::one() / v.norm();
+
+ const e_float re = ((Re * v.Re) + (Im * v.Im)) * one_over_denom;
+ const e_float im = ((Im * v.Re) - (Re * v.Im)) * one_over_denom;
+
+ Re = re;
+ Im = im;
+
+ return *this;
+ }
+
+ ef_complex& operator+=(const e_float& v) { Re += v; return *this; }
+ ef_complex& operator-=(const e_float& v) { Re -= v; return *this; }
+ ef_complex& operator*=(const e_float& v) { Re *= v; Im *= v; return *this; }
+ ef_complex& operator/=(const e_float& v) { Re /= v; Im /= v; return *this; }
+
+ // Operators pre-increment and post-increment
+ const ef_complex& operator++(void) { ++Re; return *this; }
+ ef_complex operator++(int) { const ef_complex w(*this); ++Re; return w; }
+
+ // Operators pre-decrement and post-decrement
+ const ef_complex& operator--(void) { --Re; return *this; }
+ ef_complex operator--(int) { const ef_complex w(*this); --Re; return w; }
+
+ // Unary operators.
+ ef_complex operator-(void) const { return ef_complex(-Re, -Im); }
+ ef_complex& operator+(void) { return *this; }
+
+ // Operators with integer.
+ ef_complex& operator+=(const INT32 n) { Re += n; return *this; }
+ ef_complex& operator-=(const INT32 n) { Re -= n; return *this; }
+ ef_complex& operator*=(const INT32 n) { Re *= n; Im *= n; return *this; }
+ ef_complex& operator/=(const INT32 n) { Re /= n; Im /= n; return *this; }
+
+ bool isnan (void) const { return Re.isnan() || Im.isnan(); }
+ bool isinf (void) const { return Re.isinf() || Im.isinf(); }
+ bool isfinite(void) const { return Re.isfinite() && Im.isfinite(); }
+ bool isneg (void) const { return Re.isneg(); }
+ bool ispos (void) const { return Re.ispos(); }
+ bool isint (void) const { return Re.isint() && Im.iszero(); }
+ bool isone (void) const { return Re.isone() && Im.iszero(); }
+ bool iszero (void) const { return Re.iszero() && Im.iszero(); }
+ };
+
+ inline std::ostream& operator<<(std::ostream& os, const ef_complex& z) { return os << '(' << z.real() << ',' << z.imag() << ')'; }
+
+#endif // _E_FLOAT_COMPLEX_HPP_

Added: sandbox/e_float/boost/e_float/e_float_constants.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_constants.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,88 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_CONSTANTS_HPP_
+ #define _E_FLOAT_CONSTANTS_HPP_
+
+ #include <e_float/e_float.hpp>
+
+ namespace ef
+ {
+ const e_float& two (void);
+ const e_float& three (void);
+ const e_float& four (void);
+ const e_float& five (void);
+ const e_float& six (void);
+ const e_float& seven (void);
+ const e_float& eight (void);
+ const e_float& nine (void);
+ const e_float& ten (void);
+ const e_float& twenty (void);
+ const e_float& thirty (void);
+ const e_float& forty (void);
+ const e_float& fifty (void);
+ const e_float& hundred (void);
+ const e_float& two_hundred (void);
+ const e_float& three_hundred(void);
+ const e_float& four_hundred (void);
+ const e_float& five_hundred (void);
+ const e_float& thousand (void);
+ const e_float& two_k (void);
+ const e_float& three_k (void);
+ const e_float& four_k (void);
+ const e_float& five_k (void);
+ const e_float& ten_k (void);
+ const e_float& twenty_k (void);
+ const e_float& thirty_k (void);
+ const e_float& forty_k (void);
+ const e_float& fifty_k (void);
+ const e_float& hundred_k (void);
+ const e_float& million (void);
+ const e_float& ten_M (void);
+ const e_float& hundred_M (void);
+ const e_float& billion (void);
+ const e_float& trillion (void);
+ const e_float& googol (void);
+ const e_float& int32max (void);
+ const e_float& int32min (void);
+ const e_float& int64max (void);
+ const e_float& int64min (void);
+ const e_float& one_minus (void);
+ const e_float& tenth (void);
+ const e_float& eighth (void);
+ const e_float& sixteenth (void);
+ const e_float& fifth (void);
+ const e_float& quarter (void);
+ const e_float& third (void);
+ const e_float& two_third (void);
+ const e_float& four_third (void);
+ const e_float& three_half (void);
+ const e_float& sqrt2 (void);
+ const e_float& sqrt3 (void);
+ const e_float& pi (void);
+ const e_float& pi_half (void);
+ const e_float& pi_quarter (void);
+ const e_float& pi_squared (void);
+ const e_float& two_pi (void);
+ const e_float& sqrt_pi (void);
+ const e_float& degree (void);
+ const e_float& exp1 (void);
+ const e_float& ln2 (void);
+ const e_float& ln3 (void);
+ const e_float& ln10 (void);
+ const e_float& log10_2 (void);
+ const e_float& golden_ratio (void);
+ const e_float& euler_gamma (void);
+ const e_float& catalan (void);
+ const e_float& khinchin (void);
+ const e_float& glaisher (void);
+ }
+
+#endif // _E_FLOAT_CONSTANTS_HPP_

Added: sandbox/e_float/boost/e_float/e_float_efx.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_efx.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,187 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_EFX_HPP_
+ #define _E_FLOAT_EFX_HPP_
+
+ #if defined(__INTEL_COMPILER)
+ #pragma warning (disable:981)
+ #endif
+
+ #include <cmath>
+ #include <string>
+
+ #include <e_float/e_float_base.hpp>
+
+ namespace efx
+ {
+ class e_float : public ::e_float_base
+ {
+ public:
+ static const INT32 ef_elem_digits10 = static_cast<INT32>(8);
+ static const INT32 ef_radix = static_cast<INT32>(10);
+ static const INT32 ef_digits = ef_digits10;
+
+ static const INT64 ef_max_exp = static_cast<INT64>(+9223372036854775795LL);
+ static const INT64 ef_min_exp = static_cast<INT64>(-9223372036854775795LL);
+ static const INT64 ef_max_exp10 = static_cast<INT64>(+3063937869882635616LL); // Approx. [ef_max_exp / log10(2)], also an even multiple of 8
+ static const INT64 ef_min_exp10 = static_cast<INT64>(-3063937869882635616LL);
+
+ private:
+ static const INT32 ef_digits10_num_base = static_cast<INT32>((ef_digits10_tol / ef_elem_digits10) + (((ef_digits10_tol % ef_elem_digits10) != 0) ? 1 : 0));
+ static const INT32 ef_elem_number = static_cast<INT32>(ef_digits10_num_base + 2);
+
+ typedef enum enum_fpclass
+ {
+ ef_finite,
+ ef_inf,
+ ef_NaN
+ }
+ t_fpclass;
+
+ static const INT32 ef_elem_mask = static_cast<INT32>(100000000);
+
+ typedef std::tr1::array<UINT32, static_cast<std::size_t>(ef_elem_number)> array_type;
+
+ array_type data;
+ INT64 exp;
+ bool neg;
+ t_fpclass fpclass;
+ INT32 prec_elem;
+
+ public:
+
+ // Constructors
+ e_float() : data (),
+ exp (static_cast<INT64>(0)),
+ neg (false),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number) { }
+
+ explicit e_float(const INT32 n) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (n < static_cast<INT32>(0)),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+ {
+ from_uint32(static_cast<UINT32>(neg ? -n : n));
+ }
+
+ explicit e_float(const INT64 n) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (n < static_cast<INT64>(0)),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+ {
+ from_uint64(static_cast<UINT64>(neg ? -n : n));
+ }
+
+ explicit e_float(const UINT32 u) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (false),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+ {
+ from_uint32(u);
+ }
+
+ explicit e_float(const UINT64 u) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (false),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+ {
+ from_uint64(u);
+ }
+
+ explicit e_float(const double d);
+ explicit e_float(const char* const s);
+ explicit e_float(const std::string& str);
+
+ e_float(const e_float& f) : data (f.data),
+ exp (f.exp),
+ neg (f.neg),
+ fpclass (f.fpclass),
+ prec_elem(f.prec_elem) { }
+
+ // Constructor from mantissa and exponent.
+ e_float(const double mantissa, const INT64 exponent);
+
+ virtual ~e_float() { }
+
+ private:
+ static bool data_elem_is_nonzero_predicate(const UINT32& d) { return (d != static_cast<UINT32>(0u)); }
+ static bool char_is_nonzero_predicate (const char& c) { return (c != static_cast<char>('0')); }
+
+ void from_uint64(const UINT64 u);
+ void from_uint32(const UINT32 u);
+
+ INT32 cmp_data(const array_type& vd) const;
+
+ static void mul_loop_uv(const UINT32* const u, const UINT32* const v, UINT32* const w, const INT32 p);
+ static UINT32 mul_loop_n (UINT32* const u, UINT32 n, const INT32 p);
+ static UINT32 div_loop_n (UINT32* const u, UINT32 n, const INT32 p);
+
+ public:
+ virtual INT32 cmp(const e_float& v) const;
+
+ virtual const e_float& my_value_nan(void) const;
+ virtual const e_float& my_value_inf(void) const;
+ virtual const e_float& my_value_max(void) const;
+ virtual const e_float& my_value_min(void) const;
+
+ virtual void precision(const INT32 prec_digits);
+
+ // Basic operations.
+ virtual e_float& operator= (const e_float& v);
+ virtual e_float& operator+=(const e_float& v);
+ virtual e_float& operator-=(const e_float& v);
+ virtual e_float& operator*=(const e_float& v);
+ virtual e_float& operator/=(const e_float& v);
+ virtual e_float& mul_by_int(const INT32 n);
+ virtual e_float& div_by_int(const INT32 n);
+
+ virtual e_float& calculate_inv (void);
+ virtual e_float& calculate_sqrt(void);
+
+ // Comparison functions
+ virtual bool isnan (void) const { return (fpclass == ef_NaN); }
+ virtual bool isinf (void) const { return (fpclass == ef_inf); }
+ virtual bool isfinite(void) const { return (fpclass == ef_finite); }
+
+ virtual bool iszero (void) const;
+ virtual bool isone (void) const;
+ virtual bool isint (void) const;
+ virtual bool isneg (void) const { return neg; }
+
+ virtual e_float& negate(void) { if(!iszero()) { neg = !neg; } return *this; }
+
+ // Operators pre-increment and pre-decrement
+ virtual e_float& operator++(void);
+ virtual e_float& operator--(void);
+
+ // Conversion routines
+ virtual void extract_parts (double& mantissa, INT64& exponent) const;
+ virtual double extract_double (void) const;
+ virtual INT64 extract_int64 (void) const;
+ virtual e_float extract_integer_part(void) const;
+ virtual e_float extract_decimal_part(void) const;
+
+ // Argument range and check functions
+ virtual INT64 order(void) const { return (iszero() ? static_cast<INT64>(0)
+ : static_cast<INT64>(exp + static_cast<INT64>(::log10(static_cast<double>(data[0])) + 0.5))); }
+
+ private:
+ virtual void wr_string(std::string& str, std::ostream& os) const;
+ virtual bool rd_string(const char* const s);
+ };
+ }
+
+#endif // _E_FLOAT_EFX_HPP_

Added: sandbox/e_float/boost/e_float/e_float_elementary.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_elementary.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,18 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_ELEMENTARY_HPP_
+ #define _E_FLOAT_ELEMENTARY_HPP_
+
+ #include <e_float/e_float_elementary_complex.hpp>
+ #include <e_float/e_float_elementary_math.hpp>
+ #include <e_float/e_float_elementary_trans.hpp>
+
+#endif // _E_FLOAT_ELEMENTARY_HPP_

Added: sandbox/e_float/boost/e_float/e_float_elementary_complex.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_elementary_complex.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,105 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_ELEMENTARY_COMPLEX_HPP_
+ #define _E_FLOAT_ELEMENTARY_COMPLEX_HPP_
+
+ #include <complex>
+
+ #include <e_float/e_float_complex.hpp>
+
+ namespace efz
+ {
+ std::complex<double> to_double(const ef_complex& z);
+
+ inline e_float norm(const ef_complex& z) { return z.norm(); }
+ e_float abs (const ef_complex& z);
+ e_float arg (const ef_complex& z);
+ inline e_float real(const ef_complex& z) { return z.real(); }
+ inline e_float imag(const ef_complex& z) { return z.imag(); }
+
+ inline ef_complex conj(const ef_complex& z) { return ef_complex(z.real(), -z.imag()); }
+ inline ef_complex iz (const ef_complex& z) { const e_float tmp(z.real()); return ef_complex(-z.imag(), tmp); }
+
+ ef_complex polar (const e_float& mod, const e_float& arg);
+ ef_complex sin (const ef_complex& z);
+ ef_complex cos (const ef_complex& z);
+ ef_complex tan (const ef_complex& z);
+ void sincos (const ef_complex& z, ef_complex* const p_sin, ef_complex* const p_cos);
+ ef_complex csc (const ef_complex& z);
+ ef_complex sec (const ef_complex& z);
+ ef_complex cot (const ef_complex& z);
+ ef_complex asin (const ef_complex& z);
+ ef_complex acos (const ef_complex& z);
+ ef_complex atan (const ef_complex& z);
+ ef_complex inv (const ef_complex& z);
+ ef_complex sqrt (const ef_complex& z);
+ ef_complex exp (const ef_complex& z);
+ ef_complex log (const ef_complex& z);
+ ef_complex log10 (const ef_complex& z);
+ ef_complex loga (const ef_complex& a, const ef_complex& z);
+ ef_complex pown (const ef_complex& z, const INT64 p);
+ ef_complex pow (const ef_complex& z, const ef_complex& a);
+ ef_complex rootn (const ef_complex& z, const INT32 p);
+ ef_complex sinh (const ef_complex& z);
+ ef_complex cosh (const ef_complex& z);
+ ef_complex tanh (const ef_complex& z);
+ void sinhcosh(const ef_complex& z, ef_complex* const p_sinh, ef_complex* const p_cosh);
+ ef_complex asinh (const ef_complex& z);
+ ef_complex acosh (const ef_complex& z);
+ ef_complex atanh (const ef_complex& z);
+ }
+
+ // Overwrite global template ef_complex operator functions, some of which are overloaded.
+ // These operator functions are:
+ // operator!=
+ // operator==
+ // operator*
+ // operator+
+ // operator-
+ // operator/
+ // operator<<
+ // TBD: operator>>
+ inline bool operator==(const ef_complex& u, const ef_complex& v) { return (u.real() == v.real()) && (u.imag() == v.imag()); }
+ inline bool operator!=(const ef_complex& u, const ef_complex& v) { return (u.real() != v.real()) || (u.imag() != v.imag()); }
+
+ bool operator==(const ef_complex& u, const e_float& v);
+ bool operator!=(const ef_complex& u, const e_float& v);
+
+ bool operator==(const e_float& u, const ef_complex& v);
+ bool operator!=(const e_float& u, const ef_complex& v);
+
+ bool operator==(const ef_complex& u, const INT32 n);
+ bool operator!=(const ef_complex& u, const INT32 n);
+
+ bool operator==(const INT32 n, const ef_complex& u);
+ bool operator!=(const INT32 n, const ef_complex& u);
+
+ inline ef_complex operator+ (const ef_complex& u, const ef_complex& v) { return ef_complex(u) += v; }
+ inline ef_complex operator- (const ef_complex& u, const ef_complex& v) { return ef_complex(u) -= v; }
+ inline ef_complex operator* (const ef_complex& u, const ef_complex& v) { return ef_complex(u) *= v; }
+ inline ef_complex operator/ (const ef_complex& u, const ef_complex& v) { return ef_complex(u) /= v; }
+
+ inline ef_complex operator+ (const ef_complex& u, const e_float& v) { return ef_complex(u) += v; }
+ inline ef_complex operator- (const ef_complex& u, const e_float& v) { return ef_complex(u) -= v; }
+ inline ef_complex operator* (const ef_complex& u, const e_float& v) { return ef_complex(u) *= v; }
+ inline ef_complex operator/ (const ef_complex& u, const e_float& v) { return ef_complex(u) /= v; }
+
+ inline ef_complex operator+ (const INT32 n, const ef_complex& v) { return ef_complex(e_float(n)) += v; }
+ inline ef_complex operator- (const INT32 n, const ef_complex& v) { return ef_complex(e_float(n)) -= v; }
+ inline ef_complex operator* (const INT32 n, const ef_complex& v) { return ef_complex(v) *= n; }
+ inline ef_complex operator/ (const INT32 n, const ef_complex& v) { return ef_complex(e_float(n)) /= v; }
+
+ inline ef_complex operator+ (const ef_complex& z, const INT32 n) { return ef_complex(z) += n; }
+ inline ef_complex operator- (const ef_complex& z, const INT32 n) { return ef_complex(z) -= n; }
+ inline ef_complex operator* (const ef_complex& z, const INT32 n) { return ef_complex(z) *= n; }
+ inline ef_complex operator/ (const ef_complex& z, const INT32 n) { return ef_complex(z) /= n; }
+
+#endif // _E_FLOAT_ELEMENTARY_COMPLEX_HPP_

Added: sandbox/e_float/boost/e_float/e_float_elementary_math.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_elementary_math.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,99 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_ELEMENTARY_MATH_HPP_
+ #define _E_FLOAT_ELEMENTARY_MATH_HPP_
+
+ #include <limits>
+
+ class ef_complex;
+
+ namespace ef
+ {
+ inline INT32 max_iteration(void) { return static_cast<INT32>(10000); }
+
+ e_float floor(const e_float& x);
+ e_float ceil (const e_float& x);
+ INT32 sgn (const e_float& x);
+
+ bool isnan(const double x);
+ inline bool isnan(const e_float& x) { return x.isnan(); }
+ inline bool isnan(const ef_complex& z) { return z.isnan(); }
+
+ bool isfinite(const double x);
+ inline bool isfinite(const e_float& x) { return x.isfinite(); }
+ inline bool isfinite(const ef_complex& z) { return z.isfinite(); }
+
+ bool isinf(const double x);
+ inline bool isinf(const e_float& x) { return x.isinf(); }
+ inline bool isinf(const ef_complex& z) { return z.isinf(); }
+
+ inline bool isneg(const double x) { return (x < 0.0); }
+ inline bool isneg(const e_float& x) { return x.isneg(); }
+ inline bool isneg(const ef_complex& z) { return z.isneg(); }
+
+ inline e_float abs (const e_float& x) { return ef::fabs(x); }
+ inline e_float real(const e_float& x) { return x; }
+ inline e_float imag(const e_float&) { return ef::zero(); }
+
+ inline bool ispos(const double x) { return !isneg(x); }
+ inline bool ispos(const e_float& x) { return !x.isneg(); }
+ inline bool ispos(const ef_complex& z) { return !z.isneg(); }
+
+ bool isint(const double x);
+ inline bool isint(const e_float& x) { return x.isint(); }
+ inline bool isint(const ef_complex& z) { return z.isint(); }
+
+ inline bool isone(const double x) { return (::fabs(1.0 - x) < (std::numeric_limits<double>::min)() * 2); }
+ inline bool isone(const e_float& x) { return x.isone(); }
+ inline bool isone(const ef_complex& z) { return z.isone(); }
+
+ inline bool iszero(const double x) { return (::fabs(x) < (std::numeric_limits<double>::min)() * 2); }
+ inline bool iszero(const e_float& x) { return x.iszero(); }
+ inline bool iszero(const ef_complex& z) { return z.iszero(); }
+
+ e_float integer_part(const e_float& x);
+ e_float decimal_part(const e_float& x);
+
+ void to_parts(const e_float& x, double& mantissa, INT64& exponent);
+
+ inline double to_double(const double& x) { return x; }
+ double to_double(const e_float& x);
+ double to_double(const ef_complex& z);
+
+ inline INT64 order_of(const double x) { return static_cast<INT64>(static_cast<INT32>(::log10(x))); }
+ inline INT64 order_of(const e_float& x) { return x.order(); }
+
+ INT64 to_int64(const double x);
+ INT64 to_int64(const e_float& x);
+ INT64 to_int64(const ef_complex& z);
+
+ INT32 to_int32(const double x);
+ INT32 to_int32(const e_float& x);
+ INT32 to_int32(const ef_complex& z);
+
+ bool small_arg(const double x);
+ bool small_arg(const e_float& x);
+ bool small_arg(const ef_complex& z);
+
+ bool large_arg(const double x);
+ bool large_arg(const e_float& x);
+ bool large_arg(const ef_complex& z);
+
+ bool near_one(const double x);
+ bool near_one(const e_float& x);
+ bool near_one(const ef_complex& z);
+
+ bool near_int(const double x);
+ bool near_int(const e_float& x);
+ bool near_int(const ef_complex& z);
+ }
+
+#endif // _E_FLOAT_ELEMENTARY_MATH_HPP_

Added: sandbox/e_float/boost/e_float/e_float_elementary_trans.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_elementary_trans.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,66 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_ELEMENTARY_TRANS_HPP_
+ #define _E_FLOAT_ELEMENTARY_TRANS_HPP_
+
+ #include <deque>
+
+ namespace ef
+ {
+ e_float pow2 (const INT64 p);
+ e_float pown (const e_float& x, const INT64 p);
+ e_float inv (const e_float& x);
+ e_float sqrt (const e_float& x);
+ e_float cbrt (const e_float& x);
+ e_float rootn (const e_float& x, const INT32 p);
+ e_float exp (const e_float& x);
+ e_float log (const e_float& x);
+ e_float log10 (const e_float& x);
+ e_float loga (const e_float& a, const e_float& x);
+ e_float log1p (const e_float& x);
+ e_float log1p1m2(const e_float& x);
+ e_float pow (const e_float& x, const e_float& a);
+ void sinhcosh(const e_float& x, e_float* const p_sin, e_float* const p_cos);
+ e_float sinh (const e_float& x);
+ e_float cosh (const e_float& x);
+ e_float tanh (const e_float& x);
+ e_float asinh (const e_float& x);
+ e_float acosh (const e_float& x);
+ e_float atanh (const e_float& x);
+ }
+
+ namespace ef
+ {
+ void sincos (const e_float& x, e_float* const p_sin, e_float* const p_cos);
+ e_float sin (const e_float& x);
+ e_float cos (const e_float& x);
+ e_float tan (const e_float& x);
+ e_float csc (const e_float& x);
+ e_float sec (const e_float& x);
+ e_float cot (const e_float& x);
+ e_float asin (const e_float& x);
+ e_float acos (const e_float& x);
+ e_float atan (const e_float& x);
+ e_float atan2 (const e_float& y, const e_float& x);
+ }
+
+ namespace ef
+ {
+ e_float hyp0F0(const e_float& x);
+ e_float hyp0F1(const e_float& b, const e_float& x);
+ e_float hyp1F0(const e_float& a, const e_float& x);
+ e_float hyp1F1(const e_float& a, const e_float& b, const e_float& x);
+ e_float hyp2F0(const e_float& a, const e_float& b, const e_float& x);
+ e_float hyp2F1(const e_float& a, const e_float& b, const e_float& c, const e_float& x);
+ e_float hypPFQ(const std::deque<e_float>& a, const std::deque<e_float>& b, const e_float& x);
+ }
+
+#endif // _E_FLOAT_ELEMENTARY_TRANS_HPP_

Added: sandbox/e_float/boost/e_float/e_float_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_functions.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,22 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_FUNCTIONS_HPP_
+ #define _E_FLOAT_FUNCTIONS_HPP_
+
+ #include <e_float/e_float_complex.hpp>
+ #include <e_float/e_float_constants.hpp>
+ #include <e_float/e_float_integer.hpp>
+ #include <e_float/e_float_prime.hpp>
+ #include <e_float/e_float_elementary.hpp>
+ #include <e_float/e_float_gamma.hpp>
+ #include <e_float/e_float_zeta.hpp>
+
+#endif // _E_FLOAT_FUNCTIONS_HPP_

Added: sandbox/e_float/boost/e_float/e_float_gamma.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_gamma.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,37 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_GAMMA_HPP_
+ #define _E_FLOAT_GAMMA_HPP_
+
+ #include <e_float/e_float_complex.hpp>
+
+ namespace ef
+ {
+ e_float gamma (const e_float& x);
+ e_float gamma_near_n (const INT32 n, const e_float& x);
+ e_float factorial (const UINT32 n);
+ e_float factorial2 (const INT32 n);
+ e_float binomial (const UINT32 n, const UINT32 k);
+ e_float binomial (const UINT32 n, const e_float& y);
+ e_float binomial (const e_float& x, const UINT32 k);
+ e_float binomial (const e_float& x, const e_float& y);
+ e_float pochhammer (const e_float& x, const UINT32 n);
+ e_float pochhammer (const e_float& x, const e_float& a);
+ }
+
+ namespace efz
+ {
+ ef_complex gamma (const ef_complex& z);
+ ef_complex pochhammer (const ef_complex& z, const UINT32 n);
+ ef_complex pochhammer (const ef_complex& z, const ef_complex& a);
+ }
+
+#endif // _E_FLOAT_GAMMA_HPP_

Added: sandbox/e_float/boost/e_float/e_float_global_math.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_global_math.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,75 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_GLOBAL_MATH_HPP_
+ #define _E_FLOAT_GLOBAL_MATH_HPP_
+
+ namespace ef
+ {
+ inline INT64 tol(void) { return static_cast<INT64>(e_float::ef_digits10_tol); }
+ inline e_float fabs(const e_float& x) { return (x.isneg() ? e_float(x).negate() : x); }
+ }
+
+ // Global operators post-increment and post-decrement
+ inline e_float operator++(e_float& u, int) { const e_float v(u); ++u; return v; }
+ inline e_float operator--(e_float& u, int) { const e_float v(u); --u; return v; }
+
+ // Global unary operators of e_float reference.
+ inline e_float operator-(const e_float& u) { return e_float(u).negate(); }
+ inline e_float& operator+( e_float& u) { return u; }
+ inline const e_float& operator+(const e_float& u) { return u; }
+
+ // Global add/sub/mul/div of const e_float reference with const e_float reference
+ inline e_float operator+(const e_float& u, const e_float& v) { return e_float(u) += v; }
+ inline e_float operator-(const e_float& u, const e_float& v) { return e_float(u) -= v; }
+ inline e_float operator*(const e_float& u, const e_float& v) { return e_float(u) *= v; }
+ inline e_float operator/(const e_float& u, const e_float& v) { return e_float(u) /= v; }
+
+ // Specialization for global add/sub/mul/div of const e_float reference with INT32
+ inline e_float operator+(const e_float& u, const INT32 n) { return (e_float(u) += e_float(n)); }
+ inline e_float operator-(const e_float& u, const INT32 n) { return (e_float(u) -= e_float(n)); }
+ inline e_float operator*(const e_float& u, const INT32 n) { return e_float(u).mul_by_int(n); }
+ inline e_float operator/(const e_float& u, const INT32 n) { return e_float(u).div_by_int(n); }
+
+ inline e_float operator+(const INT32 n, const e_float& u) { return (e_float(n) += u); }
+ inline e_float operator-(const INT32 n, const e_float& u) { return (e_float(n) -= u); }
+ inline e_float operator*(const INT32 n, const e_float& u) { return (e_float(n) *= u); }
+ inline e_float operator/(const INT32 n, const e_float& u) { return (e_float(n) /= u); }
+
+ // Specializations of global self-add/sub/mul-div of e_float reference with INT32
+ inline e_float& operator+=(e_float& u, const INT32 n) { return (u += e_float(n)); }
+ inline e_float& operator-=(e_float& u, const INT32 n) { return (u -= e_float(n)); }
+ inline e_float& operator*=(e_float& u, const INT32 n) { return u.mul_by_int(n); }
+ inline e_float& operator/=(e_float& u, const INT32 n) { return u.div_by_int(n); }
+
+ // Global comparison operators of const e_float reference with const e_float reference
+ inline bool operator< (const e_float& u, const e_float& v) { return (u.cmp(v) < static_cast<INT32>(0)); }
+ inline bool operator<=(const e_float& u, const e_float& v) { return (u.cmp(v) <= static_cast<INT32>(0)); }
+ inline bool operator==(const e_float& u, const e_float& v) { return (u.cmp(v) == static_cast<INT32>(0)); }
+ inline bool operator!=(const e_float& u, const e_float& v) { return (u.cmp(v) != static_cast<INT32>(0)); }
+ inline bool operator>=(const e_float& u, const e_float& v) { return (u.cmp(v) >= static_cast<INT32>(0)); }
+ inline bool operator> (const e_float& u, const e_float& v) { return (u.cmp(v) > static_cast<INT32>(0)); }
+
+ // Specializations of global comparison of e_float reference with INT32
+ inline bool operator< (const e_float& u, const INT32 n) { return u < e_float(n); }
+ inline bool operator<=(const e_float& u, const INT32 n) { return u <= e_float(n); }
+ inline bool operator==(const e_float& u, const INT32 n) { return u == e_float(n); }
+ inline bool operator!=(const e_float& u, const INT32 n) { return u != e_float(n); }
+ inline bool operator>=(const e_float& u, const INT32 n) { return u >= e_float(n); }
+ inline bool operator> (const e_float& u, const INT32 n) { return u > e_float(n); }
+
+ inline bool operator< (const INT32 n, const e_float& u) { return e_float(n) < u; }
+ inline bool operator<=(const INT32 n, const e_float& u) { return e_float(n) <= u; }
+ inline bool operator==(const INT32 n, const e_float& u) { return e_float(n) == u; }
+ inline bool operator!=(const INT32 n, const e_float& u) { return e_float(n) != u; }
+ inline bool operator>=(const INT32 n, const e_float& u) { return e_float(n) >= u; }
+ inline bool operator> (const INT32 n, const e_float& u) { return e_float(n) > u; }
+
+#endif // _E_FLOAT_GLOBAL_MATH_HPP_

Added: sandbox/e_float/boost/e_float/e_float_gmp.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_gmp.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,175 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_GMP_HPP_
+ #define _E_FLOAT_GMP_HPP_
+
+ #if defined(__INTEL_COMPILER)
+ #pragma warning (disable:193)
+ #pragma warning (disable:981)
+ #endif
+
+ #if defined(_MSC_VER)
+ #pragma warning (disable:4127)
+ #endif
+
+ #include <cmath>
+ #include <string>
+
+ #if defined(__GNUC__)
+ #include <tr1/array>
+ #else
+ #include <array>
+ #endif
+
+ #include <e_float/e_float_base.hpp>
+
+ // Declare the types of GMP.
+ extern "C"
+ {
+ typedef long int mp_size_t;
+ typedef long int mp_exp_t;
+ typedef unsigned long int mp_limb_t;
+
+ typedef struct struct__mpf_struct
+ {
+ int _mp_prec;
+ int _mp_size;
+ mp_exp_t _mp_exp;
+ mp_limb_t *_mp_d;
+ }
+ __mpf_struct;
+
+ typedef __mpf_struct mpf_t[1];
+ typedef __mpf_struct* mpf_ptr;
+ typedef const __mpf_struct* mpf_srcptr;
+ }
+
+ namespace gmp
+ {
+ class e_float : public ::e_float_base
+ {
+ public:
+
+ static const INT32 ef_digits = static_cast<INT32>(((static_cast<INT64>(ef_digits10) * 3322LL) + 500LL) / 1000LL);
+ static const INT32 ef_radix = 2;
+
+ static const INT64 ef_max_exp = static_cast<INT64>(+2147483640LL);
+ static const INT64 ef_min_exp = static_cast<INT64>(-2147483640LL);
+ static const INT64 ef_max_exp10 = static_cast<INT64>(+646456990LL);
+ static const INT64 ef_min_exp10 = static_cast<INT64>(-646456990LL);
+
+ private:
+
+ static const INT32 ef_digits2 = static_cast<INT32>(((static_cast<INT64>(ef_digits10_tol) * 3322LL) + 500LL) / 1000LL);
+
+ typedef enum enum_fpclass
+ {
+ ef_finite,
+ ef_inf,
+ ef_NaN
+ }
+ t_fpclass;
+
+ t_fpclass fpclass;
+ INT32 prec_elem;
+ ::mpf_t rop;
+
+ public:
+
+ // Constructors
+ e_float(void);
+
+ explicit e_float(const INT32 n);
+ explicit e_float(const INT64 n);
+ explicit e_float(const UINT32 u);
+ explicit e_float(const UINT64 u);
+ explicit e_float(const double d);
+ explicit e_float(const char* const s);
+ explicit e_float(const std::string& str);
+
+ e_float(const e_float& f);
+
+ // Constructor from mantissa and exponent.
+ e_float(const double mantissa, const INT64 exponent);
+
+ virtual ~e_float();
+
+ private:
+
+ explicit e_float(const ::mpf_t& op);
+
+ static const INT64& max_exp2(void);
+ static const INT64& min_exp2(void);
+
+ static void init(void);
+
+ void from_uint64(const UINT64 u);
+ void from_uint32(const UINT32 u);
+
+ INT32 cmp_data(const ::mpf_t& v) const;
+
+ public:
+
+ virtual INT32 cmp(const e_float& v) const;
+
+ virtual const e_float& my_value_nan(void) const;
+ virtual const e_float& my_value_inf(void) const;
+ virtual const e_float& my_value_max(void) const;
+ virtual const e_float& my_value_min(void) const;
+
+ virtual void precision(const INT32 prec_digits);
+
+ // Basic operations.
+ virtual e_float& operator= (const e_float& v);
+ virtual e_float& operator+=(const e_float& v);
+ virtual e_float& operator-=(const e_float& v);
+ virtual e_float& operator*=(const e_float& v);
+ virtual e_float& operator/=(const e_float& v);
+ virtual e_float& mul_by_int(const INT32 n);
+ virtual e_float& div_by_int(const INT32 n);
+
+ virtual e_float& calculate_inv (void);
+ virtual e_float& calculate_sqrt(void);
+
+ // Comparison functions
+ virtual bool isnan (void) const { return fpclass == ef_NaN; }
+ virtual bool isinf (void) const { return fpclass == ef_inf; }
+ virtual bool isfinite(void) const { return fpclass == ef_finite; }
+
+ virtual bool iszero (void) const;
+ virtual bool isone (void) const;
+ virtual bool isint (void) const;
+ virtual bool isneg (void) const;
+
+ virtual e_float& negate(void);
+
+ // Operators pre-increment and pre-decrement
+ virtual e_float& operator++(void);
+ virtual e_float& operator--(void);
+
+ // Conversion routines
+ virtual void extract_parts (double& mantissa, INT64& exponent) const;
+ virtual double extract_double (void) const;
+ virtual INT64 extract_int64 (void) const;
+ virtual e_float extract_integer_part(void) const;
+ virtual e_float extract_decimal_part(void) const;
+
+ // Argument range and check functions
+ virtual INT64 order(void) const;
+
+ private:
+
+ virtual void wr_string(std::string& str, std::ostream& os) const;
+ virtual bool rd_string(const char* const s);
+ };
+ }
+
+#endif // _E_FLOAT_GMP_HPP_

Added: sandbox/e_float/boost/e_float/e_float_integer.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_integer.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,24 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_INTEGER_HPP_
+ #define _E_FLOAT_INTEGER_HPP_
+
+ #include <vector>
+
+ #include <e_float/e_float.hpp>
+
+ namespace ef
+ {
+ e_float bernoulli (const UINT32 n);
+ void bernoulli_table(std::vector<e_float>& bn, const UINT32 n);
+ }
+
+#endif // _E_FLOAT_INTEGER_HPP_

Added: sandbox/e_float/boost/e_float/e_float_limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_limits.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,67 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_LIMITS_HPP_
+ #define _E_FLOAT_LIMITS_HPP_
+
+ #include <limits>
+
+ namespace ef
+ {
+ const e_float& zero (void);
+ const e_float& one (void);
+ const e_float& half (void);
+ const e_float& value_min(void);
+ const e_float& value_max(void);
+ const e_float& value_eps(void);
+ const e_float& value_inf(void);
+ const e_float& value_nan(void);
+ }
+
+ // Specialization of std::numeric_limits<e_float>.
+ namespace std
+ {
+ template <> class numeric_limits<e_float>
+ {
+ public: // Implement the "usual" public members for floating point types.
+ static const bool is_specialized = true;
+ static const bool is_signed = true;
+ static const bool is_integer = false;
+ static const bool is_exact = false;
+ static const bool is_bounded = true;
+ static const bool is_modulo = false;
+ static const bool is_iec559 = false;
+ static const INT32 digits10 = e_float::ef_digits10;
+ static const INT32 max_digits10 = e_float::ef_digits10 + 1;
+ static const INT32 digits = e_float::ef_digits;
+ static const INT64 max_exponent = e_float::ef_max_exp;
+ static const INT64 min_exponent = e_float::ef_min_exp;
+ static const INT64 max_exponent10 = e_float::ef_max_exp10;
+ static const INT64 min_exponent10 = e_float::ef_min_exp10;
+ static const INT32 radix = e_float::ef_radix;
+ static const int round_style = std::round_to_nearest;
+ static const bool has_infinity = true;
+ static const bool has_quiet_NaN = true;
+ static const bool has_signaling_NaN = false;
+ static const int has_denorm = std::denorm_absent;
+ static const bool has_denorm_loss = false;
+ static const bool traps = false;
+ static const bool tinyness_before = false;
+
+ static const e_float& (min) (void) throw() { return ef::value_min(); }
+ static const e_float& (max) (void) throw() { return ef::value_max(); }
+ static const e_float& epsilon (void) throw() { return ef::value_eps(); }
+ static const e_float& round_error(void) throw() { return ef::half(); }
+ static const e_float& infinity (void) throw() { return ef::value_inf(); }
+ static const e_float& quiet_NaN (void) throw() { return ef::value_nan(); }
+ };
+ }
+
+#endif // _E_FLOAT_LIMITS_HPP_

Added: sandbox/e_float/boost/e_float/e_float_mpfr.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_mpfr.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,206 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_MPFR_HPP_
+ #define _E_FLOAT_MPFR_HPP_
+
+ #include <cmath>
+ #include <string>
+
+ #if defined(__GNUC__)
+ #include <tr1/array>
+ #else
+ #include <array>
+ #endif
+
+ #include <e_float/e_float_base.hpp>
+
+ // Declare the types of MPFR.
+ extern "C"
+ {
+ typedef unsigned long mpfr_prec_t;
+ typedef int mpfr_sign_t;
+ typedef long int mp_exp_t;
+ typedef unsigned long int mp_limb_t;
+
+ #define mp_prec_t mpfr_prec_t
+ #define mp_rnd_t mpfr_rnd_t
+
+ typedef struct
+ {
+ mpfr_prec_t _mpfr_prec;
+ mpfr_sign_t _mpfr_sign;
+ mp_exp_t _mpfr_exp;
+ mp_limb_t* _mpfr_d;
+ }
+ __mpfr_struct;
+
+ #define __gmp_const const
+
+ typedef __mpfr_struct mpfr_t[1];
+ typedef __mpfr_struct* mpfr_ptr;
+ typedef __gmp_const __mpfr_struct* mpfr_srcptr;
+
+ typedef enum
+ {
+ GMP_RNDNA = -1,
+ GMP_RNDN = 0,
+ GMP_RNDZ = 1,
+ GMP_RNDU = 2,
+ GMP_RNDD = 3,
+ GMP_RND_MAX = 4
+ }
+ mpfr_rnd_t;
+ }
+
+ namespace mpfr
+ {
+ class e_float : public ::e_float_base
+ {
+ public:
+
+ static const INT32 ef_digits = static_cast<INT32>(((static_cast<INT64>(ef_digits10) * 3322LL) + 500LL) / 1000LL);
+ static const INT32 ef_radix = 2;
+
+ static const INT64 ef_max_exp = static_cast<INT64>(+1073741822LL);
+ static const INT64 ef_min_exp = static_cast<INT64>(-1073741822LL);
+ static const INT64 ef_max_exp10 = static_cast<INT64>(+323228496LL);
+ static const INT64 ef_min_exp10 = static_cast<INT64>(-323228496LL);
+
+ private:
+
+ static const INT32 ef_digits2 = static_cast<INT32>(((static_cast<INT64>(ef_digits10_tol) * 3322LL) + 500LL) / 1000LL);
+
+ private:
+
+ ::mpfr_t rop;
+
+ public:
+
+ e_float();
+ explicit e_float(const INT32 n);
+ explicit e_float(const INT64 n);
+ explicit e_float(const UINT32 u);
+ explicit e_float(const UINT64 u);
+ explicit e_float(const double d);
+ explicit e_float(const char* s);
+ explicit e_float(const std::string& str);
+
+ e_float(const e_float& f);
+
+ e_float(const double mantissa, const INT64 exponent);
+
+ virtual ~e_float();
+
+
+ private:
+
+ static void init(void);
+
+ void from_uint64(const UINT64 u);
+ void from_uint32(const UINT32 u);
+
+ public:
+
+ virtual INT32 cmp(const e_float& v) const;
+
+ virtual const e_float& my_value_nan(void) const;
+ virtual const e_float& my_value_inf(void) const;
+ virtual const e_float& my_value_max(void) const;
+ virtual const e_float& my_value_min(void) const;
+
+ virtual void precision(const INT32) { }
+
+ virtual e_float& operator= (const e_float& v);
+ virtual e_float& operator+=(const e_float& v);
+ virtual e_float& operator-=(const e_float& v);
+ virtual e_float& operator*=(const e_float& v);
+ virtual e_float& operator/=(const e_float& v);
+
+ virtual e_float& mul_by_int(const INT32 n);
+ virtual e_float& div_by_int(const INT32 n);
+
+ virtual e_float& calculate_inv (void);
+ virtual e_float& calculate_sqrt(void);
+
+ virtual bool isnan (void) const;
+ virtual bool isinf (void) const;
+ virtual bool isfinite(void) const;
+
+ virtual bool iszero (void) const;
+ virtual bool isone (void) const;
+ virtual bool isint (void) const;
+ virtual bool isneg (void) const;
+
+ virtual e_float& negate(void);
+
+ virtual e_float& operator++(void);
+ virtual e_float& operator--(void);
+
+ virtual void extract_parts (double& mantissa, INT64& exponent) const;
+ virtual double extract_double (void) const;
+ virtual INT64 extract_int64 (void) const;
+ virtual e_float extract_integer_part(void) const;
+ virtual e_float extract_decimal_part(void) const;
+
+ virtual INT64 order(void) const;
+
+ static e_float my_cbrt (const e_float& x);
+ static e_float my_rootn (const e_float& x, const UINT32 p);
+ static e_float my_exp (const e_float& x);
+ static e_float my_log (const e_float& x);
+ static e_float my_sin (const e_float& x);
+ static e_float my_cos (const e_float& x);
+ static e_float my_tan (const e_float& x);
+ static e_float my_asin (const e_float& x);
+ static e_float my_acos (const e_float& x);
+ static e_float my_atan (const e_float& x);
+ static e_float my_sinh (const e_float& x);
+ static e_float my_cosh (const e_float& x);
+ static e_float my_tanh (const e_float& x);
+ static e_float my_asinh (const e_float& x);
+ static e_float my_acosh (const e_float& x);
+ static e_float my_atanh (const e_float& x);
+ static e_float my_gamma (const e_float& x);
+ static e_float my_riemann_zeta (const e_float& x);
+ static e_float my_cyl_bessel_jn(const INT32 n, const e_float& x);
+ static e_float my_cyl_bessel_yn(const INT32 n, const e_float& x);
+
+ private:
+
+ virtual void wr_string(std::string& str, std::ostream& os) const;
+ virtual bool rd_string(const char* const s);
+
+ public:
+
+ virtual bool has_its_own_cbrt (void) const { return true; }
+ virtual bool has_its_own_rootn (void) const { return true; }
+ virtual bool has_its_own_exp (void) const { return true; }
+ virtual bool has_its_own_log (void) const { return true; }
+ virtual bool has_its_own_sin (void) const { return true; }
+ virtual bool has_its_own_cos (void) const { return true; }
+ virtual bool has_its_own_tan (void) const { return true; }
+ virtual bool has_its_own_asin (void) const { return true; }
+ virtual bool has_its_own_acos (void) const { return true; }
+ virtual bool has_its_own_atan (void) const { return true; }
+ virtual bool has_its_own_sinh (void) const { return true; }
+ virtual bool has_its_own_cosh (void) const { return true; }
+ virtual bool has_its_own_tanh (void) const { return true; }
+ virtual bool has_its_own_asinh (void) const { return true; }
+ virtual bool has_its_own_acosh (void) const { return true; }
+ virtual bool has_its_own_atanh (void) const { return true; }
+ virtual bool has_its_own_gamma (void) const { return false; }
+ virtual bool has_its_own_riemann_zeta (void) const { return false; }
+ virtual bool has_its_own_cyl_bessel_jn(void) const { return false; }
+ virtual bool has_its_own_cyl_bessel_yn(void) const { return false; }
+ };
+ }
+
+#endif // _E_FLOAT_MPFR_HPP_

Added: sandbox/e_float/boost/e_float/e_float_prime.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_prime.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,23 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_PRIME_HPP_
+ #define _E_FLOAT_PRIME_HPP_
+
+ #include <deque>
+
+ #include <e_float/e_float.hpp>
+
+ namespace ef
+ {
+ void prime(const UINT32 n, std::deque<UINT32>& primes);
+ }
+
+#endif // _PRIME_2008_09_11_H_

Added: sandbox/e_float/boost/e_float/e_float_types.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_types.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,42 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_TYPES_HPP_
+ #define _E_FLOAT_TYPES_HPP_
+
+ #if !defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__GNUC__)
+ #error "Compiler not supported: Types can not be determined"
+ #endif
+
+ #if defined(_MSC_VER) || defined(__INTEL_COMPILER)
+
+ typedef signed __int64 INT64;
+ typedef unsigned __int64 UINT64;
+
+ #elif defined(__GNUC__)
+
+ typedef signed long long INT64;
+ typedef unsigned long long UINT64;
+
+ #endif
+
+ typedef signed int INT32;
+ typedef unsigned int UINT32;
+ typedef signed short INT16;
+ typedef unsigned short UINT16;
+
+ #ifndef _WINDEF_
+
+ typedef signed char INT8;
+ typedef unsigned char UINT8;
+
+ #endif
+
+#endif // _E_FLOAT_TYPES_HPP_

Added: sandbox/e_float/boost/e_float/e_float_zeta.hpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/boost/e_float/e_float_zeta.hpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,28 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_ZETA_HPP_
+ #define _E_FLOAT_ZETA_HPP_
+
+ #include <e_float/e_float.hpp>
+ #include <e_float/e_float_complex.hpp>
+
+ namespace ef
+ {
+ e_float riemann_zeta(const INT32 n);
+ e_float riemann_zeta(const e_float& s);
+ }
+
+ namespace efz
+ {
+ ef_complex riemann_zeta(const ef_complex& s);
+ }
+
+#endif // _E_FLOAT_ZETA_HPP_

Added: sandbox/e_float/libs/e_float/build/Makefile.gmk
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/build/Makefile.gmk 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,192 @@
+
+# Copyright Christopher Kormanyos 2002 - 2011.
+# 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)
+
+# This work is based on an earlier work:
+# "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+# in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+###############################################################
+#
+# Makefile for e_float
+#
+###############################################################
+
+
+# ------------------------------------------------------------------------------
+# filelist
+# ------------------------------------------------------------------------------
+include MakefileFiles.gmk
+
+ifeq ($(MP),)
+ TYPE_MP = efx
+endif
+
+ifeq ($(MP),efx)
+ TYPE_MP = efx
+endif
+
+ifeq ($(MP),gmp)
+ TYPE_MP = gmp
+endif
+
+ifeq ($(MP),mpfr)
+ TYPE_MP = mpfr
+endif
+
+# ------------------------------------------------------------------------------
+# symbols
+# ------------------------------------------------------------------------------
+PAR_OPEN = \(
+PAR_CLOSE = \)
+
+
+# ------------------------------------------------------------------------------
+# targets
+# ------------------------------------------------------------------------------
+PATH_TARGET = unix-$(TYPE_MP)
+PATH_OBJ = $(PATH_TARGET)/obj
+PATH_ERR = $(PATH_TARGET)/err
+TARGET = e_float
+EXTENSION = exe
+
+
+# ------------------------------------------------------------------------------
+# Tool parameters
+# ------------------------------------------------------------------------------
+CFLAGS_BASE = -std=c++0x -O3 -I../../../boost
+CFLAGS_WARN = -Wall -Wextra -pedantic -Weffc++
+LFLAGS_BASE =
+
+ifeq ($(TYPE_MP),efx)
+ CFLAGS_BASE := $(CFLAGS_BASE) -DE_FLOAT_TYPE_EFX
+ FILES_MP = ../src/e_float/efx/e_float_efx
+endif
+
+ifeq ($(TYPE_MP),gmp)
+ CFLAGS_BASE := $(CFLAGS_BASE) -DE_FLOAT_TYPE_GMP
+ LFLAGS_BASE := $(LFLAGS_BASE) -lgmp
+ FILES_MP = ../src/e_float/gmp/e_float_gmp
+endif
+
+ifeq ($(TYPE_MP),mpfr)
+ CFLAGS_BASE := $(CFLAGS_BASE) -DE_FLOAT_TYPE_MPFR
+ LFLAGS_BASE := $(LFLAGS_BASE) -lgmp -lmpfr
+ FILES_MP = ../src/e_float/mpfr/e_float_mpfr
+endif
+
+CFLAGS = $(CFLAGS_BASE) $(CFLAGS_WARN)
+CFLAGS_NOWARN = $(CFLAGS_BASE)
+LFLAGS = $(LFLAGS_BASE)
+
+
+# ------------------------------------------------------------------------------
+# object files
+# ------------------------------------------------------------------------------
+FILES_ALL = $(FILES_MP) \
+ $(FILES_EF) \
+ $(FILES_UTILITY) \
+ $(FILES_FUNCTIONS) \
+ $(FILES_EXAMPLES) \
+ $(FILES_TEST) \
+ $(FILES_TEST_SPOT) \
+ $(FILES_TEST_REAL) \
+ $(FILES_TEST_IMAG)
+
+FILES_O = $(addprefix $(PATH_OBJ)/, $(notdir $(addsuffix .o, $(FILES_ALL))))
+
+
+# ------------------------------------------------------------------------------
+# VPATH definition: VPATH is required for make to find the source files.
+# ------------------------------------------------------------------------------
+VPATH := $(sort $(dir $(FILES_ALL)))
+
+
+# ------------------------------------------------------------------------------
+# Development tools
+# ------------------------------------------------------------------------------
+GCC = gcc
+CC = g++
+SED = sed
+ECHO = echo
+MAKE = make
+MKDIR = mkdir
+RM = rm
+GAWK = gawk
+
+
+# ------------------------------------------------------------------------------
+# Main-Dependencies (target: all)
+# ------------------------------------------------------------------------------
+.PHONY: all
+all: OutputDirs Version $(PATH_TARGET)/$(TARGET).$(EXTENSION)
+
+
+# ------------------------------------------------------------------------------
+# Main-Dependencies (target: rebuild)
+# ------------------------------------------------------------------------------
+.PHONY: rebuild
+rebuild: clean all
+
+
+# ------------------------------------------------------------------------------
+# Clean project (target: clean)
+# ------------------------------------------------------------------------------
+.PHONY: clean
+clean: Version
+ @$(ECHO) +++ cleaning all
+ @-$(RM) -f $(PATH_TARGET)/$(TARGET).$(EXTENSION) > NUL 2> NUL
+ @-$(RM) -f $(PATH_OBJ)/*.* > NUL 2> NUL
+ @-$(RM) -f $(PATH_ERR)/*.* > NUL 2> NUL
+
+
+# ------------------------------------------------------------------------------
+# create output directories
+# ------------------------------------------------------------------------------
+.PHONY: OutputDirs
+OutputDirs:
+ # Create the output directories
+ @-$(MKDIR) -p $(PATH_TARGET)
+ @-$(MKDIR) -p $(PATH_OBJ)
+ @-$(MKDIR) -p $(PATH_ERR)
+
+
+# ------------------------------------------------------------------------------
+# version information
+# ------------------------------------------------------------------------------
+.PHONY: Version
+Version:
+ # Print the GNU make version and the GCC version
+ @-$(MAKE) --version | $(GAWK) '{ if(match($$0, "Make") > 0) print("GNUmake version: " $$0) }'
+ @-$(GCC) --version | $(GAWK) '{ if(match($$0, "gcc") > 0) print("GCC version: " $$0) }'
+
+
+# ------------------------------------------------------------------------------
+# link/locate application
+# ------------------------------------------------------------------------------
+$(PATH_TARGET)/$(TARGET).$(EXTENSION) : $(FILES_O)
+ @$(ECHO) +++ linking application: link to $(PATH_TARGET)/$(TARGET).$(EXTENSION)
+ @$(CC) $(FILES_O) $(LFLAGS) -o $(PATH_TARGET)/$(TARGET).$(EXTENSION)
+
+
+# ------------------------------------------------------------------------------
+# include dependency files
+# ------------------------------------------------------------------------------
+ifneq ($(MAKECMDGOALS),rebuild)
+-include $(subst .o,.d, $(FILES_O))
+endif
+
+
+# ------------------------------------------------------------------------------
+# pattern rule for cpp-files
+# ------------------------------------------------------------------------------
+$(PATH_OBJ)/%.o : %.cpp
+ # Compile the source file...
+ # ...and Reformat (using sed) any possible error/warning messages for the Visual Studio build window
+ # ...and Generate a dependency file (using the g++ flag -MM), reformating it with sed
+ @-$(ECHO) +++ compiling: $<
+ @-$(CC) $(CFLAGS) $< -c -o $(PATH_OBJ)/$(basename $(@F)).o 2> $(PATH_ERR)/$(basename $(@F)).err
+ @-$(SED) -e 's|.h:\([0-9]*\),|.h(\1) :|' -e 's|:\([0-9]*\):|(\1) :|' $(PATH_ERR)/$(basename $(@F)).err
+ @-$(CC) $(CFLAGS) -MM $< | $(SED) -e 's|\($(basename $(@F)).o\):|$(PATH_OBJ)/\1:|' > $(PATH_OBJ)/$(basename $(@F)).d

Added: sandbox/e_float/libs/e_float/build/MakefileFiles.gmk
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/build/MakefileFiles.gmk 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,131 @@
+
+# Copyright Christopher Kormanyos 2002 - 2011.
+# 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)
+
+# This work is based on an earlier work:
+# "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+# in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#
+# e_float files
+#
+FILES_EF = ../src/e_float/e_float \
+ ../src/e_float/e_float_base
+
+#
+# Utility files
+#
+FILES_UTILITY = ../src/utility/util_digit_scale \
+ ../src/utility/util_power_j_pow_x \
+ ../src/utility/util_timer
+
+#
+# Function files
+#
+FILES_FUNCTIONS = ../src/functions/constants/constants \
+ ../src/functions/elementary/elementary_complex \
+ ../src/functions/elementary/elementary_hyper_g \
+ ../src/functions/elementary/elementary_math \
+ ../src/functions/elementary/elementary_trans \
+ ../src/functions/elementary/elementary_trig \
+ ../src/functions/gamma/factorial \
+ ../src/functions/gamma/factorial2 \
+ ../src/functions/gamma/gamma \
+ ../src/functions/gamma/gamma_util \
+ ../src/functions/gamma/pochhammer \
+ ../src/functions/integer/bernoulli_b \
+ ../src/functions/integer/prime \
+ ../src/functions/integer/prime_factor \
+ ../src/functions/tables/A000142 \
+ ../src/functions/tables/A000367 \
+ ../src/functions/tables/A002445 \
+ ../src/functions/tables/A006882 \
+ ../src/functions/tables/A007318 \
+ ../src/functions/zeta/zeta
+
+#
+# Example files
+#
+FILES_EXAMPLES = ../example/example_001_basic_usage_real \
+ ../example/example_002_basic_usage_imag \
+ ../example/example_005_recursive_trapezoid_integral \
+ ../example/example_008_guass_laguerre
+
+#
+# Test files
+#
+FILES_TEST = ../test/test \
+ ../test/test_case_base
+
+#
+# Spot test files
+#
+FILES_TEST_SPOT = ../test/spot/test_spot
+
+#
+# Real test files
+#
+FILES_TEST_REAL = ../test/real/test_real \
+ ../test/real/cases/test_case_0000x_overflow_underflow \
+ ../test/real/cases/test_case_00011_various_elem_math \
+ ../test/real/cases/test_case_00021_bernoulli \
+ ../test/real/cases/test_case_00051_factorial \
+ ../test/real/cases/test_case_00052_factorial2 \
+ ../test/real/cases/test_case_00071_various_int_func \
+ ../test/real/cases/test_case_00101_sin \
+ ../test/real/cases/test_case_00102_cos \
+ ../test/real/cases/test_case_00103_exp \
+ ../test/real/cases/test_case_00104_log \
+ ../test/real/cases/test_case_00105_sqrt \
+ ../test/real/cases/test_case_00106_rootn \
+ ../test/real/cases/test_case_00111_sin_small_x \
+ ../test/real/cases/test_case_00112_cos_x_near_pi_half \
+ ../test/real/cases/test_case_00113_atan_x_small_to_large \
+ ../test/real/cases/test_case_00114_various_trig \
+ ../test/real/cases/test_case_00115_various_elem_trans \
+ ../test/real/cases/test_case_00121_sinh \
+ ../test/real/cases/test_case_00122_cosh \
+ ../test/real/cases/test_case_00123_tanh \
+ ../test/real/cases/test_case_00124_asinh \
+ ../test/real/cases/test_case_00125_acosh \
+ ../test/real/cases/test_case_00126_atanh \
+ ../test/real/cases/test_case_00201_gamma \
+ ../test/real/cases/test_case_00202_gamma_medium_x \
+ ../test/real/cases/test_case_00203_gamma_small_x \
+ ../test/real/cases/test_case_00204_gamma_tiny_x \
+ ../test/real/cases/test_case_00205_gamma_near_neg_n \
+ ../test/real/cases/test_case_00221_various_gamma_func \
+ ../test/real/cases/test_case_00901_zeta_small_x \
+ ../test/real/cases/test_case_00902_zeta_all_x \
+ ../test/real/cases/test_case_00903_zeta_neg_x
+
+#
+# Imag test files
+#
+FILES_TEST_IMAG = ../test/imag/test_imag \
+ ../test/imag/cases/test_case_02101_z_sin \
+ ../test/imag/cases/test_case_02102_z_cos \
+ ../test/imag/cases/test_case_02103_z_exp \
+ ../test/imag/cases/test_case_02104_z_log \
+ ../test/imag/cases/test_case_02105_z_sqrt \
+ ../test/imag/cases/test_case_02106_z_rootn \
+ ../test/imag/cases/test_case_02111_z_asin \
+ ../test/imag/cases/test_case_02112_z_acos \
+ ../test/imag/cases/test_case_02113_z_atan \
+ ../test/imag/cases/test_case_02114_z_various_trig \
+ ../test/imag/cases/test_case_02115_z_various_elem_trans_log \
+ ../test/imag/cases/test_case_02116_z_various_elem \
+ ../test/imag/cases/test_case_02121_z_sinh \
+ ../test/imag/cases/test_case_02122_z_cosh \
+ ../test/imag/cases/test_case_02123_z_tanh \
+ ../test/imag/cases/test_case_02124_z_asinh \
+ ../test/imag/cases/test_case_02125_z_acosh \
+ ../test/imag/cases/test_case_02126_z_atanh \
+ ../test/imag/cases/test_case_02201_z_gamma \
+ ../test/imag/cases/test_case_02202_z_gamma_medium_x \
+ ../test/imag/cases/test_case_02901_z_zeta_small_x \
+ ../test/imag/cases/test_case_02902_z_zeta_all_x \
+ ../test/imag/cases/test_case_02903_z_zeta_neg_x \
+ ../test/imag/cases/test_case_02911_z_zeta_crit_strip

Added: sandbox/e_float/libs/e_float/build/e_float.vcxproj
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/build/e_float.vcxproj 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,1315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="debug-efx|Win32">
+ <Configuration>debug-efx</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="debug-efx|x64">
+ <Configuration>debug-efx</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="debug-gmp|Win32">
+ <Configuration>debug-gmp</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="debug-gmp|x64">
+ <Configuration>debug-gmp</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="debug-mpfr|Win32">
+ <Configuration>debug-mpfr</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="debug-mpfr|x64">
+ <Configuration>debug-mpfr</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="release-efx|Win32">
+ <Configuration>release-efx</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="release-efx|x64">
+ <Configuration>release-efx</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="release-gmp|Win32">
+ <Configuration>release-gmp</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="release-gmp|x64">
+ <Configuration>release-gmp</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="release-mpfr|Win32">
+ <Configuration>release-mpfr</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="release-mpfr|x64">
+ <Configuration>release-mpfr</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{79DD124E-E120-40F3-B2F1-127419BDC295}</ProjectGuid>
+ <RootNamespace>e_float</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">$(SolutionDir)win32-release-gmp\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">$(SolutionDir)x64-release-gmp\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">$(SolutionDir)win32-release-efx\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">$(SolutionDir)x64-release-efx\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">$(SolutionDir)win32-debug-gmp\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">$(SolutionDir)x64-debug-gmp\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">$(SolutionDir)win32-debug-efx\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">$(SolutionDir)x64-debug-efx\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">$(SolutionDir)win32-release-mpfr\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">$(SolutionDir)x64-release-mpfr\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">$(SolutionDir)win32-debug-mpfr\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">$(OutDir)</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">$(SolutionDir)x64-debug-mpfr\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">$(OutDir)</IntDir>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">
+ <Midl>
+ <TypeLibraryName>.\release-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;E_FLOAT_TYPE_GMP;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/p4/gmp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\release-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;E_FLOAT_TYPE_GMP;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/x64/gmp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">
+ <Midl>
+ <TypeLibraryName>.\release-efx/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;E_FLOAT_TYPE_EFX;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\release-efx/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;E_FLOAT_TYPE_EFX;_SECURE_SCL= 0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">
+ <Midl>
+ <TypeLibraryName>.\debug-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;E_FLOAT_TYPE_GMP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/NODEFAULTLIB:LIBCMT %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/p4/gmp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)e_float_debug.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\debug-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;E_FLOAT_TYPE_GMP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/NODEFAULTLIB:LIBCMT %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/x64/gmp.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)e_float_debug.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">
+ <Midl>
+ <TypeLibraryName>.\debug-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;E_FLOAT_TYPE_EFX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)e_float_debug.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\debug-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;E_FLOAT_TYPE_EFX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)e_float_debug.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">
+ <Midl>
+ <TypeLibraryName>.\release-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;E_FLOAT_TYPE_MPFR;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/p4/gmp.lib;../src/e_float/mpfr/2-4-1/vc9/p4/mpfr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\release-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;E_FLOAT_TYPE_MPFR;_SECURE_SCL=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <WarningLevel>Level4</WarningLevel>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/x64/gmp.lib;../src/e_float/mpfr/2-4-1/vc9/x64/mpfr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">
+ <Midl>
+ <TypeLibraryName>.\debug-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;E_FLOAT_TYPE_MPFR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <AssemblerListingLocation>.\debug-gmp/</AssemblerListingLocation>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/NODEFAULTLIB:LIBCMT %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/p4/gmp.lib;../src/e_float/mpfr/2-4-1/vc9/p4/mpfr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)e_float_debug.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\debug-gmp/e_float.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>$(SolutionDir)..\..\..\boost;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;E_FLOAT_TYPE_MPFR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <PrecompiledHeaderOutputFile>
+ </PrecompiledHeaderOutputFile>
+ <ObjectFileName>$(IntDir)</ObjectFileName>
+ <ProgramDataBaseFileName>$(IntDir)e_float.pdb</ProgramDataBaseFileName>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level4</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0407</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/NODEFAULTLIB:LIBCMT %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>../src/e_float/gmp/4-2-4/vc9/x64/gmp.lib;../src/e_float/mpfr/2-4-1/vc9/x64/mpfr.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)e_float.exe</OutputFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <ProgramDatabaseFile>$(IntDir)e_float_debug.pdb</ProgramDatabaseFile>
+ <SubSystem>Console</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ <Xdcmake>
+ <OutputFile>$(OutDir)e_float.xml</OutputFile>
+ </Xdcmake>
+ <Bscmake>
+ <OutputFile>$(OutDir)e_float.bsc</OutputFile>
+ </Bscmake>
+ <PostBuildEvent>
+ <Command>
+ </Command>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\e_float\e_float.cpp" />
+ <ClCompile Include="..\src\e_float\e_float_base.cpp" />
+ <ClCompile Include="..\src\e_float\efx\e_float_efx.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </ClCompile>
+ <ClCompile Include="..\src\e_float\gmp\e_float_gmp.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </ClCompile>
+ <ClCompile Include="..\src\e_float\mpfr\e_float_mpfr.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\gamma\factorial.cpp" />
+ <ClCompile Include="..\src\functions\gamma\factorial2.cpp" />
+ <ClCompile Include="..\src\functions\gamma\gamma.cpp" />
+ <ClCompile Include="..\src\functions\gamma\gamma_util.cpp" />
+ <ClCompile Include="..\src\functions\gamma\pochhammer.cpp" />
+ <ClCompile Include="..\src\functions\tables\A000142.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">MaxSpeed</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">MaxSpeed</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">Disabled</Optimization>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">Disabled</Optimization>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A000367.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">MaxSpeed</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">MaxSpeed</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</FunctionLevelLinking>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A002445.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">MaxSpeed</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">MaxSpeed</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</FunctionLevelLinking>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">Disabled</Optimization>
+ <InlineFunctionExpansion Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">Size</FavorSizeOrSpeed>
+ <StringPooling Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">false</StringPooling>
+ <FunctionLevelLinking Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</FunctionLevelLinking>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A006882.cpp" />
+ <ClCompile Include="..\src\functions\tables\A007318.cpp">
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalOptions Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">/bigobj %(AdditionalOptions)</AdditionalOptions>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\zeta\zeta.cpp" />
+ <ClCompile Include="..\src\functions\integer\bernoulli_b.cpp" />
+ <ClCompile Include="..\src\functions\integer\prime.cpp" />
+ <ClCompile Include="..\src\functions\integer\prime_factor.cpp" />
+ <ClCompile Include="..\src\functions\elementary\elementary_complex.cpp" />
+ <ClCompile Include="..\src\functions\elementary\elementary_hyper_g.cpp" />
+ <ClCompile Include="..\src\functions\elementary\elementary_math.cpp" />
+ <ClCompile Include="..\src\functions\elementary\elementary_trans.cpp" />
+ <ClCompile Include="..\src\functions\elementary\elementary_trig.cpp" />
+ <ClCompile Include="..\src\functions\constants\constants.cpp" />
+ <ClCompile Include="..\src\utility\util_digit_scale.cpp" />
+ <ClCompile Include="..\src\utility\util_power_j_pow_x.cpp" />
+ <ClCompile Include="..\src\utility\util_timer.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02101_z_sin.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02102_z_cos.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02103_z_exp.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02104_z_log.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02105_z_sqrt.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02106_z_rootn.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02111_z_asin.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02112_z_acos.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02113_z_atan.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02114_z_various_trig.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02115_z_various_elem_trans_log.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02116_z_various_elem.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02121_z_sinh.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02122_z_cosh.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02123_z_tanh.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02124_z_asinh.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02125_z_acosh.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02126_z_atanh.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02201_z_gamma.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02202_z_gamma_medium_x.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02901_z_zeta_small_x.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02902_z_zeta_all_x.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02903_z_zeta_neg_x.cpp" />
+ <ClCompile Include="..\test\imag\cases\test_case_02911_z_zeta_crit_strip.cpp" />
+ <ClCompile Include="..\test\imag\test_imag.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_0000x_overflow_underflow.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00011_various_elem_math.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00021_bernoulli.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00051_factorial.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00052_factorial2.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00071_various_int_func.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00101_sin.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00102_cos.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00103_exp.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00104_log.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00105_sqrt.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00106_rootn.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00111_sin_small_x.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00112_cos_x_near_pi_half.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00113_atan_x_small_to_large.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00114_various_trig.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00115_various_elem_trans.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00121_sinh.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00122_cosh.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00123_tanh.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00124_asinh.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00125_acosh.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00126_atanh.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00201_gamma.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00202_gamma_medium_x.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00203_gamma_small_x.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00204_gamma_tiny_x.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00205_gamma_near_neg_n.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00221_various_gamma_func.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00901_zeta_small_x.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00902_zeta_all_x.cpp" />
+ <ClCompile Include="..\test\real\cases\test_case_00903_zeta_neg_x.cpp" />
+ <ClCompile Include="..\test\real\test_real.cpp" />
+ <ClCompile Include="..\test\spot\test_spot.cpp" />
+ <ClCompile Include="..\test\test.cpp" />
+ <ClCompile Include="..\test\test_case_base.cpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_base.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_complex.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_constants.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_efx.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary_complex.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary_math.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary_trans.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_functions.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_gamma.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_global_math.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_gmp.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_integer.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_limits.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_mpfr.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_prime.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_types.hpp" />
+ <ClInclude Include="..\..\..\boost\e_float\e_float_zeta.hpp" />
+ <ClInclude Include="..\src\functions\integer\prime_factors.h" />
+ <ClInclude Include="..\test\imag\test_case_imag.h" />
+ <ClInclude Include="..\test\imag\test_imag.h" />
+ <ClInclude Include="..\test\real\test_case_real.h" />
+ <ClInclude Include="..\test\real\test_real.h" />
+ <ClInclude Include="..\test\spot\test_spot.h" />
+ <ClInclude Include="..\test\test_case_base.h" />
+ <CustomBuildStep Include="..\src\e_float\efx\e_float_efx.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\efx\e_float_efx_array.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\gmp\e_float_gmp.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\gmp\e_float_gmp_protos.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\gmp\e_float_gmp_types.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\mpfr\e_float_mpfr.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\mpfr\e_float_mpfr_protos.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\mpfr\e_float_mpfr_types.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ </CustomBuildStep>
+ <ClInclude Include="..\src\functions\gamma\gamma_util.h" />
+ <ClInclude Include="..\src\functions\tables\tables.h" />
+ <ClInclude Include="..\src\generic_functions\constants\generic_functions_constants.h" />
+ <ClInclude Include="..\src\generic_functions\elementary\generic_functions_elementary.h" />
+ <ClInclude Include="..\src\utility\util_alternating_sum.h" />
+ <ClInclude Include="..\src\utility\util_coefficient_expansion.h" />
+ <ClInclude Include="..\src\utility\util_digit_scale.h" />
+ <ClInclude Include="..\src\utility\util_find_root_base.h" />
+ <ClInclude Include="..\src\utility\util_find_root_bisect.h" />
+ <ClInclude Include="..\src\utility\util_find_root_newton_raphson.h" />
+ <ClInclude Include="..\src\utility\util_function.h" />
+ <ClInclude Include="..\src\utility\util_function_derivative.h" />
+ <ClInclude Include="..\src\utility\util_function_operation.h" />
+ <ClInclude Include="..\src\utility\util_interpolate.h" />
+ <ClInclude Include="..\src\utility\util_lexical_cast.h" />
+ <ClInclude Include="..\src\utility\util_noncopyable.h" />
+ <ClInclude Include="..\src\utility\util_numeric_cast.h" />
+ <ClInclude Include="..\src\utility\util_point.h" />
+ <ClInclude Include="..\src\utility\util_power_j_pow_x.h" />
+ <ClInclude Include="..\src\utility\util_power_x_pow_n.h" />
+ <ClInclude Include="..\src\utility\util_ranged_function_operation.h" />
+ <ClInclude Include="..\src\utility\util_timer.h" />
+ <ClInclude Include="..\src\utility\util_trapezoid.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\..\..\doc\e_float_manual.pdf">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ <None Include="..\..\..\doc\e_float_poster.pdf">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ <None Include="..\..\..\doc\e_float_poster_courier.pdf">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ <None Include="..\license\ACM_e_float_boost_license.pdf">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ <None Include="..\license\LICENSE_1_0.pdf">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ <None Include="..\license\LICENSE_1_0.txt">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ <None Include="Makefile.gmk">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ <None Include="MakefileFiles.gmk">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='debug-mpfr|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-efx|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-gmp|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='release-mpfr|x64'">true</ExcludedFromBuild>
+ </None>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ <Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
+ </ImportGroup>
+</Project>
\ No newline at end of file

Added: sandbox/e_float/libs/e_float/build/e_float.vcxproj.filters
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/build/e_float.vcxproj.filters 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,545 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="libs">
+ <UniqueIdentifier>{dc618afc-db82-427e-b3a5-6441ed18c876}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float">
+ <UniqueIdentifier>{bc66d909-39fc-45a0-89a3-5ff18bbefa82}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\build">
+ <UniqueIdentifier>{82b321c5-a710-4378-b292-b4267b51cda3}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\licence">
+ <UniqueIdentifier>{e40684d3-e066-4eb2-9ab0-087f6548550c}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src">
+ <UniqueIdentifier>{eeb500a7-0118-4d22-bd9b-9d0f8a4f17ea}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="libs\e_float\src\e_float">
+ <UniqueIdentifier>{01e39304-f4d4-42b4-af61-697858303ab4}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\e_float\efx">
+ <UniqueIdentifier>{c94c0589-dbb6-4bae-b71c-ac3bef0417a8}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\e_float\gmp">
+ <UniqueIdentifier>{e161e079-748f-42c5-b3be-4010045e326a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\e_float\mpfr">
+ <UniqueIdentifier>{b86af12a-cb5d-4db2-96a7-8e055b6732d7}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\functions">
+ <UniqueIdentifier>{d45e8aee-a017-4781-897d-be24935b78be}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\functions\gamma">
+ <UniqueIdentifier>{7dce61f1-00ec-4e54-93bd-a72352543dd4}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\functions\tables">
+ <UniqueIdentifier>{a5b13044-8e0c-40ff-9c41-68c0c75ba923}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\functions\zeta">
+ <UniqueIdentifier>{94b0b952-b3ad-45c3-985a-b9e41815545f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\functions\integer">
+ <UniqueIdentifier>{4b82f0ab-4d72-4374-8907-8b953f02710f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\functions\elementary">
+ <UniqueIdentifier>{1eedc77c-29e7-4f5b-8b96-ffd90d877815}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\functions\constants">
+ <UniqueIdentifier>{cc4f2986-d17b-422b-9586-109c3d0b49da}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\utility">
+ <UniqueIdentifier>{11f357a9-d05b-4fb5-88a0-5f92afd3fa9b}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\generic_functions">
+ <UniqueIdentifier>{8560fcf8-dff7-4d36-a98c-8d079eade1a7}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\generic_functions\elementary">
+ <UniqueIdentifier>{2141e3a0-747f-4465-acea-240585f76171}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\src\generic_functions\constants">
+ <UniqueIdentifier>{07ad78d5-5685-4c9b-96d4-5c86529b9a09}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\test">
+ <UniqueIdentifier>{bbddb5ca-79f9-477f-8652-e38bbe8e40ea}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\test\real">
+ <UniqueIdentifier>{6a01c86d-31b9-4a46-9121-74bd203d7961}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\test\real\cases">
+ <UniqueIdentifier>{665a964c-4598-4dc6-a02f-d9ae5c2dddcf}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\test\spot">
+ <UniqueIdentifier>{0a9fb06d-b5cc-47e2-b25e-e917904aee2a}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\test\imag">
+ <UniqueIdentifier>{0c01fae0-3ff0-4f1a-ac00-d6238bdabd01}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="libs\e_float\test\imag\cases">
+ <UniqueIdentifier>{c10ac75a-ed22-4f7d-89e1-4b0745923caf}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="boost">
+ <UniqueIdentifier>{f5907b86-108b-444b-9efc-f596cabf046f}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="boost\e_float">
+ <UniqueIdentifier>{087ba7fc-16a5-4e6d-b74a-3309a6462c13}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="doc">
+ <UniqueIdentifier>{72f8e7eb-332a-4eee-800b-bf29ce6170ab}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\src\e_float\e_float.cpp">
+ <Filter>libs\e_float\src\e_float</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\e_float\e_float_base.cpp">
+ <Filter>libs\e_float\src\e_float</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\e_float\efx\e_float_efx.cpp">
+ <Filter>libs\e_float\src\e_float\efx</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\e_float\gmp\e_float_gmp.cpp">
+ <Filter>libs\e_float\src\e_float\gmp</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\e_float\mpfr\e_float_mpfr.cpp">
+ <Filter>libs\e_float\src\e_float\mpfr</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\gamma\factorial.cpp">
+ <Filter>libs\e_float\src\functions\gamma</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\gamma\factorial2.cpp">
+ <Filter>libs\e_float\src\functions\gamma</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\gamma\gamma.cpp">
+ <Filter>libs\e_float\src\functions\gamma</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\gamma\gamma_util.cpp">
+ <Filter>libs\e_float\src\functions\gamma</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\gamma\pochhammer.cpp">
+ <Filter>libs\e_float\src\functions\gamma</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A000142.cpp">
+ <Filter>libs\e_float\src\functions\tables</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A000367.cpp">
+ <Filter>libs\e_float\src\functions\tables</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A002445.cpp">
+ <Filter>libs\e_float\src\functions\tables</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A006882.cpp">
+ <Filter>libs\e_float\src\functions\tables</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\tables\A007318.cpp">
+ <Filter>libs\e_float\src\functions\tables</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\zeta\zeta.cpp">
+ <Filter>libs\e_float\src\functions\zeta</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\integer\bernoulli_b.cpp">
+ <Filter>libs\e_float\src\functions\integer</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\integer\prime.cpp">
+ <Filter>libs\e_float\src\functions\integer</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\integer\prime_factor.cpp">
+ <Filter>libs\e_float\src\functions\integer</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\elementary\elementary_complex.cpp">
+ <Filter>libs\e_float\src\functions\elementary</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\elementary\elementary_hyper_g.cpp">
+ <Filter>libs\e_float\src\functions\elementary</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\elementary\elementary_math.cpp">
+ <Filter>libs\e_float\src\functions\elementary</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\elementary\elementary_trans.cpp">
+ <Filter>libs\e_float\src\functions\elementary</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\elementary\elementary_trig.cpp">
+ <Filter>libs\e_float\src\functions\elementary</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\functions\constants\constants.cpp">
+ <Filter>libs\e_float\src\functions\constants</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\utility\util_digit_scale.cpp">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\utility\util_power_j_pow_x.cpp">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClCompile>
+ <ClCompile Include="..\src\utility\util_timer.cpp">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\test.cpp">
+ <Filter>libs\e_float\test</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\test_case_base.cpp">
+ <Filter>libs\e_float\test</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\spot\test_spot.cpp">
+ <Filter>libs\e_float\test\spot</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\test_real.cpp">
+ <Filter>libs\e_float\test\real</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_0000x_overflow_underflow.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00011_various_elem_math.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00021_bernoulli.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00051_factorial.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00052_factorial2.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00071_various_int_func.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00101_sin.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00102_cos.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00103_exp.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00104_log.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00105_sqrt.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00106_rootn.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00111_sin_small_x.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00112_cos_x_near_pi_half.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00113_atan_x_small_to_large.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00114_various_trig.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00115_various_elem_trans.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00121_sinh.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00122_cosh.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00123_tanh.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00124_asinh.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00125_acosh.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00126_atanh.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00201_gamma.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00202_gamma_medium_x.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00203_gamma_small_x.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00204_gamma_tiny_x.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00205_gamma_near_neg_n.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00221_various_gamma_func.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00901_zeta_small_x.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00902_zeta_all_x.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\real\cases\test_case_00903_zeta_neg_x.cpp">
+ <Filter>libs\e_float\test\real\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\test_imag.cpp">
+ <Filter>libs\e_float\test\imag</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02101_z_sin.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02102_z_cos.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02103_z_exp.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02104_z_log.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02105_z_sqrt.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02106_z_rootn.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02111_z_asin.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02112_z_acos.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02113_z_atan.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02114_z_various_trig.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02115_z_various_elem_trans_log.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02116_z_various_elem.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02121_z_sinh.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02122_z_cosh.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02123_z_tanh.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02124_z_asinh.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02125_z_acosh.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02126_z_atanh.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02201_z_gamma.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02202_z_gamma_medium_x.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02901_z_zeta_small_x.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02902_z_zeta_all_x.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02903_z_zeta_neg_x.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ <ClCompile Include="..\test\imag\cases\test_case_02911_z_zeta_crit_strip.cpp">
+ <Filter>libs\e_float\test\imag\cases</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\src\functions\gamma\gamma_util.h">
+ <Filter>libs\e_float\src\functions\gamma</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\functions\tables\tables.h">
+ <Filter>libs\e_float\src\functions\tables</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_alternating_sum.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_coefficient_expansion.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_digit_scale.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_find_root_base.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_find_root_bisect.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_find_root_newton_raphson.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_function.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_function_derivative.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_function_operation.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_interpolate.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_lexical_cast.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_noncopyable.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_numeric_cast.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_point.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_power_j_pow_x.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_power_x_pow_n.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_ranged_function_operation.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_timer.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\utility\util_trapezoid.h">
+ <Filter>libs\e_float\src\utility</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\generic_functions\elementary\generic_functions_elementary.h">
+ <Filter>libs\e_float\src\generic_functions\elementary</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\generic_functions\constants\generic_functions_constants.h">
+ <Filter>libs\e_float\src\generic_functions\constants</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_case_base.h">
+ <Filter>libs\e_float\test</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\spot\test_spot.h">
+ <Filter>libs\e_float\test\spot</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\real\test_case_real.h">
+ <Filter>libs\e_float\test\real</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\real\test_real.h">
+ <Filter>libs\e_float\test\real</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\imag\test_case_imag.h">
+ <Filter>libs\e_float\test\imag</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\imag\test_imag.h">
+ <Filter>libs\e_float\test\imag</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_base.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_complex.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_constants.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary_complex.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary_math.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_elementary_trans.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_functions.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_gamma.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_global_math.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_integer.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_prime.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_types.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_zeta.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_efx.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_gmp.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_mpfr.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\..\boost\e_float\e_float_limits.hpp">
+ <Filter>boost\e_float</Filter>
+ </ClInclude>
+ <ClInclude Include="..\src\functions\integer\prime_factors.h">
+ <Filter>libs\e_float\src\functions\integer</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <CustomBuildStep Include="..\src\e_float\gmp\e_float_gmp_protos.h">
+ <Filter>libs\e_float\src\e_float\gmp</Filter>
+ </CustomBuildStep>
+ <CustomBuildStep Include="..\src\e_float\mpfr\e_float_mpfr_protos.h">
+ <Filter>libs\e_float\src\e_float\mpfr</Filter>
+ </CustomBuildStep>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="MakefileFiles.gmk">
+ <Filter>libs\e_float\build</Filter>
+ </None>
+ <None Include="..\license\ACM_e_float_boost_license.pdf">
+ <Filter>libs\e_float\licence</Filter>
+ </None>
+ <None Include="..\license\LICENSE_1_0.pdf">
+ <Filter>libs\e_float\licence</Filter>
+ </None>
+ <None Include="..\license\LICENSE_1_0.txt">
+ <Filter>libs\e_float\licence</Filter>
+ </None>
+ <None Include="..\..\..\doc\e_float_manual.pdf">
+ <Filter>doc</Filter>
+ </None>
+ <None Include="..\..\..\doc\e_float_poster.pdf">
+ <Filter>doc</Filter>
+ </None>
+ <None Include="..\..\..\doc\e_float_poster_courier.pdf">
+ <Filter>doc</Filter>
+ </None>
+ <None Include="Makefile.gmk">
+ <Filter>libs\e_float\build</Filter>
+ </None>
+ </ItemGroup>
+</Project>
\ No newline at end of file

Added: sandbox/e_float/libs/e_float/build/e_float_vs2010.sln
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/build/e_float_vs2010.sln 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,49 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "e_float", "e_float.vcxproj", "{79DD124E-E120-40F3-B2F1-127419BDC295}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ debug-efx|Win32 = debug-efx|Win32
+ debug-efx|x64 = debug-efx|x64
+ debug-gmp|Win32 = debug-gmp|Win32
+ debug-gmp|x64 = debug-gmp|x64
+ debug-mpfr|Win32 = debug-mpfr|Win32
+ debug-mpfr|x64 = debug-mpfr|x64
+ release-efx|Win32 = release-efx|Win32
+ release-efx|x64 = release-efx|x64
+ release-gmp|Win32 = release-gmp|Win32
+ release-gmp|x64 = release-gmp|x64
+ release-mpfr|Win32 = release-mpfr|Win32
+ release-mpfr|x64 = release-mpfr|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-efx|Win32.ActiveCfg = debug-efx|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-efx|Win32.Build.0 = debug-efx|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-efx|x64.ActiveCfg = debug-efx|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-efx|x64.Build.0 = debug-efx|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-gmp|Win32.ActiveCfg = debug-gmp|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-gmp|Win32.Build.0 = debug-gmp|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-gmp|x64.ActiveCfg = debug-gmp|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-gmp|x64.Build.0 = debug-gmp|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-mpfr|Win32.ActiveCfg = debug-mpfr|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-mpfr|Win32.Build.0 = debug-mpfr|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-mpfr|x64.ActiveCfg = debug-mpfr|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.debug-mpfr|x64.Build.0 = debug-mpfr|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-efx|Win32.ActiveCfg = release-efx|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-efx|Win32.Build.0 = release-efx|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-efx|x64.ActiveCfg = release-efx|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-efx|x64.Build.0 = release-efx|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-gmp|Win32.ActiveCfg = release-gmp|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-gmp|Win32.Build.0 = release-gmp|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-gmp|x64.ActiveCfg = release-gmp|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-gmp|x64.Build.0 = release-gmp|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-mpfr|Win32.ActiveCfg = release-mpfr|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-mpfr|Win32.Build.0 = release-mpfr|Win32
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-mpfr|x64.ActiveCfg = release-mpfr|x64
+ {79DD124E-E120-40F3-B2F1-127419BDC295}.release-mpfr|x64.Build.0 = release-mpfr|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal

Added: sandbox/e_float/libs/e_float/license/LICENSE_1_0.txt
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/license/LICENSE_1_0.txt 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,23 @@
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.

Added: sandbox/e_float/libs/e_float/src/e_float/e_float.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/e_float/e_float.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,27 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float.hpp>
+#include "../utility/util_lexical_cast.h"
+
+const e_float& ef::value_nan(void) { static const e_float val = e_float().my_value_nan(); return val; }
+const e_float& ef::value_inf(void) { static const e_float val = e_float().my_value_inf(); return val; }
+const e_float& ef::value_max(void) { static const e_float val = e_float().my_value_max(); return val; }
+const e_float& ef::value_min(void) { static const e_float val = e_float().my_value_min(); return val; }
+
+const e_float& ef::value_eps(void)
+{
+ static const e_float val("1E-" + Util::lexical_cast(std::numeric_limits<e_float>::digits10 - 1));
+ return val;
+}
+
+const e_float& ef::zero(void) { static const e_float val(0u); return val; }
+const e_float& ef::one (void) { static const e_float val(1u); return val; }
+const e_float& ef::half(void) { static const e_float val("0.5"); return val; }

Added: sandbox/e_float/libs/e_float/src/e_float/e_float_base.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/e_float/e_float_base.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,63 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float.hpp>
+#include "../utility/util_lexical_cast.h"
+
+std::ostream& operator<<(std::ostream& os, const e_float_base& f)
+{
+ std::string str;
+ f.wr_string(str, os);
+ return (os << str);
+}
+
+std::istream& operator>>(std::istream& is, e_float_base& f)
+{
+ std::string str;
+ static_cast<void>(is >> str);
+ const bool b_read = f.rd_string(str.c_str());
+ static_cast<void>(b_read);
+ return is;
+}
+
+const std::string::size_type& e_float_base::width_of_exponent_field(void)
+{
+ static const std::string::size_type width_of_e_n64 =
+ Util::lexical_cast((std::numeric_limits<INT64>::max)()).length();
+
+ static const std::string::size_type width_of_e_long =
+ Util::lexical_cast((std::numeric_limits<long>::max)()).length();
+
+ static const std::string::size_type width_of_e =
+ (std::max)(width_of_e_n64, width_of_e_long);
+
+ return width_of_e;
+}
+
+e_float e_float_base::my_cbrt (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_rootn (const e_float&, const UINT32) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_exp (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_log (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_sin (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_cos (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_tan (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_asin (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_acos (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_atan (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_sinh (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_cosh (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_tanh (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_asinh (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_acosh (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_atanh (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_gamma (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_riemann_zeta (const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_cyl_bessel_jn(const INT32, const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }
+e_float e_float_base::my_cyl_bessel_yn(const INT32, const e_float&) { return std::numeric_limits<e_float>::quiet_NaN(); }

Added: sandbox/e_float/libs/e_float/src/e_float/efx/e_float_efx.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/e_float/efx/e_float_efx.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,1844 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+// *****************************************************************************
+// Filename : e_float_efx.cpp
+//
+// Project : Multiple precision mathematics
+//
+// Date : 28.02.2004
+//
+// Description : Extended precision floating point data type, efx::e_float.
+//
+// *****************************************************************************
+
+#include <iomanip>
+#include <algorithm>
+#include <numeric>
+#include <cmath>
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+
+#include "../../utility/util_lexical_cast.h"
+#include "../../utility/util_numeric_cast.h"
+#include "../../utility/util_noncopyable.h"
+
+namespace
+{
+ // Emphasize: This template class can be used with native
+ // floating-point types like float, double and long double.
+ template<typename native_float_type>
+ class native_float_parts : private Util::noncopyable
+ {
+ public:
+ native_float_parts(const native_float_type f) : u(0uLL), e(0) { make_parts(f); }
+
+ const UINT64& get_mantissa(void) const { return u; }
+ const int& get_exponent(void) const { return e; }
+
+ private:
+ UINT64 u;
+ int e;
+
+ native_float_parts();
+
+ void make_parts(const native_float_type f)
+ {
+ // Get the fraction and base-2 exponent.
+ native_float_type man = ::frexp(f, &e);
+
+ // Express the fractional part as a UINT64.
+ UINT32 n2 = 0u;
+
+ for(UINT32 i = static_cast<UINT32>(0u); i < static_cast<UINT32>(std::numeric_limits<native_float_type>::digits); i++)
+ {
+ // Extract the mantissa of the floating-point type in base-2
+ // (yes, one bit at a time) and store it in a UINT64.
+ // TBD: Is this really portable?
+ man *= 2;
+
+ n2 = static_cast<UINT32>(man);
+ man -= static_cast<native_float_type>(n2);
+
+ if(n2 != static_cast<UINT32>(0u))
+ {
+ u |= 1u;
+ }
+
+ if(i < static_cast<UINT32>(std::numeric_limits<native_float_type>::digits - 1))
+ {
+ u <<= 1u;
+ }
+ }
+
+ // Ensure that the value is normalized and adjust the exponent.
+ u |= static_cast<UINT64>(static_cast<UINT64>(1uLL) << (std::numeric_limits<native_float_type>::digits - 1));
+ e -= 1;
+ }
+ };
+}
+
+efx::e_float::e_float(const double d) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (false),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+{
+ // Create an e_float from a double. Yes, this ctor does
+ // maintain the full precision of double.
+
+ if(!ef::isfinite(d))
+ {
+ operator=(ef::isnan(d) ? my_value_nan() : my_value_inf());
+ }
+ else
+ {
+ const bool b_neg = ef::isneg(d);
+
+ const native_float_parts<double> db((!b_neg) ? d : -d);
+
+ // Create an e_float from the fractional part of the
+ // mantissa expressed as a UINT64.
+ from_uint64(db.get_mantissa());
+
+ // Scale the UINT64 representation to the fractional part of
+ // the double and multiply with the base-2 exponent.
+ const int p2 = db.get_exponent() - (std::numeric_limits<double>::digits - 1);
+ operator*=(ef::pow2(static_cast<INT64>(p2)));
+
+ neg = b_neg;
+ }
+}
+
+efx::e_float::e_float(const char* const s) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (false),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+{
+ if(!rd_string(s))
+ {
+ std::fill(data.begin(), data.end(), static_cast<UINT32>(0u));
+ exp = static_cast<INT64>(0);
+ neg = false;
+ fpclass = ef_NaN;
+ }
+}
+
+efx::e_float::e_float(const std::string& str) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (false),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+{
+ if(!rd_string(str.c_str()))
+ {
+ std::fill(data.begin(), data.end(), static_cast<UINT32>(0u));
+ exp = static_cast<INT64>(0);
+ neg = false;
+ fpclass = ef_NaN;
+ }
+}
+
+efx::e_float::e_float(const double mantissa,
+ const INT64 exponent) : data (),
+ exp (static_cast<INT64>(0)),
+ neg (false),
+ fpclass (ef_finite),
+ prec_elem(ef_elem_number)
+{
+ // Create an e_float from mantissa and exponent. No, this ctor
+ // does not maintain the full precision of double.
+
+ const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits<double>::min)() * 2.0));
+
+ if(mantissa_is_iszero)
+ {
+ if(exponent == static_cast<INT64>(0))
+ {
+ operator=(ef::one());
+ }
+ else
+ {
+ operator=(ef::zero());
+ }
+ }
+ else
+ {
+ const bool b_neg = (mantissa < 0.0);
+
+ neg = b_neg;
+
+ double d = ((!b_neg) ? mantissa : -mantissa);
+ INT64 e = exponent;
+
+ while(d > 1.0)
+ {
+ d /= 10.0;
+ ++e;
+ }
+
+ while(d < 1.0)
+ {
+ d *= 10.0;
+ --e;
+ }
+
+ INT32 shift = static_cast<INT32>(e % static_cast<INT32>(ef_elem_digits10));
+
+ while(static_cast<INT32>(shift-- % ef_elem_digits10) != static_cast<INT32>(0))
+ {
+ d *= 10.0;
+ --e;
+ }
+
+ exp = e;
+ neg = b_neg;
+
+ std::fill(data.begin(), data.end(), static_cast<UINT32>(0u));
+
+ static const INT32 digit_ratio = static_cast<INT32>(static_cast<INT32>(std::numeric_limits<double>::digits10) / static_cast<INT32>(ef_elem_digits10));
+ static const INT32 digit_loops = static_cast<INT32>(digit_ratio + static_cast<INT32>(2));
+
+ for(INT32 i = static_cast<INT32>(0); i < digit_loops; i++)
+ {
+ UINT32 n = static_cast<UINT32>(static_cast<UINT64>(d));
+ data[i] = static_cast<UINT32>(n);
+ d -= static_cast<double>(n);
+ d *= static_cast<double>(ef_elem_mask);
+ }
+ }
+}
+
+void efx::e_float::from_uint32(const UINT32 u)
+{
+ std::fill(data.begin(), data.end(), static_cast<UINT32>(0u));
+
+ if(u != static_cast<UINT32>(0u))
+ {
+ const UINT32 data_med = static_cast<UINT32>(u / static_cast<UINT32>(ef_elem_mask));
+ const UINT32 data_lo = static_cast<UINT32>(u % static_cast<UINT32>(ef_elem_mask));
+
+ if(data_med != static_cast<UINT32>(0u))
+ {
+ data[0] = data_med;
+ data[1] = data_lo;
+ exp = static_cast<INT64>(ef_elem_digits10);
+ }
+ else
+ {
+ data[0] = data_lo;
+ exp = static_cast<INT64>(0);
+ }
+ }
+ else
+ {
+ exp = static_cast<INT64>(0);
+ }
+}
+
+void efx::e_float::from_uint64(const UINT64 u)
+{
+ std::fill(data.begin(), data.end(), static_cast<UINT32>(0u));
+
+ if(u != static_cast<UINT64>(0u))
+ {
+ const UINT32 data_hi = static_cast<UINT32>(static_cast<UINT64>(u / static_cast<UINT32>(ef_elem_mask)) / static_cast<UINT32>(ef_elem_mask));
+ const UINT32 data_med = static_cast<UINT32>( (u / static_cast<UINT32>(ef_elem_mask)) % static_cast<UINT32>(ef_elem_mask));
+ const UINT32 data_lo = static_cast<UINT32>( u % static_cast<UINT32>(ef_elem_mask));
+
+ if(data_hi != static_cast<UINT32>(0u))
+ {
+ data[0] = data_hi;
+ data[1] = data_med;
+ data[2] = data_lo;
+ exp = static_cast<INT64>(2 * static_cast<INT32>(ef_elem_digits10));
+ }
+ else if(data_med != static_cast<UINT32>(0u))
+ {
+ data[0] = data_med;
+ data[1] = data_lo;
+ exp = static_cast<INT64>(ef_elem_digits10);
+ }
+ else
+ {
+ data[0] = data_lo;
+ exp = static_cast<INT64>(0);
+ }
+ }
+ else
+ {
+ exp = static_cast<INT64>(0);
+ }
+}
+
+void efx::e_float::mul_loop_uv(const UINT32* const u, const UINT32* const v, UINT32* const w, const INT32 p)
+{
+ UINT64 carry = static_cast<UINT64>(0u);
+
+ for(INT32 j = static_cast<INT32>(p - 1u); j >= static_cast<INT32>(0); j--)
+ {
+ UINT64 sum = carry;
+
+ for(INT32 i = j; i >= static_cast<INT32>(0); i--)
+ {
+ sum += static_cast<UINT64>(u[i] * static_cast<UINT64>(v[j - i]));
+ }
+
+ w[j + 1] = static_cast<UINT32>(sum % static_cast<UINT32>(ef_elem_mask));
+ carry = static_cast<UINT64>(sum / static_cast<UINT32>(ef_elem_mask));
+ }
+
+ w[0] = static_cast<UINT32>(carry);
+}
+
+UINT32 efx::e_float::mul_loop_n(UINT32* const u, UINT32 n, const INT32 p)
+{
+ UINT64 carry = static_cast<UINT64>(0u);
+
+ // Multiplication loop.
+ for(INT32 j = p - 1; j >= static_cast<INT32>(0); j--)
+ {
+ const UINT64 t = static_cast<UINT64>(carry + static_cast<UINT64>(u[j] * static_cast<UINT64>(n)));
+ carry = static_cast<UINT64>(t / static_cast<UINT32>(e_float::ef_elem_mask));
+ u[j] = static_cast<UINT32>(t - static_cast<UINT64>(static_cast<UINT32>(e_float::ef_elem_mask) * static_cast<UINT64>(carry)));
+ }
+
+ return static_cast<UINT32>(carry);
+}
+
+UINT32 efx::e_float::div_loop_n(UINT32* const u, UINT32 n, const INT32 p)
+{
+ UINT64 prev = static_cast<UINT64>(0u);
+
+ for(INT32 j = static_cast<INT32>(0); j < p; j++)
+ {
+ const UINT64 t = static_cast<UINT64>(u[j] + static_cast<UINT64>(prev * static_cast<UINT32>(e_float::ef_elem_mask)));
+ u[j] = static_cast<UINT32>(t / n);
+ prev = static_cast<UINT64>(t - static_cast<UINT64>(n * static_cast<UINT64>(u[j])));
+ }
+
+ return static_cast<UINT32>(prev);
+}
+
+void efx::e_float::precision(const INT32 prec_digits)
+{
+ const INT32 elems_x = static_cast<INT32>( static_cast<INT32>( (prec_digits + (ef_elem_digits10 / 2)) / ef_elem_digits10)
+ + static_cast<INT32>(((prec_digits % ef_elem_digits10) != 0) ? 1 : 0));
+
+ const INT32 elems = ((elems_x < static_cast<INT32>(2)) ? static_cast<INT32>(2) : elems_x);
+
+ prec_elem = ((elems > ef_elem_number) ? ef_elem_number : elems);
+}
+
+efx::e_float& efx::e_float::operator=(const e_float& v)
+{
+ data = v.data;
+ exp = v.exp;
+ neg = v.neg;
+ fpclass = v.fpclass;
+ prec_elem = v.prec_elem;
+
+ return *this;
+}
+
+efx::e_float& efx::e_float::operator+=(const e_float& v)
+{
+ if(isnan())
+ {
+ return *this;
+ }
+
+ if(isinf())
+ {
+ if(v.isinf() && (isneg() != v.isneg()))
+ {
+ *this = std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ return *this;
+ }
+
+ if(iszero())
+ {
+ return operator=(v);
+ }
+
+ // Get the offset for the add/sub operation.
+ static const INT64 max_delta_exp = static_cast<INT64>((ef_elem_number - 1) * ef_elem_digits10);
+
+ const INT64 ofs_exp = exp - v.exp;
+
+ // Check if the operation is out of range, requiring special handling.
+ if(v.iszero() || (ofs_exp > max_delta_exp))
+ {
+ // Result is *this unchanged since v is negligible compared to *this.
+ return *this;
+ }
+ else if(ofs_exp < -max_delta_exp)
+ {
+ // Result is *this = v since *this is negligible compared to v.
+ return operator=(v);
+ }
+
+ // Do the add/sub operation.
+
+ array_type::iterator p_u = data.begin();
+ array_type::const_iterator p_v = v.data.begin();
+ bool b_copy = false;
+ const INT32 ofs = static_cast<INT32>(static_cast<INT32>(ofs_exp) / ef_elem_digits10);
+ array_type n_data;
+
+ if(neg == v.neg)
+ {
+ // Add v to *this, where the data array of either *this or v
+ // might have to be treated with a positive, negative or zero offset.
+ // The result is stored in *this. The data are added one element
+ // at a time, each element with carry.
+ if(ofs >= static_cast<INT32>(0))
+ {
+ std::copy(v.data.begin(),
+ v.data.end() - static_cast<size_t>(ofs),
+ n_data.begin() + static_cast<size_t>(ofs));
+
+ std::fill(n_data.begin(),
+ n_data.begin() + static_cast<size_t>(ofs),
+ static_cast<UINT32>(0u));
+
+ p_v = n_data.begin();
+ }
+ else
+ {
+ std::copy(data.begin(),
+ data.end() - static_cast<size_t>(-ofs),
+ n_data.begin() + static_cast<size_t>(-ofs));
+
+ std::fill(n_data.begin(),
+ n_data.begin() + static_cast<size_t>(-ofs),
+ static_cast<UINT32>(0u));
+
+ p_u = n_data.begin();
+
+ b_copy = true;
+ }
+
+ // Addition algorithm
+ UINT32 carry = static_cast<UINT32>(0u);
+
+ for(INT32 j = static_cast<INT32>(ef_elem_number - static_cast<INT32>(1)); j >= static_cast<INT32>(0); j--)
+ {
+ UINT32 t = static_cast<UINT32>(static_cast<UINT32>(p_u[j] + p_v[j]) + carry);
+ carry = t / static_cast<UINT32>(ef_elem_mask);
+ p_u[j] = static_cast<UINT32>(t - static_cast<UINT32>(carry * static_cast<UINT32>(ef_elem_mask)));
+ }
+
+ if(b_copy)
+ {
+ data = n_data;
+ exp = v.exp;
+ }
+
+ // There needs to be a carry into the element -1 of the array data
+ if(carry != static_cast<UINT32>(0u))
+ {
+ std::copy_backward(data.begin(),
+ data.end() - static_cast<std::size_t>(1u),
+ data.end());
+
+ data[0] = carry;
+ exp += static_cast<INT64>(ef_elem_digits10);
+ }
+ }
+ else
+ {
+ // Subtract v from *this, where the data array of either *this or v
+ // might have to be treated with a positive, negative or zero offset.
+ if((ofs > static_cast<INT32>(0))
+ || ( (ofs == static_cast<INT32>(0))
+ && (cmp_data(v.data) > static_cast<INT32>(0)))
+ )
+ {
+ // In this case, |u| > |v| and ofs is positive.
+ // Copy the data of v, shifted down to a lower value
+ // into the data array m_n. Set the operand pointer p_v
+ // to point to the copied, shifted data m_n.
+ std::copy(v.data.begin(),
+ v.data.end() - static_cast<size_t>(ofs),
+ n_data.begin() + static_cast<size_t>(ofs));
+
+ std::fill(n_data.begin(),
+ n_data.begin() + static_cast<size_t>(ofs),
+ static_cast<UINT32>(0u));
+
+ p_v = n_data.begin();
+ }
+ else
+ {
+ if(ofs != static_cast<INT32>(0))
+ {
+ // In this case, |u| < |v| and ofs is negative.
+ // Shift the data of u down to a lower value.
+ std::copy_backward(data.begin(),
+ data.end() - static_cast<size_t>(-ofs),
+ data.end());
+
+ std::fill(data.begin(),
+ data.begin() + static_cast<size_t>(-ofs),
+ static_cast<UINT32>(0u));
+ }
+
+ // Copy the data of v into the data array n_data.
+ // Set the u-pointer p_u to point to m_n and the
+ // operand pointer p_v to point to the shifted
+ // data m_data.
+ n_data = v.data;
+ p_u = n_data.begin();
+ p_v = data.begin();
+ b_copy = true;
+ }
+
+ INT32 j;
+
+ // Subtraction algorithm
+ INT32 borrow = static_cast<INT32>(0);
+
+ for(j = static_cast<INT32>(ef_elem_number - static_cast<INT32>(1)); j >= static_cast<INT32>(0); j--)
+ {
+ INT32 t = static_cast<INT32>(static_cast<INT32>( static_cast<INT32>(p_u[j])
+ - static_cast<INT32>(p_v[j])) - borrow);
+
+ // Underflow? Borrow?
+ if(t < static_cast<INT32>(0))
+ {
+ // Yes, underflow and borrow
+ t += static_cast<INT32>(ef_elem_mask);
+ borrow = static_cast<INT32>(1);
+ }
+ else
+ {
+ borrow = static_cast<INT32>(0);
+ }
+
+ p_u[j] = static_cast<UINT32>(static_cast<UINT32>(t) % static_cast<UINT32>(ef_elem_mask));
+ }
+
+ if(b_copy)
+ {
+ data = n_data;
+ exp = v.exp;
+ neg = v.neg;
+ }
+
+ // Is it necessary to justify the data?
+ const array_type::const_iterator first_nonzero_elem = std::find_if(data.begin(),
+ data.end(),
+ data_elem_is_nonzero_predicate);
+
+ if(first_nonzero_elem != data.begin())
+ {
+ if(first_nonzero_elem == data.end())
+ {
+ // This result of the subtraction is exactly zero.
+ // Reset the sign and the exponent.
+ neg = false;
+ exp = static_cast<INT64>(0);
+ }
+ else
+ {
+ // Justify the data
+ const std::size_t sj = static_cast<std::size_t>(std::distance<array_type::const_iterator>(data.begin(), first_nonzero_elem));
+
+ std::copy(data.begin() + static_cast<std::size_t>(sj),
+ data.end(),
+ data.begin());
+
+ std::fill(data.end() - sj,
+ data.end(),
+ static_cast<UINT32>(0u));
+
+ exp -= static_cast<INT64>(sj * static_cast<std::size_t>(ef_elem_digits10));
+ }
+ }
+ }
+
+ if( (exp >= std::numeric_limits<e_float>::max_exponent10)
+ && (ef::fabs(*this) > (std::numeric_limits<e_float>::max)())
+ )
+ {
+ const bool b_result_is_neg = neg;
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+ }
+
+ return *this;
+}
+
+efx::e_float& efx::e_float::operator-=(const e_float& v)
+{
+ // Use *this - v = -(-*this + v).
+ return (negate().operator+=(v)).negate();
+}
+
+efx::e_float& efx::e_float::operator*=(const e_float& v)
+{
+ // Evaluate the sign of the result.
+ const bool b_result_is_neg = (neg != v.neg);
+
+ // Artificially set the sign of the result to be positive.
+ neg = false;
+
+ // Handle special cases like zero, inf and NaN.
+ const bool b_u_is_inf = isinf();
+ const bool b_v_is_inf = v.isinf();
+ const bool b_u_is_zero = iszero();
+ const bool b_v_is_zero = v.iszero();
+
+ if( (isnan() || v.isnan())
+ || (b_u_is_inf && b_v_is_zero)
+ || (b_v_is_inf && b_u_is_zero)
+ )
+ {
+ return (*this = std::numeric_limits<e_float>::quiet_NaN());
+ }
+
+ if(b_u_is_inf || b_v_is_inf)
+ {
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ if(b_u_is_zero || b_v_is_zero)
+ {
+ return (*this = ef::zero());
+ }
+
+ // Check for overflow or underflow.
+ const bool u_exp_is_neg = (exp < static_cast<INT64>(0));
+ const bool v_exp_is_neg = (v.exp < static_cast<INT64>(0));
+
+ if(u_exp_is_neg == v_exp_is_neg)
+ {
+ // Get the unsigned base-10 exponents of *this and v and...
+ const INT64 u_exp = ((!u_exp_is_neg) ? exp : static_cast<INT64>( -exp));
+ const INT64 v_exp = ((!v_exp_is_neg) ? v.exp : static_cast<INT64>(-v.exp));
+
+ // Check the range of the upcoming multiplication.
+ const bool b_result_is_out_of_range = (v_exp >= static_cast<INT64>(ef_max_exp10 - u_exp));
+
+ if(b_result_is_out_of_range)
+ {
+ if(u_exp_is_neg)
+ {
+ *this = ef::zero();
+ }
+ else
+ {
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+ }
+
+ return *this;
+ }
+ }
+
+ // Set the exponent of the result.
+ exp += v.exp;
+
+ const std::size_t prec_mul = (std::min)(prec_elem, v.prec_elem);
+
+ std::tr1::array<UINT32, static_cast<std::size_t>(ef_elem_number + 1)> w = {{ 0u }};
+
+ mul_loop_uv(data.data(), v.data.data(), w.data(), static_cast<INT32>(prec_mul));
+
+ // Copy the multiplication data into the result.
+ // Shift the result and adjust the exponent if necessary.
+ if(w[static_cast<std::size_t>(0u)] != static_cast<UINT32>(0u))
+ {
+ exp += static_cast<INT64>(ef_elem_digits10);
+
+ std::copy(w.begin(), w.end() - 1u, data.begin());
+ }
+ else
+ {
+ std::copy(w.begin() + 1u, w.end(), data.begin());
+ }
+
+ // Set the sign of the result.
+ neg = b_result_is_neg;
+
+ return *this;
+}
+
+efx::e_float& efx::e_float::operator/=(const e_float& v)
+{
+ const bool u_and_v_are_finite_and_identical = ( isfinite()
+ && (fpclass == v.fpclass)
+ && (exp == v.exp)
+ && (cmp_data(v.data) == static_cast<INT32>(0)));
+
+ if(u_and_v_are_finite_and_identical)
+ {
+ return (*this = ((neg == v.neg) ? ef::one() : ef::one_minus()));
+ }
+ else
+ {
+ return operator*=(e_float(v).calculate_inv());
+ }
+}
+
+efx::e_float& efx::e_float::mul_by_int(const INT32 n)
+{
+ // Multiply *this with a constant signed integer.
+ const bool b_n_is_neg = (n < static_cast<INT32>(0));
+
+ // Evaluate the sign of the result.
+ const bool b_result_is_neg = (neg != b_n_is_neg);
+
+ // Artificially set the sign of the result to be positive.
+ neg = false;
+
+ const UINT32 nn = ((!b_n_is_neg) ? n : static_cast<UINT32>(-n));
+
+ // Handle special cases like zero, inf and NaN.
+ const bool b_u_is_inf = isinf();
+ const bool b_n_is_zero = (n == static_cast<INT32>(0));
+
+ if(isnan() || (b_u_is_inf && b_n_is_zero))
+ {
+ return (*this = std::numeric_limits<e_float>::quiet_NaN());
+ }
+
+ if(b_u_is_inf)
+ {
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ if(iszero() || b_n_is_zero)
+ {
+ // Multiplication by zero.
+ return (*this = ef::zero());
+ }
+
+ if(nn >= static_cast<UINT32>(ef_elem_mask))
+ {
+ return operator*=(e_float(n));
+ }
+
+ if(nn == static_cast<UINT32>(1u))
+ {
+ neg = b_result_is_neg;
+
+ return *this;
+ }
+
+ // Set up the multiplication loop.
+ const INT32 jmax = static_cast<INT32>(data.rend() - std::find_if(data.rbegin(),
+ data.rend(),
+ data_elem_is_nonzero_predicate));
+
+ const INT32 jm1 = static_cast<INT32>(jmax + static_cast<INT32>(1));
+ const INT32 prec = static_cast<INT32>(prec_elem);
+ const INT32 jm = (std::min)(jm1, prec);
+
+ const UINT32 carry = mul_loop_n(data.data(), nn, jm);
+
+ // Handle the carry and adjust the exponent.
+ if(carry != static_cast<UINT32>(0u))
+ {
+ exp += static_cast<INT64>(ef_elem_digits10);
+
+ // Shift result of the multiplication one element to the right.
+ std::copy_backward(data.begin(),
+ data.begin() + static_cast<std::size_t>(jm - 1),
+ data.begin() + static_cast<std::size_t>(jm));
+
+ data.front() = static_cast<UINT32>(carry);
+ }
+
+ if( (exp >= std::numeric_limits<e_float>::max_exponent10)
+ && (*this > (std::numeric_limits<e_float>::max)())
+ )
+ {
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ // Set the sign.
+ neg = b_result_is_neg;
+
+ return *this;
+}
+
+efx::e_float& efx::e_float::div_by_int(const INT32 n)
+{
+ // Divide *this by a constant signed integer.
+ const bool b_n_is_neg = (n < static_cast<INT32>(0));
+
+ // Evaluate the sign of the result.
+ const bool b_neg = (neg != b_n_is_neg);
+
+ // Artificially set the sign of the result to be positive.
+ neg = false;
+
+ const UINT32 nn = ((!b_n_is_neg) ? static_cast<UINT32>( n)
+ : static_cast<UINT32>(-n));
+
+ // Handle special cases like zero, inf and NaN.
+ if(isnan())
+ {
+ return *this;
+ }
+
+ if(isinf())
+ {
+ *this = ((!b_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ if(n == static_cast<INT32>(0))
+ {
+ // Divide by 0.
+ if(iszero())
+ {
+ return (*this = std::numeric_limits<e_float>::quiet_NaN());
+ }
+ else
+ {
+ *this = ((!isneg()) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+ }
+
+ if(iszero())
+ {
+ return *this;
+ }
+
+ if(nn >= static_cast<UINT32>(ef_elem_mask))
+ {
+ return operator/=(e_float(n));
+ }
+
+ if(nn > static_cast<UINT32>(1u))
+ {
+ // Division loop.
+ const INT32 jm = static_cast<INT32>(prec_elem);
+
+ const UINT32 prev = div_loop_n(data.data(), nn, jm);
+
+ // Determine if one leading zero is in the result data.
+ if(data[0] == static_cast<UINT32>(0u))
+ {
+ // Adjust the exponent
+ exp -= static_cast<INT64>(ef_elem_digits10);
+
+ // Shift result of the division one element to the left.
+ std::copy(data.begin() + static_cast<std::size_t>(1u),
+ data.begin() + static_cast<std::size_t>(jm),
+ data.begin());
+
+ data[static_cast<std::size_t>(jm - 1)] = static_cast<UINT32>(static_cast<UINT64>(prev * static_cast<UINT64>(ef_elem_mask)) / nn);
+ }
+ }
+
+ // Check for underflow.
+ if( (exp <= std::numeric_limits<e_float>::min_exponent10)
+ && (*this < (std::numeric_limits<e_float>::min)())
+ )
+ {
+ return (*this = ef::zero());
+ }
+
+ // Set the sign of the result.
+ neg = b_neg;
+
+ return *this;
+}
+
+efx::e_float& efx::e_float::calculate_inv(void)
+{
+ // Compute the inverse of *this.
+ const bool b_neg = neg;
+
+ neg = false;
+
+ // Handle special cases like zero, inf and NaN.
+ if(iszero())
+ {
+ *this = ((!b_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ if(isnan())
+ {
+ return *this;
+ }
+
+ if(isinf())
+ {
+ return (*this = ef::zero());
+ }
+
+ if(isone())
+ {
+ *this = ((!b_neg) ? ef::one() : -ef::one());
+
+ return *this;
+ }
+
+ // Save the original *this.
+ e_float x(*this);
+
+ // Generate the initial estimate using division.
+ // Extract the mantissa and exponent for a "manual"
+ // computation of the estimate.
+ double dd;
+ INT64 ne;
+ x.extract_parts(dd, ne);
+
+ // Do the inverse estimate using double precision estimates of mantissa and exponent.
+ operator=(e_float(1.0 / dd, -ne));
+
+ // Compute the inverse of *this. Quadratically convergent Newton-Raphson iteration
+ // is used. During the iterative steps, the precision of the calculation is limited
+ // to the minimum required in order to minimize the run-time.
+
+ static const INT32 double_digits10_minus_one = static_cast<INT32>(static_cast<INT32>(std::numeric_limits<double>::digits10) - static_cast<INT32>(1));
+
+ for(INT32 digits = double_digits10_minus_one; digits <= static_cast<INT32>(ef::tol()); digits *= static_cast<INT32>(2))
+ {
+ // Adjust precision of the terms.
+ precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+ x.precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+
+ // Next iteration.
+ operator=(*this * (ef::two() - (*this * x)));
+ }
+
+ neg = b_neg;
+
+ prec_elem = ef_elem_number;
+
+ return *this;
+}
+
+efx::e_float& efx::e_float::calculate_sqrt(void)
+{
+ // Compute the square root of *this.
+
+ if(isneg() || (!isfinite()))
+ {
+ return (*this = std::numeric_limits<e_float>::quiet_NaN());
+ }
+
+ if(iszero() || isone())
+ {
+ return *this;
+ }
+
+ // Save the original *this.
+ e_float x(*this);
+
+ // Generate the initial estimate using division.
+ // Extract the mantissa and exponent for a "manual"
+ // computation of the estimate.
+ double dd;
+ INT64 ne;
+ extract_parts(dd, ne);
+
+ // Force the exponent to be an even multiple of two.
+ if((ne % static_cast<INT64>(2)) != static_cast<INT64>(0))
+ {
+ ++ne;
+ dd /= 10.0;
+ }
+
+ // Setup the iteration.
+ // Estimate the square root using simple manipulations.
+ const double sqd = ::sqrt(dd);
+
+ *this = e_float(sqd, static_cast<INT64>(ne / static_cast<INT64>(2)));
+
+ // Estimate 1.0 / (2.0 * x0) using simple manipulations.
+ e_float vi(0.5 / sqd, static_cast<INT64>(-ne / static_cast<INT64>(2)));
+
+ // Compute the square root of x. Coupled Newton iteration
+ // as described in "Pi Unleashed" is used. During the
+ // iterative steps, the precision of the calculation is
+ // limited to the minimum required in order to minimize
+ // the run-time.
+ //
+ // Book references:
+ // http://www.jjj.de/pibook/pibook.html
+ // http://www.amazon.com/exec/obidos/tg/detail/-/3540665722/qid=1035535482/sr=8-7/ref=sr_8_7/104-3357872-6059916?v=glance&n=507846
+
+ static const INT32 double_digits10_minus_one = static_cast<INT32>(static_cast<INT32>(std::numeric_limits<double>::digits10) - static_cast<INT32>(1));
+
+ for(INT32 digits = double_digits10_minus_one; digits <= static_cast<INT32>(ef::tol()); digits *= static_cast<INT32>(2))
+ {
+ // Adjust precision of the terms.
+ precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+ vi.precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+
+ // Next iteration of vi
+ vi += vi * (-((*this * vi) * static_cast<INT32>(2)) + ef::one());
+
+ // Next iteration of *this
+ *this += vi * (-(*this * *this) + x);
+ }
+
+ prec_elem = ef_elem_number;
+
+ return *this;
+}
+
+INT32 efx::e_float::cmp_data(const array_type& vd) const
+{
+ // Compare the data of *this (u) with those of v.
+ // Return +1 for u > v
+ // 0 for u = v
+ // -1 for u < v
+ return ((data != vd) ? ((data > vd) ? static_cast<INT32>(1) : static_cast<INT32>(-1))
+ : static_cast<INT32>(0));
+}
+
+INT32 efx::e_float::cmp(const e_float& v) const
+{
+ // Compare v with *this.
+ // Return +1 for *this > v
+ // 0 for *this = v
+ // -1 for *this < v
+
+ if(iszero())
+ {
+ // The value of *this is zero and v is either zero or non-zero.
+ return (v.iszero() ? static_cast<INT32>(0)
+ : (v.isneg() ? static_cast<INT32>(1) : static_cast<INT32>(-1)));
+ }
+ else if(v.iszero())
+ {
+ // The value of v is zero and *this is non-zero.
+ return (isneg() ? static_cast<INT32>(-1) : static_cast<INT32>(1));
+ }
+ else
+ {
+ // Both *this and v are non-zero.
+
+ if(neg != v.neg)
+ {
+ // The signs are different.
+ return (neg ? static_cast<INT32>(-1) : static_cast<INT32>(1));
+ }
+ else if(exp != v.exp)
+ {
+ // The signs are the same and the exponents are different.
+ const INT32 val_cmp_exp = ((exp < v.exp) ? static_cast<INT32>(1) : static_cast<INT32>(-1));
+
+ return (neg ? val_cmp_exp : static_cast<INT32>(-val_cmp_exp));
+ }
+ else
+ {
+ // The signs are the same and the exponents are the same.
+ // Compare the data.
+ const INT32 val_cmp_data = cmp_data(v.data);
+
+ return (neg ? static_cast<INT32>(-val_cmp_data) : val_cmp_data);
+ }
+ }
+}
+
+bool efx::e_float::iszero(void) const
+{
+ return ( isfinite()
+ && ( (data[0u] == static_cast<UINT32>(0u))
+ || (exp < std::numeric_limits<e_float>::min_exponent10)));
+}
+
+bool efx::e_float::isone(void) const
+{
+ // Check if the value of *this is identically 1 or very close to 1.
+
+ if( (!neg)
+ && isfinite()
+ && (data[0u] == static_cast<UINT64>(1u))
+ && (exp == static_cast<INT64>(0))
+ )
+ {
+ const array_type::const_iterator pos_first_nonzero_elem =
+ std::find_if(data.begin(),
+ data.end(),
+ data_elem_is_nonzero_predicate);
+
+ return (pos_first_nonzero_elem == data.end());
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool efx::e_float::isint(void) const
+{
+ // Check if the value of *this is pure integer.
+ if(!isfinite())
+ {
+ return false;
+ }
+
+ if(iszero())
+ {
+ return true;
+ }
+
+ if(exp < static_cast<INT64>(0))
+ {
+ // The absolute value of the number is smaller than 1.
+ // It can not be an integer.
+ return false;
+ }
+
+ const array_type::size_type offset_decimal_part = static_cast<array_type::size_type>(exp / ef_elem_digits10) + 1u;
+
+ if(offset_decimal_part >= data.size())
+ {
+ // The number is too large to resolve the integer part.
+ // It considered to be a pure integer.
+ return true;
+ }
+
+ array_type::const_iterator pos_first_nonzero_elem = std::find_if(data.begin() + offset_decimal_part,
+ data.end(),
+ data_elem_is_nonzero_predicate);
+
+ return (pos_first_nonzero_elem == data.end());
+}
+
+efx::e_float& efx::e_float::operator++(void) { return *this += ef::one(); }
+efx::e_float& efx::e_float::operator--(void) { return *this -= ef::one(); }
+
+void efx::e_float::extract_parts(double& mantissa, INT64& exponent) const
+{
+ // Extract the approximate parts mantissa and base-10 exponent from the input e_float value x.
+
+ // Extracts the mantissa and exponent.
+ exponent = exp;
+
+ UINT32 p10 = static_cast<UINT32>(1u);
+ UINT32 test = data[0u];
+
+ for(;;)
+ {
+ test /= static_cast<UINT32>(10u);
+
+ if(test == static_cast<UINT32>(0u))
+ {
+ break;
+ }
+
+ p10 *= static_cast<UINT32>(10u);
+ ++exponent;
+ }
+
+ static const double d_mask = static_cast<double>(ef_elem_mask);
+
+ mantissa = static_cast<double>(data[0])
+ + (static_cast<double>(data[1]) / d_mask
+ + static_cast<double>(data[2]) / (d_mask * d_mask));
+
+ mantissa /= static_cast<double>(p10);
+
+ if(neg)
+ {
+ mantissa = -mantissa;
+ }
+}
+
+double efx::e_float::extract_double(void) const
+{
+ // Returns the double conversion of a e_float.
+
+ // Check for zero or non-normal e_float.
+ if(iszero())
+ {
+ return 0.0;
+ }
+ else if(!isfinite())
+ {
+ if(isnan())
+ {
+ return std::numeric_limits<double>::quiet_NaN();
+ }
+ else if(isinf())
+ {
+ return ((!neg) ? std::numeric_limits<double>::infinity()
+ : -std::numeric_limits<double>::infinity());
+ }
+ else
+ {
+ return 0.0;
+ }
+ }
+
+ // Check if e_float exceeds the
+ static const e_float dbl_max((std::numeric_limits<double>::max)());
+
+ if(ef::fabs(*this) > dbl_max)
+ {
+ return ((!neg) ? std::numeric_limits<double>::infinity()
+ : -std::numeric_limits<double>::infinity());
+ }
+
+ std::stringstream ss;
+
+ ss << std::setprecision(static_cast<std::streamsize>(std::numeric_limits<double>::digits10 + 3))
+ << std::scientific
+ << *this;
+
+ double d;
+ ss >> d;
+
+ return d;
+}
+
+INT64 efx::e_float::extract_int64(void) const
+{
+ // Computes a 64-bit integer cast of the input e_float value x.
+ // If |x| exceeds MAX_INT64, then this maximum value is returned.
+
+ if(exp < static_cast<INT64>(0))
+ {
+ return static_cast<INT64>(0);
+ }
+
+ const bool b_neg = isneg();
+
+ const e_float xn = ef::fabs(extract_integer_part());
+
+ INT64 val;
+
+ if(xn > ef::int64max())
+ {
+ val = (std::numeric_limits<INT64>::max)();
+ }
+ else
+ {
+ // Extract the data into the int64 value.
+ val = static_cast<INT64>(xn.data[0]);
+
+ for(INT32 i = static_cast<INT32>(1); i <= static_cast<INT32>(static_cast<INT32>(xn.exp) / ef_elem_digits10); i++)
+ {
+ val *= static_cast<INT64>(ef_elem_mask);
+ val += static_cast<INT64>(xn.data[i]);
+ }
+ }
+
+ return ((!b_neg) ? val : static_cast<INT64>(-val));
+}
+
+efx::e_float efx::e_float::extract_integer_part(void) const
+{
+ // Compute the signed integer part of x.
+
+ if(!isfinite())
+ {
+ return *this;
+ }
+
+ if(exp < static_cast<INT64>(0))
+ {
+ // The absolute value of the number is smaller than 1.
+ // Thus the integer part is zero.
+ return ef::zero();
+ }
+ else if(exp >= static_cast<INT64>(std::numeric_limits<e_float>::digits10 - 1))
+ {
+ // The number is too large to resolve the integer part.
+ // Thus it is already a pure integer part.
+ return *this;
+ }
+
+ // Make a local copy.
+ e_float x = *this;
+
+ // Clear out the decimal portion
+ const size_t first_clear = (static_cast<size_t>(x.exp) / static_cast<size_t>(ef_elem_digits10)) + 1u;
+ const size_t last_clear = static_cast<size_t>(ef_elem_number);
+
+ std::fill(x.data.begin() + first_clear,
+ x.data.begin() + last_clear,
+ static_cast<UINT32>(0u));
+
+ return x;
+}
+
+efx::e_float efx::e_float::extract_decimal_part(void) const
+{
+ // Compute the signed decimal part of x.
+
+ if(!isfinite())
+ {
+ return *this;
+ }
+
+ if(iszero())
+ {
+ return ef::zero();
+ }
+
+ if(exp < static_cast<INT64>(0))
+ {
+ // The absolute value of the number is smaller than 1.
+ // Thus it is already a pure decimal part.
+ return *this;
+ }
+ else if(exp >= static_cast<INT64>(std::numeric_limits<e_float>::digits10 - 1))
+ {
+ // The number is too large to have a decimal part.
+ // Thus the decimal part is zero.
+ return ef::zero();
+ }
+
+ e_float x = *this;
+
+ const std::size_t first_copy = static_cast<size_t>((static_cast<size_t>(x.exp) / static_cast<size_t>(ef_elem_digits10)) + 1u);
+ const std::size_t last_copy = static_cast<size_t>(ef_elem_number);
+
+ std::copy(x.data.begin() + first_copy,
+ x.data.begin() + last_copy,
+ x.data.begin());
+
+ const size_t first_clear = static_cast<size_t>(ef_elem_number - first_copy);
+ const size_t last_clear = static_cast<size_t>(ef_elem_number);
+
+ std::fill(x.data.begin() + first_clear,
+ x.data.begin() + last_clear,
+ static_cast<UINT32>(0u));
+
+ // Is it necessary to justify the data?
+ const array_type::const_iterator first_nonzero_elem = std::find_if(x.data.begin(),
+ x.data.end(),
+ data_elem_is_nonzero_predicate);
+
+ std::size_t sj = static_cast<std::size_t>(0u);
+
+ if(first_nonzero_elem != x.data.begin())
+ {
+ if(first_nonzero_elem == x.data.end())
+ {
+ // The decimal part is exactly zero.
+ // Reset the sign and the exponent.
+ x.neg = false;
+ x.exp = static_cast<INT64>(0);
+ }
+ else
+ {
+ // Justify the data
+ sj = static_cast<std::size_t>(std::distance<array_type::const_iterator>(x.data.begin(), first_nonzero_elem));
+
+ std::copy(x.data.begin() + sj,
+ x.data.end(),
+ x.data.begin());
+
+ std::fill(x.data.begin() + static_cast<std::size_t>(static_cast<std::size_t>(ef_elem_number) - sj),
+ x.data.end(),
+ static_cast<UINT32>(0u));
+ }
+ }
+
+ x.exp -= static_cast<INT64>((first_copy + sj) * static_cast<size_t>(ef_elem_digits10));
+
+ return x;
+}
+
+// NOCOVER_BLK_BEG
+const efx::e_float& efx::e_float::my_value_nan(void) const
+{
+ static e_float val = ef::zero();
+
+ val.fpclass = ef_NaN;
+
+ static const e_float qnan(val);
+
+ return qnan;
+}
+// NOCOVER_BLK_END
+
+const efx::e_float& efx::e_float::my_value_inf(void) const
+{
+ static e_float val = ef::zero();
+
+ val.fpclass = ef_inf;
+
+ static const e_float inf(val);
+
+ return inf;
+}
+
+const efx::e_float& efx::e_float::my_value_max(void) const
+{
+ static const INT64 exp10_max = std::numeric_limits<e_float>::max_exponent10;
+
+ static const e_float val("1E" + Util::lexical_cast(exp10_max));
+
+ return val;
+}
+
+const efx::e_float& efx::e_float::my_value_min(void) const
+{
+ static const INT64 exp10_min = std::numeric_limits<e_float>::min_exponent10;
+
+ static const e_float val("1E" + Util::lexical_cast(exp10_min));
+
+ return val;
+}
+
+void efx::e_float::wr_string(std::string& str, std::ostream& os) const
+{
+ if(isnan())
+ {
+ str = "NaN";
+ return;
+ }
+
+ if(isinf())
+ {
+ str = "INF";
+ return;
+ }
+
+ static const std::streamsize p_min = static_cast<std::streamsize>(10);
+ static const std::streamsize p_lim = static_cast<std::streamsize>(ef_digits10_tol);
+ const std::streamsize p = (std::max)(os.precision(), p_min);
+
+ const std::streamsize my_precision = (std::min)(p, p_lim);
+ const std::size_t my_p = static_cast<std::size_t>(my_precision);
+
+ const std::ios::fmtflags f = os.flags();
+
+ const bool my_uppercase = ((f & std::ios::uppercase) != static_cast<std::ios::fmtflags>(0u));
+ const bool my_showpos = ((f & std::ios::showpos) != static_cast<std::ios::fmtflags>(0u));
+ const bool my_scientific = ((f & std::ios::scientific) != static_cast<std::ios::fmtflags>(0u));
+
+ // Get first data element.
+ const std::string sn = Util::lexical_cast(data[0]);
+
+ INT64 n_exp = ((!iszero()) ? static_cast<INT64>((exp + static_cast<INT64>(sn.length())) - static_cast<INT64>(1))
+ : static_cast<INT64>(0));
+
+ str = sn;
+
+ // Add the digits after the decimal point.
+
+ for(std::size_t i = static_cast<std::size_t>(0u); i < static_cast<std::size_t>(ef_elem_number); i++)
+ {
+ std::stringstream ss;
+
+ ss << std::setw(static_cast<std::streamsize>(ef_elem_digits10))
+ << std::setfill(static_cast<char>('0'))
+ << data[static_cast<std::size_t>(i + 1u)];
+
+ str += ss.str();
+ }
+
+ // Cut the output to the size of the precision.
+ if(str.length() > my_p)
+ {
+ // Get the digit after the last needed digit for rounding
+ const UINT32 round = static_cast<UINT32>(static_cast<UINT32>(str.at(my_p)) - static_cast<UINT32>('0'));
+
+ // Truncate the string
+ str = str.substr(static_cast<std::size_t>(0u), my_p);
+
+ if(round >= static_cast<UINT32>(5u))
+ {
+ std::size_t ix = static_cast<std::size_t>(str.length() - 1u);
+
+ // Every trailing 9 must be rounded up
+ while(ix && (static_cast<INT32>(str.at(ix)) - static_cast<INT32>('0') == static_cast<INT32>(9)))
+ {
+ str.at(ix) = static_cast<char>('0');
+ --ix;
+ }
+
+ if(!ix)
+ {
+ // There were nothing but trailing nines.
+ if(static_cast<INT32>(static_cast<INT32>(str.at(ix)) - static_cast<INT32>(0x30)) == static_cast<INT32>(9))
+ {
+ // Increment up to the next order and adjust exponent.
+ str.at(ix) = static_cast<char>('1');
+ ++n_exp;
+ }
+ else
+ {
+ // Round up this digit
+ ++str.at(ix);
+ }
+ }
+ else
+ {
+ // Round up last digit.
+ ++str[ix];
+ }
+ }
+ }
+
+ if(!my_scientific)
+ {
+ if(iszero())
+ {
+ str = "0";
+ }
+ else if(n_exp < static_cast<INT64>(-4))
+ {
+ // The number is small in magnitude with a large, negative exponent.
+ // Use exponential notation.
+ str.insert(static_cast<std::size_t>(1u), ".");
+
+ // Append the exponent in uppercase or lower case, including its sign.
+ str += (my_uppercase ? "E" : "e");
+ str += "-";
+ std::string str_exp = Util::lexical_cast(static_cast<INT64>(-n_exp));
+ str += std::string(width_of_exponent_field() - str_exp.length(), static_cast<char>('0'));
+ str += str_exp;
+ }
+ else if((n_exp < static_cast<INT64>(0)) && (n_exp >= static_cast<INT64>(-4)))
+ {
+ // The number is medium small in magnitude with a medium, negative exponent.
+ // Insert the decimal point using "0." as well as the leading zeros.
+ str.insert(0u, "0." + std::string(static_cast<std::string::size_type>(-n_exp) - 1u, '0'));
+
+ // Remove all trailing zeros.
+ const std::string::const_reverse_iterator rev_it_non_zero_elem =
+ std::find_if(str.rbegin(), str.rend(), char_is_nonzero_predicate);
+
+ if(rev_it_non_zero_elem != str.rbegin())
+ {
+ const std::string::size_type ofs = str.length() - std::distance<std::string::const_reverse_iterator>(str.rbegin(), rev_it_non_zero_elem);
+ str.erase(str.begin() + ofs, str.end());
+ }
+ }
+ else if(n_exp >= static_cast<INT64>(my_precision))
+ {
+ // The number is large in magnitude with a large, positive exponent.
+ // Use exponential notation.
+
+ // Remove all trailing zeros.
+ const std::string::const_reverse_iterator rev_it_non_zero_elem =
+ std::find_if(str.rbegin(), str.rend(), char_is_nonzero_predicate);
+
+ if(rev_it_non_zero_elem != str.rbegin())
+ {
+ const std::string::size_type ofs = str.length() - std::distance<std::string::const_reverse_iterator>(str.rbegin(), rev_it_non_zero_elem);
+ str.erase(str.begin() + ofs, str.end());
+ }
+
+ // Insert the decimal point.
+ if(str.length() > 1u)
+ {
+ str.insert(1u, ".");
+ }
+
+ // Append the exponent in uppercase or lower case, including its sign.
+ str += (my_uppercase ? "E" : "e");
+ str += "+";
+ std::string str_exp = Util::lexical_cast(static_cast<INT64>(n_exp));
+ str += std::string(width_of_exponent_field() - str_exp.length(), static_cast<char>('0'));
+ str += str_exp;
+ }
+ else
+ {
+ // The number is medium in magnitude and can be expressed in its decimal form
+ // without using exponential notation.
+
+ // Insert the decimal point.
+ str.insert(static_cast<std::size_t>(n_exp + 1), ".");
+
+ // Remove all trailing zeros.
+ const std::string::const_reverse_iterator rev_it_non_zero_elem =
+ std::find_if(str.rbegin(), str.rend(), char_is_nonzero_predicate);
+
+ if(rev_it_non_zero_elem != str.rbegin())
+ {
+ const std::string::size_type ofs = str.length() - std::distance<std::string::const_reverse_iterator>(str.rbegin(), rev_it_non_zero_elem);
+ str.erase(str.begin() + ofs, str.end());
+ }
+ }
+
+ if(*(str.end() - 1u) == static_cast<char>('.'))
+ {
+ str.erase(str.end() - 1u);
+ }
+ }
+ else
+ {
+ str.insert(static_cast<std::size_t>(1u), ".");
+
+ // Append the exponent in uppercase or lower case, including its sign.
+ const bool b_exp_is_neg = (n_exp < static_cast<INT64>(0));
+ const UINT64 u_exp = static_cast<UINT64>(!b_exp_is_neg ? n_exp : static_cast<INT64>(-n_exp));
+
+ str += (my_uppercase ? "E" : "e");
+ str += (b_exp_is_neg ? "-" : "+");
+ std::string str_exp = Util::lexical_cast(static_cast<INT64>(u_exp));
+ str += std::string(width_of_exponent_field() - str_exp.length(), static_cast<char>('0'));
+ str += str_exp;
+ }
+
+ // Append the sign.
+ if(isneg())
+ {
+ str.insert(static_cast<std::size_t>(0u), "-");
+ }
+ else
+ {
+ if(my_showpos)
+ {
+ str.insert(static_cast<std::size_t>(0u), "+");
+ }
+ }
+}
+
+bool efx::e_float::rd_string(const char* const s)
+{
+ std::string str(s);
+
+ // Get possible exponent and remove it
+ exp = static_cast<INT64>(0);
+
+ std::size_t pos;
+
+ if( ((pos = str.find('e')) != std::string::npos)
+ || ((pos = str.find('E')) != std::string::npos)
+ )
+ {
+ exp = Util::numeric_cast<INT64>(std::string(str.c_str() + (pos + 1u)));
+
+ str = str.substr(static_cast<std::size_t>(0u), pos);
+ }
+
+ // Get possible +/- sign and remove it
+ neg = false;
+
+ if((pos = str.find(static_cast<char>('-'))) != std::string::npos)
+ {
+ neg = true;
+ str.erase(pos, static_cast<std::size_t>(1u));
+ }
+
+ if((pos = str.find(static_cast<char>('+'))) != std::string::npos)
+ {
+ str.erase(pos, static_cast<std::size_t>(1u));
+ }
+
+ // Remove leading zeros for all input types
+ const std::string::iterator fwd_it_leading_zero = std::find_if(str.begin(), str.end(), char_is_nonzero_predicate);
+
+ if(fwd_it_leading_zero != str.begin())
+ {
+ if(fwd_it_leading_zero == str.end())
+ {
+ // The string contains nothing but leading zeros. The string is zero.
+ operator=(ef::zero());
+ return true;
+ }
+ else
+ {
+ str.erase(str.begin(), fwd_it_leading_zero);
+ }
+ }
+
+ // Put the input string into the standard e_float input
+ // form aaa.bbbbE+/-n, where aa has 1...unit digits, bbbb
+ // has an even multiple of unit digits which are possibly
+ // zero padded on the right-end, and n is a signed 32-bit integer
+ // which is an even multiple of unit.
+
+ // Find possible decimal point
+ pos = str.find(static_cast<char>('.'));
+
+ if(pos != std::string::npos)
+ {
+ // Remove all trailing insignificant zeros.
+ const std::string::const_reverse_iterator rev_it_non_zero_elem =
+ std::find_if(str.rbegin(), str.rend(), char_is_nonzero_predicate);
+
+ if(rev_it_non_zero_elem != str.rbegin())
+ {
+ const std::string::size_type ofs = str.length() - std::distance<std::string::const_reverse_iterator>(str.rbegin(), rev_it_non_zero_elem);
+ str.erase(str.begin() + ofs, str.end());
+ }
+
+ // Check if input is identically zero
+ if(str == std::string("."))
+ {
+ operator=(ef::zero());
+ return true;
+ }
+
+ // Remove leading significant zeros just after the decimal point
+ // and adjust the exponent accordingly.
+ // Note that the while-loop operates only on strings of the form ".000abcd..."
+ // and peels away the zeros just after the decimal point.
+ if(str.at(static_cast<std::size_t>(0u)) == static_cast<char>('.'))
+ {
+ const std::string::iterator fwd_it_first_non_zero_decimal =
+ std::find_if(str.begin() + 1u, str.end(), char_is_nonzero_predicate);
+
+ std::string::size_type delta_exp = static_cast<std::size_t>(0u);
+
+ if(str.at(static_cast<std::size_t>(1u)) == static_cast<char>('0'))
+ {
+ delta_exp = std::distance<std::string::const_iterator>(str.begin() + 1u,
+ fwd_it_first_non_zero_decimal);
+ }
+
+ // Bring one single digit into the mantissa and adjust exponent accordingly
+ str.erase(str.begin(), fwd_it_first_non_zero_decimal);
+ str.insert(static_cast<std::size_t>(1u), ".");
+ exp -= static_cast<INT64>(delta_exp + 1u);
+ }
+ }
+ else
+ {
+ // Input string has no decimal point: Append decimal point.
+ str.append(".");
+ }
+
+ // Shift the decimal point such that the exponent is an even
+ // multiple of std::numeric_limits<e_float>::elem_digits10
+ std::size_t n_shift = static_cast<std::size_t>(0u);
+ const std::size_t n_exp_rem = static_cast<std::size_t>(exp % static_cast<INT64>(ef_elem_digits10));
+
+ if(exp % static_cast<INT64>(ef_elem_digits10))
+ {
+ n_shift = ((exp < static_cast<INT64>(0))
+ ? static_cast<std::size_t>(n_exp_rem + static_cast<std::size_t>(ef_elem_digits10))
+ : static_cast<std::size_t>(n_exp_rem));
+ }
+
+ // Make sure that there are enough digits for the decimal point shift.
+ pos = str.find(static_cast<char>('.'));
+
+ std::size_t pos_plus_one = static_cast<std::size_t>(pos + 1u);
+
+ if((str.length() - pos_plus_one) < n_shift)
+ {
+ const std::size_t sz = static_cast<std::size_t>(n_shift - (str.length() - pos_plus_one));
+
+ str.append(std::string(sz, static_cast<char>('0')));
+ }
+
+ // Do the decimal point shift.
+ if(n_shift)
+ {
+ str.insert(static_cast<std::size_t>(pos_plus_one + n_shift), ".");
+
+ str.erase(pos, static_cast<std::size_t>(1u));
+
+ exp -= static_cast<INT64>(n_shift);
+ }
+
+ // Cut the size of the mantissa to <= ef_elem_digits10
+ pos = str.find(static_cast<char>('.'));
+ pos_plus_one = static_cast<std::size_t>(pos + 1u);
+
+ if(pos > static_cast<std::size_t>(ef_elem_digits10))
+ {
+ const INT32 n_pos = static_cast<INT32>(pos);
+ const INT32 n_rem_is_zero = ((static_cast<INT32>(n_pos % ef_elem_digits10) == static_cast<INT32>(0)) ? static_cast<INT32>(1) : static_cast<INT32>(0));
+ const INT32 n = static_cast<INT32>(static_cast<INT32>(n_pos / ef_elem_digits10) - n_rem_is_zero);
+
+ str.insert(static_cast<std::size_t>(static_cast<INT32>(n_pos - static_cast<INT32>(n * ef_elem_digits10))), ".");
+
+ str.erase(pos_plus_one, static_cast<std::size_t>(1u));
+
+ exp += static_cast<INT64>(static_cast<INT64>(n) * static_cast<INT64>(ef_elem_digits10));
+ }
+
+ // Pad the decimal part such that its value
+ // is an even multiple of ef_elem_digits10
+ pos = str.find(static_cast<char>('.'));
+ pos_plus_one = static_cast<std::size_t>(pos + 1u);
+
+ const INT32 n_dec = static_cast<INT32>(static_cast<INT32>(str.length() - 1u) - static_cast<INT32>(pos));
+ const INT32 n_rem = static_cast<INT32>(n_dec % ef_elem_digits10);
+ INT32 n_cnt = ((n_rem != static_cast<INT32>(0)) ? static_cast<INT32>(ef_elem_digits10 - n_rem)
+ : static_cast<INT32>(0));
+
+ if(n_cnt != static_cast<INT32>(0))
+ {
+ str.append(static_cast<std::size_t>(n_cnt), static_cast<char>('0'));
+ }
+
+ // Truncate decimal part if it is too long
+ const std::size_t max_dec = static_cast<std::size_t>((ef_elem_number - 1) * ef_elem_digits10);
+
+ if(static_cast<std::size_t>(str.length() - pos) > max_dec)
+ {
+ str = str.substr(static_cast<std::size_t>(0u),
+ static_cast<std::size_t>(pos_plus_one + max_dec));
+ }
+
+ // Now the input string has the standard e_float input form (see comment above).
+
+ // Set the data to 0.
+ std::fill(data.begin(), data.end(), static_cast<UINT32>(0u));
+
+ // Extract the data.
+
+ // First get the digits to the left of the decimal point...
+ data[0u] = Util::numeric_cast<UINT32>(str.substr(static_cast<std::size_t>(0u), pos));
+
+ // ...then get the remaining digits to the right of the decimal point.
+ const std::string::size_type i_end = ((str.length() - pos_plus_one) / static_cast<std::string::size_type>(ef_elem_digits10));
+
+ for(std::string::size_type i = static_cast<std::string::size_type>(0u); i < i_end; i++)
+ {
+ const std::string::const_iterator it = str.begin()
+ + pos_plus_one
+ + (i * static_cast<std::string::size_type>(ef_elem_digits10));
+
+ data[i + 1u] = Util::numeric_cast<UINT32>(std::string(it, it + static_cast<std::string::size_type>(ef_elem_digits10)));
+ }
+
+ // Check for overflow...
+ if(exp > std::numeric_limits<e_float>::max_exponent10)
+ {
+ const bool b_result_is_neg = neg;
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+ }
+
+ // ...and check for underflow.
+ if(exp < std::numeric_limits<e_float>::min_exponent10)
+ {
+ *this = ef::zero();
+ }
+
+ return true;
+}

Added: sandbox/e_float/libs/e_float/src/e_float/gmp/e_float_gmp.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/e_float/gmp/e_float_gmp.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,877 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <sstream>
+#include <iomanip>
+#include <vector>
+#include <algorithm>
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include "e_float_gmp_protos.h"
+#include "../../utility/util_lexical_cast.h"
+
+namespace
+{
+ const double& d_log2(void)
+ {
+ static const double value_log2 = 0.3010299956639811952137389;
+ return value_log2;
+ }
+}
+
+void gmp::e_float::init(void)
+{
+ static bool precision_is_initialized = false;
+
+ if(!precision_is_initialized)
+ {
+ precision_is_initialized = true;
+
+ ::mpf_set_default_prec(static_cast<unsigned long int>(ef_digits2));
+ }
+}
+
+const INT64& gmp::e_float::max_exp2(void)
+{
+ static const INT64 val_max_exp2 = static_cast<INT64>(static_cast<double>(ef_max_exp10) / ::d_log2());
+ return val_max_exp2;
+}
+
+const INT64& gmp::e_float::min_exp2(void)
+{
+ static const INT64 val_min_exp2 = static_cast<INT64>(static_cast<double>(ef_min_exp10) / ::d_log2());
+ return val_min_exp2;
+}
+
+gmp::e_float::e_float(const INT32 n) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+
+ const bool b_neg = (n < static_cast<INT32>(0));
+
+ from_uint32(b_neg ? static_cast<UINT32>(-n) : static_cast<UINT32>(n));
+
+ if(b_neg)
+ {
+ ::mpf_neg(rop, rop);
+ }
+}
+
+gmp::e_float::e_float(const INT64 n) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+
+ const bool b_neg = (n < static_cast<INT64>(0));
+
+ from_uint64(b_neg ? static_cast<UINT64>(-n) : static_cast<UINT64>(n));
+
+ if(b_neg)
+ {
+ ::mpf_neg(rop, rop);
+ }
+}
+
+gmp::e_float::e_float(const UINT32 u) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+ from_uint32(u);
+}
+
+gmp::e_float::e_float(const UINT64 u) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+ from_uint64(u);
+}
+
+void gmp::e_float::from_uint64(const UINT64 u)
+{
+ ::mpf_init_set_str(rop, Util::lexical_cast(u).c_str(), 10);
+}
+
+void gmp::e_float::from_uint32(const UINT32 u)
+{
+ ::mpf_init_set_ui(rop, static_cast<unsigned long int>(u));
+}
+
+gmp::e_float::e_float() : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+ ::mpf_init(rop);
+}
+
+gmp::e_float::e_float(const double d) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+ ::mpf_init_set_d(rop, d);
+}
+
+gmp::e_float::e_float(const char* const s) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+ static_cast<void>(rd_string(s));
+}
+
+gmp::e_float::e_float(const std::string& str) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+ static_cast<void>(rd_string(str.c_str()));
+}
+
+gmp::e_float::e_float(const e_float& mp) : fpclass (mp.fpclass),
+ prec_elem(mp.prec_elem)
+{
+ init();
+ ::mpf_init_set(rop, mp.rop);
+}
+
+gmp::e_float::e_float(const double mantissa, const INT64 exponent) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+
+ const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits<double>::min)() * 2.0));
+
+ if(mantissa_is_iszero)
+ {
+ if(exponent == static_cast<INT64>(0))
+ {
+ ::mpf_init_set(rop, ef::one().rop);
+ }
+ else
+ {
+ ::mpf_init_set(rop, ef::zero().rop);
+ }
+ }
+ else
+ {
+ ::mpf_init_set(rop, ef::zero().rop);
+ operator=(e_float(mantissa));
+ operator*=(e_float("1E" + Util::lexical_cast(exponent)));
+ }
+}
+
+gmp::e_float::e_float(const ::mpf_t& op) : fpclass (ef_finite),
+ prec_elem(ef_digits10_tol)
+{
+ init();
+ ::mpf_init_set(rop, op);
+}
+
+gmp::e_float::~e_float()
+{
+ ::mpf_set_prec_raw(rop, static_cast<unsigned long int>(ef_digits2));
+ ::mpf_clear(rop);
+}
+
+void gmp::e_float::precision(const INT32 prec_digits)
+{
+ const unsigned long int digits2_request = static_cast<unsigned long int>(static_cast<UINT64>(static_cast<double>(prec_digits) / ::d_log2()));
+ const unsigned long int d2 = static_cast<unsigned long int>(ef_digits2);
+ const unsigned long int digits2_set = (std::min)(digits2_request, d2);
+
+ prec_elem = static_cast<INT32>(static_cast<INT64>(static_cast<double>(digits2_set) * ::d_log2()));
+
+ ::mpf_set_prec_raw(rop, digits2_set);
+}
+
+gmp::e_float& gmp::e_float::operator=(const e_float& v)
+{
+ fpclass = v.fpclass;
+ prec_elem = v.prec_elem;
+
+ ::mpf_set (rop, v.rop);
+ ::mpf_set_prec_raw(rop, static_cast<unsigned long>(static_cast<UINT64>(static_cast<double>(prec_elem) / ::d_log2())));
+
+ return *this;
+}
+
+gmp::e_float& gmp::e_float::operator+=(const e_float& v)
+{
+ if(isnan())
+ {
+ return *this;
+ }
+
+ if(isinf())
+ {
+ if(v.isinf() && (isneg() != v.isneg()))
+ {
+ *this = std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ return *this;
+ }
+
+ ::mpf_add(rop, rop, v.rop);
+
+ // Check for overflow.
+ long u_exp2_signed;
+ static_cast<void>(::mpf_get_d_2exp(&u_exp2_signed, rop));
+
+ if( (u_exp2_signed >= std::numeric_limits<e_float>::max_exponent)
+ && (ef::fabs(*this) > (std::numeric_limits<e_float>::max)())
+ )
+ {
+ const bool b_result_is_neg = isneg();
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+ }
+
+ return *this;
+}
+
+gmp::e_float& gmp::e_float::operator-=(const e_float& v)
+{
+ // Use *this - v = -(-*this + v).
+ return (negate().operator+=(v)).negate();
+}
+
+gmp::e_float& gmp::e_float::operator*=(const e_float& v)
+{
+ const bool b_u_is_inf = isinf();
+ const bool b_v_is_inf = v.isinf();
+
+ if( (isnan() || v.isnan())
+ || (b_u_is_inf && v.iszero())
+ || (b_v_is_inf && iszero())
+ )
+ {
+ return *this = std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(b_u_is_inf || b_v_is_inf)
+ {
+ const bool b_result_is_neg = (isneg() == v.isneg());
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ // Get the base-2 exponent of *this and v and...
+ long u_exp2_signed;
+ long v_exp2_signed;
+ static_cast<void>(::mpf_get_d_2exp(&u_exp2_signed, rop));
+ static_cast<void>(::mpf_get_d_2exp(&v_exp2_signed, v.rop));
+
+ // Check for overflow or underflow.
+ const bool u_exp2_is_neg = (u_exp2_signed < static_cast<long>(0));
+ const bool v_exp2_is_neg = (v_exp2_signed < static_cast<long>(0));
+
+ if(u_exp2_is_neg == v_exp2_is_neg)
+ {
+ // Get the unsigned base-2 exponents of *this and v and...
+ const INT64 u_exp2 = ((!u_exp2_is_neg) ? u_exp2_signed : -u_exp2_signed);
+ const INT64 v_exp2 = ((!v_exp2_is_neg) ? v_exp2_signed : -v_exp2_signed);
+
+ // Check the range of the upcoming multiplication.
+ const bool b_result_is_out_of_range = (v_exp2 >= static_cast<long>(static_cast<long>(ef_max_exp) - u_exp2));
+
+ if(b_result_is_out_of_range)
+ {
+ if(u_exp2_is_neg)
+ {
+ *this = ef::zero();
+ }
+ else
+ {
+ const bool b_result_is_neg = (isneg() == v.isneg());
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+ }
+
+ return *this;
+ }
+ }
+
+ // Multiply *this by v.
+ ::mpf_mul(rop, rop, v.rop);
+
+ return *this;
+}
+
+gmp::e_float& gmp::e_float::operator/=(const e_float& v)
+{
+ return operator*=(e_float(v).calculate_inv());
+}
+
+gmp::e_float& gmp::e_float::mul_by_int(const INT32 n)
+{
+ // Multiply *this with a constant signed integer.
+
+ const bool b_n_is_neg = (n < static_cast<INT32>(0));
+
+ const bool b_u_is_inf = isinf();
+ const bool b_n_is_zero = (n == static_cast<INT32>(0));
+
+ if(isnan() || (b_u_is_inf && b_n_is_zero))
+ {
+ return *this = std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(b_u_is_inf)
+ {
+ const bool b_result_is_neg = (isneg() != b_n_is_neg);
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ const unsigned long nn = static_cast<unsigned long>(!b_n_is_neg ? n : -n);
+
+ ::mpf_mul_ui(rop, rop, static_cast<unsigned long>(nn));
+
+ if(b_n_is_neg)
+ {
+ negate();
+ }
+
+ // Check for overflow.
+ long u_exp2_signed;
+ static_cast<void>(::mpf_get_d_2exp(&u_exp2_signed, rop));
+
+ if( (u_exp2_signed >= std::numeric_limits<e_float>::max_exponent)
+ && (ef::fabs(*this) > (std::numeric_limits<e_float>::max)())
+ )
+ {
+ const bool b_result_is_neg = (isneg() != b_n_is_neg);
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+ }
+
+ return *this;
+}
+
+gmp::e_float& gmp::e_float::div_by_int(const INT32 n)
+{
+ const bool b_n_is_neg = (n < static_cast<INT32>(0));
+
+ if(isnan())
+ {
+ return *this;
+ }
+
+ if(isinf())
+ {
+ const bool b_result_is_neg = (isneg() != b_n_is_neg);
+
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ if(n == static_cast<INT32>(0))
+ {
+ // Divide by 0.
+ if(iszero())
+ {
+ return (*this = std::numeric_limits<e_float>::quiet_NaN());
+ }
+ else
+ {
+ *this = ((!isneg()) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+ }
+
+ if(iszero())
+ {
+ return *this;
+ }
+
+ const unsigned long un = static_cast<unsigned long>((!b_n_is_neg) ? n : -n);
+
+ ::mpf_div_ui(rop, rop, un);
+
+ if(b_n_is_neg)
+ {
+ negate();
+ }
+
+ // Check for underflow.
+ long u_exp2_signed;
+ static_cast<void>(::mpf_get_d_2exp(&u_exp2_signed, rop));
+
+ if( (u_exp2_signed <= std::numeric_limits<e_float>::min_exponent)
+ && (ef::fabs(*this) < (std::numeric_limits<e_float>::min)())
+ )
+ {
+ return *this = ef::zero();
+ }
+
+ return *this;
+}
+
+gmp::e_float& gmp::e_float::calculate_inv(void)
+{
+ // Compute the inverse of *this.
+
+ bool b_result_is_neg = isneg();
+
+ if(iszero())
+ {
+ *this = ((!b_result_is_neg) ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+
+ return *this;
+ }
+
+ if(isnan())
+ {
+ return *this;
+ }
+
+ if(isinf())
+ {
+ return (*this = ef::zero());
+ }
+
+ if(isone())
+ {
+ *this = ((!b_result_is_neg) ? ef::one() : -ef::one());
+
+ return *this;
+ }
+
+ ::mpf_ui_div(rop, static_cast<unsigned long int>(1u), rop);
+
+ return *this;
+}
+
+gmp::e_float& gmp::e_float::calculate_sqrt(void)
+{
+ // Compute the square root of *this.
+
+ if(isneg() || !isfinite())
+ {
+ return *this = std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(iszero() || isone())
+ {
+ return *this;
+ }
+
+ ::mpf_sqrt(rop, rop);
+
+ return *this;
+}
+
+INT32 gmp::e_float::cmp_data(const ::mpf_t& v) const
+{
+ const INT32 result = static_cast<INT32>(::mpf_cmp(rop, v));
+
+ if(result > static_cast<INT32>(0))
+ {
+ return static_cast<INT32>(1);
+ }
+ else if(result < static_cast<INT32>(0))
+ {
+ return static_cast<INT32>(-1);
+ }
+ else
+ {
+ return static_cast<INT32>(0);
+ }
+}
+
+INT32 gmp::e_float::cmp(const e_float& v) const
+{
+ const INT32 result = cmp_data(v.rop);
+
+ if(result == static_cast<INT32>(0))
+ {
+ return ((isfinite() && v.isfinite()) ? static_cast<INT32>(0) : static_cast<INT32>(1));
+ }
+ else
+ {
+ return result;
+ }
+}
+
+bool gmp::e_float::iszero(void) const
+{
+ // Check if the value of *this is identically 0 or very close to 0.
+ return isint() && (cmp(ef::zero()) == static_cast<INT32>(0));
+}
+
+bool gmp::e_float::isone(void) const
+{
+ // Check if the value of *this is identically 1 or very close to 1.
+ return (isint() && (cmp(ef::one()) == static_cast<INT32>(0)));
+}
+
+bool gmp::e_float::isint(void) const
+{
+ // Check if the value of *this is pure integer or very close to pure integer.
+ return (::mpf_integer_p(rop) != 0);
+}
+
+bool gmp::e_float::isneg(void) const
+{
+ return (::mpf_sgn(rop) < 0);
+}
+
+const gmp::e_float& gmp::e_float::my_value_nan(void) const
+{
+ static e_float val(0u);
+
+ val.fpclass = ef_NaN;
+
+ static const e_float qnan(val);
+
+ return qnan;
+}
+
+const gmp::e_float& gmp::e_float::my_value_inf(void) const
+{
+ static e_float val(0u);
+
+ val.fpclass = ef_inf;
+
+ static const e_float inf(val);
+
+ return inf;
+}
+
+const gmp::e_float& gmp::e_float::my_value_max(void) const
+{
+ static const INT64 exp10_max = std::numeric_limits<e_float>::max_exponent10;
+
+ static const e_float val("1E" + Util::lexical_cast(exp10_max));
+
+ return val;
+}
+
+const gmp::e_float& gmp::e_float::my_value_min(void) const
+{
+ static const INT64 exp10_min = std::numeric_limits<e_float>::min_exponent10;
+
+ static const e_float val("1E" + Util::lexical_cast(exp10_min));
+
+ return val;
+}
+
+e_float& gmp::e_float::negate(void)
+{
+ ::mpf_neg(rop, rop);
+ return *this;
+}
+
+e_float& gmp::e_float::operator++(void) { ::mpf_add_ui(rop, rop, static_cast<unsigned long>(1u)); return *this; }
+e_float& gmp::e_float::operator--(void) { ::mpf_sub_ui(rop, rop, static_cast<unsigned long>(1u)); return *this; }
+
+void gmp::e_float::extract_parts(double& mantissa, INT64& exponent) const
+{
+ const bool b_neg = isneg();
+
+ long n2;
+ const double d2 = ::mpf_get_d_2exp(&n2, (ef::fabs(*this)).rop);
+ const double x_exp = static_cast<double>(static_cast<double>(n2) * ::d_log2());
+
+ const double x_exp_integer_part = static_cast<double>(static_cast<long>(x_exp));
+ const double x_exp_decimal_part = static_cast<double>(x_exp - x_exp_integer_part);
+
+ double m = d2 * ::pow(10.0, x_exp_decimal_part);
+ INT64 e = static_cast<INT64>(x_exp_integer_part);
+
+ if(m < 1.0)
+ {
+ m *= 10.0;
+ e -= static_cast<INT64>(1);
+ }
+
+ mantissa = ((!b_neg) ? m : -m);
+ exponent = e;
+}
+
+double gmp::e_float::extract_double(void) const
+{
+ const bool b_neg = isneg();
+
+ const e_float xx = ef::fabs(*this);
+
+ static const e_float dbl_max((std::numeric_limits<double>::max)());
+ static const e_float dbl_min((std::numeric_limits<double>::min)());
+
+ if(xx > dbl_max)
+ {
+ return ((!b_neg) ? (std::numeric_limits<double>::max)()
+ : -(std::numeric_limits<double>::max)());
+ }
+ else if(xx < dbl_min)
+ {
+ return ((!b_neg) ? (std::numeric_limits<double>::min)()
+ : -(std::numeric_limits<double>::min)());
+ }
+
+ const double dx = ::mpf_get_d(xx.rop);
+
+ return ((!b_neg) ? dx : -dx);
+}
+
+INT64 gmp::e_float::extract_int64(void) const
+{
+ const bool b_neg = isneg();
+
+ // Make a rounded copy.
+ e_float xr = *this;
+
+ if(isint())
+ {
+ ((!b_neg) ? xr += ef::half() : xr -= ef::half());
+ }
+
+ const e_float nx = ef::fabs(xr.extract_integer_part());
+
+ static const e_float n64_max((std::numeric_limits<INT64>::max)());
+
+ if(nx > n64_max)
+ {
+ return ((!b_neg) ? (std::numeric_limits<INT64>::max)()
+ : -(std::numeric_limits<INT64>::max)());
+ }
+
+ if(nx < ef::one())
+ {
+ return static_cast<INT64>(0);
+ }
+
+ if(nx.isone())
+ {
+ return ((!b_neg) ? static_cast<INT64>(1) : static_cast<INT64>(-1));
+ }
+
+ static const char c0 = static_cast<char>('\0');
+
+ std::vector<char> str(32u, c0);
+
+ mp_exp_t p10;
+
+ static_cast<void>(::mpf_get_str(&str[0], &p10, 10, str.size() - 1u, nx.rop));
+
+ std::string str_n64(static_cast<std::size_t>(p10), static_cast<char>('0'));
+
+ std::copy(str.begin(),
+ std::find(str.begin(), str.end(), c0),
+ str_n64.begin());
+
+ std::stringstream ss;
+
+ ss << str_n64;
+
+ INT64 n;
+ ss >> n;
+
+ return ((!b_neg) ? n : -n);
+}
+
+gmp::e_float gmp::e_float::extract_integer_part(void) const
+{
+ const bool b_neg = isneg();
+
+ const e_float xx = ef::fabs(*this);
+
+ e_float nx(xx);
+ ::mpf_floor(nx.rop, xx.rop);
+
+ return ((!b_neg) ? nx : -nx);
+}
+
+gmp::e_float gmp::e_float::extract_decimal_part(void) const
+{
+ const bool b_neg = isneg();
+
+ const e_float xx = ef::fabs(*this);
+
+ const e_float dx = xx - xx.extract_integer_part();
+
+ return ((!b_neg) ? dx : -dx);
+}
+
+INT64 gmp::e_float::order(void) const
+{
+ const e_float xx = ef::fabs(*this);
+
+ if(xx.iszero() || xx.isone())
+ {
+ return static_cast<INT64>(0);
+ }
+ else
+ {
+ signed long int n2;
+ const double d2 = ::mpf_get_d_2exp(&n2, xx.rop);
+ const double lg10x = static_cast<double>(::log10(d2) + (static_cast<double>(n2) * ::d_log2()));
+
+ return ((lg10x < 0.0) ? static_cast<INT64>(lg10x - 0.5)
+ : static_cast<INT64>(lg10x + 0.5));
+ }
+}
+
+void gmp::e_float::wr_string(std::string& str, std::ostream& os) const
+{
+ if(isnan())
+ {
+ str = "NaN";
+ return;
+ }
+
+ if(isinf())
+ {
+ str = "INF";
+ return;
+ }
+
+ static const std::streamsize p_min = static_cast<std::streamsize>(10);
+ static const std::streamsize p_lim = static_cast<std::streamsize>(ef_digits10_tol);
+ const std::streamsize p = (std::max)(os.precision(), p_min);
+
+ const std::streamsize my_precision = (std::min)(p, p_lim);
+
+ const std::ios::fmtflags f = os.flags();
+
+ const bool my_uppercase = ((f & std::ios::uppercase) != static_cast<std::ios::fmtflags>(0u));
+ const bool my_showpos = ((f & std::ios::showpos) != static_cast<std::ios::fmtflags>(0u));
+ const bool my_scientific = ((f & std::ios::scientific) != static_cast<std::ios::fmtflags>(0u));
+
+ // Create a format string such as "%+.99Fe"
+ const std::string str_fmt = (my_showpos ? "%+." : "%.")
+ + Util::lexical_cast(my_precision - (my_scientific ? 1 : 0))
+ + (my_scientific ? (my_uppercase ? "FE" : "Fe") : (my_uppercase ? "FG" : "Fg"));
+
+ std::tr1::array<char, static_cast<std::size_t>(e_float::ef_digits10_tol + 32)> buf = {{ static_cast<char>(0) }};
+
+ static_cast<void>(gmp_sprintf(buf.data(), str_fmt.c_str(), rop));
+
+ // Set the result string and remove the '\0' padding by using the c_str() representation.
+ str = std::string(buf.data());
+
+ const std::size_t pos_E = (my_uppercase ? str.rfind('E') : str.rfind('e'));
+
+ if(pos_E != std::string::npos)
+ {
+ // Pad the exponent number field with additional zeros such that the width
+ // of the exponent number field is equal to the width of ef_max_exp10.
+ const std::size_t pos_exp = static_cast<std::string::size_type>(pos_E + 2u);
+
+ const std::string::size_type width_of_exp = str.length() - pos_exp;
+
+ str.insert(pos_exp, std::string(width_of_exponent_field() - width_of_exp, static_cast<char>('0')));
+ }
+}
+
+namespace gmp
+{
+ static bool has_exp_or_has_dec_predicate(const char& c)
+ {
+ return ( (c == static_cast<char>('e'))
+ || (c == static_cast<char>('E'))
+ || (c == static_cast<char>('.')));
+ }
+}
+
+bool gmp::e_float::rd_string(const char* const s)
+{
+ std::string str(s);
+
+ // Remove spaces and tabs
+ static const char spc = static_cast<char>(' ');
+ static const char tab = static_cast<char>('\t');
+
+ str.erase(std::remove(str.begin(), str.end(), spc), str.end());
+ str.erase(std::remove(str.begin(), str.end(), tab), str.end());
+
+ // Get possible + sign and remove it
+
+ if( (!str.empty())
+ && str.at(static_cast<std::size_t>(0u)) == static_cast<char>('+')
+ )
+ {
+ str.erase(static_cast<std::size_t>(0u),
+ static_cast<std::size_t>(1u));
+ }
+
+ // Get possible - sign and remove it
+
+ bool b_negate = false;
+
+ if( (!str.empty())
+ && str.at(static_cast<std::size_t>(0u)) == static_cast<char>('-')
+ )
+ {
+ b_negate = true;
+ str.erase(static_cast<std::size_t>(0u),
+ static_cast<std::size_t>(1u));
+ }
+
+ // Remove leading zeros for all input types
+ while( (!str.empty())
+ && str.at(static_cast<std::size_t>(0u)) == static_cast<char>('0')
+ )
+ {
+ str.erase(static_cast<std::size_t>(0u),
+ static_cast<std::size_t>(1u));
+ }
+
+ // Scale very long pure integer input strings. Convert these into a string with
+ // a decimal point and an exponent.
+
+ const std::string::const_iterator it = std::find_if(str.begin(),
+ str.end(),
+ gmp::has_exp_or_has_dec_predicate);
+
+ const bool is_pure_integer = (it == str.end());
+
+ bool b_scaled = false;
+
+ if(is_pure_integer && (str.length() > static_cast<std::size_t>(ef::tol())))
+ {
+ b_scaled = true;
+
+ const std::size_t exp = static_cast<std::size_t>(str.length() - static_cast<std::size_t>(1u));
+
+ const std::string str_exp = "E" + Util::lexical_cast(exp);
+
+ str = str.substr(static_cast<std::size_t>(0u),
+ static_cast<std::size_t>(static_cast<std::size_t>(ef::tol()) - 1u));
+
+ str.insert(static_cast<std::size_t>(1u), ".");
+
+ str += str_exp;
+ }
+
+ // Set the e_float value.
+ const INT32 n_set_result = static_cast<INT32>(::mpf_init_set_str(rop, str.c_str(), 10));
+
+ if(b_negate)
+ {
+ negate();
+ }
+
+ return (n_set_result == static_cast<INT32>(0));
+}

Added: sandbox/e_float/libs/e_float/src/e_float/gmp/e_float_gmp_protos.h
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/e_float/gmp/e_float_gmp_protos.h 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,73 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_GMP_PROTOS_2009_05_02_H_
+ #define _E_FLOAT_GMP_PROTOS_2009_05_02_H_
+
+ // Wrap the function names of GMP.
+ extern "C"
+ {
+ void __gmpf_set (mpf_ptr, mpf_srcptr);
+ void __gmpf_set_default_prec(unsigned long int);
+ void __gmpf_set_prec (mpf_ptr, unsigned long int);
+ void __gmpf_set_prec_raw (mpf_ptr, unsigned long int);
+ void __gmpf_init (mpf_ptr);
+ void __gmpf_init_set (mpf_ptr, mpf_srcptr);
+ int __gmpf_init_set_str (mpf_ptr, const char*, int);
+ void __gmpf_init_set_ui (mpf_ptr, unsigned long int);
+ void __gmpf_init_set_d (mpf_ptr, double);
+ void __gmpf_clear (mpf_ptr);
+ void __gmpf_neg (mpf_ptr, mpf_srcptr);
+ void __gmpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);
+ void __gmpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_floor (mpf_ptr, mpf_srcptr);
+ void __gmpf_sqrt (mpf_ptr, mpf_srcptr);
+ int __gmpf_cmp (mpf_srcptr, mpf_srcptr);
+ int __gmpf_integer_p (mpf_srcptr);
+ double __gmpf_get_d (mpf_srcptr);
+ double __gmpf_get_d_2exp (signed long int*, mpf_srcptr);
+ char* __gmpf_get_str (char*, mp_exp_t*, int, size_t, mpf_srcptr);
+ int __gmp_sprintf (char*, const char*, ...);
+ }
+
+ inline void mpf_set (mpf_ptr dst, mpf_srcptr src) { ::__gmpf_set (dst, src); }
+ inline void mpf_set_default_prec(unsigned long int p) { ::__gmpf_set_default_prec (p); }
+ inline void mpf_set_prec_raw (mpf_ptr dst, unsigned long int p) { ::__gmpf_set_prec_raw (dst, p); }
+ inline void mpf_init (mpf_ptr dst) { ::__gmpf_init (dst); }
+ inline void mpf_init_set (mpf_ptr dst, mpf_srcptr src) { ::__gmpf_init_set (dst, src); }
+ inline int mpf_init_set_str (mpf_ptr dst, const char* str, int n) { return ::__gmpf_init_set_str (dst, str, n); }
+ inline void mpf_init_set_ui (mpf_ptr dst, unsigned long int u) { ::__gmpf_init_set_ui (dst, u); }
+ inline void mpf_init_set_d (mpf_ptr dst, double d) { ::__gmpf_init_set_d (dst, d); }
+ inline void mpf_clear (mpf_ptr dst) { ::__gmpf_clear (dst); }
+ inline void mpf_neg (mpf_ptr dst, mpf_srcptr src) { ::__gmpf_neg (dst, src); }
+ inline void mpf_add_ui (mpf_ptr dst, mpf_srcptr src, unsigned long int u) { ::__gmpf_add_ui (dst, src, u); }
+ inline void mpf_sub_ui (mpf_ptr dst, mpf_srcptr src, unsigned long int u) { ::__gmpf_sub_ui (dst, src, u); }
+ inline void mpf_mul_ui (mpf_ptr dst, mpf_srcptr src, unsigned long int u) { ::__gmpf_mul_ui (dst, src, u); }
+ inline void mpf_div_ui (mpf_ptr dst, mpf_srcptr src, unsigned long int u) { ::__gmpf_div_ui (dst, src, u); }
+ inline void mpf_ui_div (mpf_ptr dst, unsigned long int u, mpf_srcptr src) { ::__gmpf_ui_div (dst, u, src); }
+ inline void mpf_add (mpf_ptr dst, mpf_srcptr u, mpf_srcptr v) { ::__gmpf_add (dst, u, v); }
+ inline void mpf_mul (mpf_ptr dst, mpf_srcptr u, mpf_srcptr v) { ::__gmpf_mul (dst, u, v); }
+ inline void mpf_floor (mpf_ptr dst, mpf_srcptr x) { ::__gmpf_floor (dst, x); }
+ inline void mpf_sqrt (mpf_ptr dst, mpf_srcptr x) { ::__gmpf_sqrt (dst, x); }
+ inline int mpf_cmp (mpf_srcptr x, mpf_srcptr y) { return ::__gmpf_cmp (x, y); }
+ inline int mpf_sgn (mpf_srcptr x) { return x->_mp_size < 0 ? -1 : (x->_mp_size > 0); }
+ inline int mpf_integer_p (mpf_srcptr src) { return ::__gmpf_integer_p (src); }
+ inline double mpf_get_d (mpf_srcptr x) { return ::__gmpf_get_d (x); }
+ inline double mpf_get_d_2exp (signed long int* e, mpf_srcptr x) { return ::__gmpf_get_d_2exp (e, x); }
+ inline char* mpf_get_str (char* str, mp_exp_t* e, int i, size_t s, mpf_srcptr x) { return ::__gmpf_get_str (str, e, i, s, x); }
+ #define gmp_sprintf __gmp_sprintf
+
+#endif // _E_FLOAT_GMP_PROTOS_2009_05_02_H_

Added: sandbox/e_float/libs/e_float/src/e_float/mpfr/e_float_mpfr.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/e_float/mpfr/e_float_mpfr.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,484 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <sstream>
+#include <iomanip>
+#include <cstdio>
+#include <cstdarg>
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+
+#include "e_float_mpfr_protos.h"
+#include "../../utility/util_lexical_cast.h"
+
+namespace
+{
+ const double& d_log2(void)
+ {
+ static const double value_log2 = 0.3010299956639811952137389;
+ return value_log2;
+ }
+}
+
+void mpfr::e_float::init(void)
+{
+ static bool precision_is_initialized = false;
+
+ if(!precision_is_initialized)
+ {
+ precision_is_initialized = true;
+
+ ::mpfr_set_default_prec(static_cast<mp_prec_t>(ef_digits2));
+ }
+}
+
+mpfr::e_float::e_float()
+{
+ init();
+ ::mpfr_init(rop);
+}
+
+mpfr::e_float::e_float(const INT32 n)
+{
+ const bool b_neg = (n < static_cast<INT32>(0));
+
+ from_uint32(b_neg ? static_cast<UINT32>(-n) : static_cast<UINT32>(n));
+
+ if(b_neg) { ::mpfr_neg(rop, rop, GMP_RNDN); }
+}
+
+mpfr::e_float::e_float(const INT64 n)
+{
+ const bool b_neg = (n < static_cast<INT64>(0));
+
+ from_uint64(b_neg ? static_cast<UINT64>(-n) : static_cast<UINT64>(n));
+
+ if(b_neg) { ::mpfr_neg(rop, rop, GMP_RNDN); }
+}
+
+mpfr::e_float::e_float(const UINT32 u)
+{
+ from_uint32(u);
+}
+
+mpfr::e_float::e_float(const UINT64 u)
+{
+ from_uint64(u);
+}
+
+void mpfr::e_float::from_uint64(const UINT64 u)
+{
+ init();
+ static_cast<void>(::mpfr_init_set_str(rop, Util::lexical_cast(u).c_str(), 10, GMP_RNDN));
+}
+
+void mpfr::e_float::from_uint32(const UINT32 u)
+{
+ init();
+ mpfr_init_set_ui(rop, static_cast<unsigned long>(u), GMP_RNDN);
+}
+
+mpfr::e_float::e_float(const double d)
+{
+ init();
+ mpfr_init_set_d(rop, d, GMP_RNDN);
+}
+
+mpfr::e_float::e_float(const e_float& f)
+{
+ init();
+ mpfr_init_set(rop, f.rop, GMP_RNDN);
+}
+
+mpfr::e_float::e_float(const char* s)
+{
+ static_cast<void>(rd_string(s));
+}
+
+mpfr::e_float::e_float(const std::string& str)
+{
+ static_cast<void>(rd_string(str.c_str()));
+}
+
+mpfr::e_float::e_float(const double mantissa, const INT64 exponent)
+{
+ init();
+
+ const bool mantissa_is_iszero = (::fabs(mantissa) < ((std::numeric_limits<double>::min)() * 2.0));
+
+ if(mantissa_is_iszero)
+ {
+ if(exponent == static_cast<INT64>(0))
+ {
+ mpfr_init_set(rop, (ef::one()).rop, GMP_RNDN);
+ }
+ else
+ {
+ mpfr_init_set(rop, (ef::zero()).rop, GMP_RNDN);
+ }
+ }
+ else
+ {
+ mpfr_init_set(rop, (ef::zero()).rop, GMP_RNDN);
+ operator=(e_float(mantissa));
+ operator*=(e_float("1E" + Util::lexical_cast(exponent)));
+ }
+}
+
+mpfr::e_float::~e_float()
+{
+ ::mpfr_clear(rop);
+}
+
+const mpfr::e_float& mpfr::e_float::my_value_nan(void) const
+{
+ static const e_float val;
+ return val;
+}
+
+const mpfr::e_float& mpfr::e_float::my_value_inf(void) const
+{
+ static const e_float inf = ef::one() / ef::zero();
+ return inf;
+}
+
+const mpfr::e_float& mpfr::e_float::my_value_max(void) const
+{
+ static const INT64 exp10_max = std::numeric_limits<e_float>::max_exponent10;
+
+ static const e_float val("1E" + Util::lexical_cast(exp10_max));
+
+ return val;
+}
+
+const mpfr::e_float& mpfr::e_float::my_value_min(void) const
+{
+ static const INT64 exp10_min = std::numeric_limits<e_float>::min_exponent10;
+
+ static const e_float val("1E" + Util::lexical_cast(exp10_min));
+
+ return val;
+}
+
+mpfr::e_float& mpfr::e_float::operator=(const e_float& v)
+{
+ static_cast<void>(::mpfr_set(rop, v.rop, GMP_RNDN));
+ return *this;
+}
+
+mpfr::e_float& mpfr::e_float::operator+=(const e_float& v)
+{
+ static_cast<void>(::mpfr_add(rop, rop, v.rop, GMP_RNDN));
+ return *this;
+}
+
+mpfr::e_float& mpfr::e_float::operator-=(const e_float& v)
+{
+ static_cast<void>(::mpfr_sub(rop, rop, v.rop, GMP_RNDN));
+ return *this;
+}
+
+mpfr::e_float& mpfr::e_float::operator*=(const e_float& v)
+{
+ static_cast<void>(::mpfr_mul(rop, rop, v.rop, GMP_RNDN));
+ return *this;
+}
+
+mpfr::e_float& mpfr::e_float::operator/=(const e_float& v)
+{
+ static_cast<void>(::mpfr_div(rop, rop, v.rop, GMP_RNDN));
+ return *this;
+}
+
+mpfr::e_float& mpfr::e_float::mul_by_int(const INT32 n)
+{
+ const bool b_n_is_neg = (n < static_cast<INT32>(0));
+
+ const unsigned long int nn = ((!b_n_is_neg) ? static_cast<unsigned long>(n) : static_cast<unsigned long>(-n));
+
+ static_cast<void>(::mpfr_mul_ui(rop, rop, nn, GMP_RNDN));
+
+ if(b_n_is_neg)
+ {
+ ::mpfr_neg(rop, rop, GMP_RNDN);
+ }
+
+ return *this;
+}
+
+mpfr::e_float& mpfr::e_float::div_by_int(const INT32 n)
+{
+ const bool b_neg = (n < static_cast<INT32>(0));
+
+ const unsigned long int nn = ((!b_neg) ? static_cast<unsigned long>(n) : static_cast<unsigned long>(-n));
+
+ static_cast<void>(::mpfr_div_ui(rop, rop, nn, GMP_RNDN));
+
+ if(b_neg)
+ {
+ ::mpfr_neg(rop, rop, GMP_RNDN);
+ }
+
+ return *this;
+}
+
+e_float& mpfr::e_float::negate(void)
+{
+ ::mpfr_neg(rop, rop, GMP_RNDN);
+ return *this;
+}
+
+INT32 mpfr::e_float::cmp(const e_float& v) const
+{
+ return static_cast<INT32>(::mpfr_cmp(rop, v.rop));
+}
+
+mpfr::e_float& mpfr::e_float::calculate_sqrt(void)
+{
+ static_cast<void>(::mpfr_sqrt(rop, rop, GMP_RNDN));
+ return *this;
+}
+
+mpfr::e_float& mpfr::e_float::calculate_inv(void)
+{
+ static_cast<void>(::mpfr_div(rop, ef::one().rop, rop, GMP_RNDN));
+ return *this;
+}
+
+bool mpfr::e_float::isnan (void) const { return (::mpfr_nan_p (rop) != 0); }
+bool mpfr::e_float::isinf (void) const { return (::mpfr_inf_p (rop) != 0); }
+bool mpfr::e_float::isfinite(void) const { return ((!isnan()) && (!isinf())); }
+bool mpfr::e_float::iszero (void) const { return (::mpfr_zero_p (rop) != 0); }
+bool mpfr::e_float::isone (void) const { return ((::mpfr_integer_p(rop) != 0) && (::mpfr_get_si(rop, GMP_RNDN) == static_cast<unsigned long>(1uL))); }
+bool mpfr::e_float::isint (void) const { return (::mpfr_integer_p(rop) != 0); }
+bool mpfr::e_float::isneg (void) const { return (::mpfr_sgn (rop) < 0); }
+
+mpfr::e_float& mpfr::e_float::operator++(void) { ::mpfr_add_ui(rop, rop, static_cast<unsigned long>(1uL), GMP_RNDN); return *this; }
+mpfr::e_float& mpfr::e_float::operator--(void) { ::mpfr_sub_ui(rop, rop, static_cast<unsigned long>(1uL), GMP_RNDN); return *this; }
+
+void mpfr::e_float::extract_parts(double& mantissa, INT64& exponent) const
+{
+ const bool b_neg = isneg();
+
+ long n2;
+ const double d2 = ::mpfr_get_d_2exp(&n2, (ef::fabs(*this)).rop, GMP_RNDN);
+ const double x_exp = static_cast<double>(static_cast<double>(n2) * ::d_log2());
+
+ const double x_exp_integer_part = static_cast<double>(static_cast<long>(x_exp));
+ const double x_exp_decimal_part = static_cast<double>(x_exp - x_exp_integer_part);
+
+ double m = d2 * ::pow(10.0, x_exp_decimal_part);
+ INT64 e = static_cast<INT64>(x_exp_integer_part);
+
+ if(m < 1.0)
+ {
+ m *= 10.0;
+ e -= static_cast<INT64>(1);
+ }
+
+ mantissa = ((!b_neg) ? m : -m);
+ exponent = e;
+}
+
+double mpfr::e_float::extract_double(void) const
+{
+ const bool b_neg = isneg();
+
+ const e_float xx = ef::fabs(*this);
+
+ static const e_float dbl_max((std::numeric_limits<double>::max)());
+ static const e_float dbl_min((std::numeric_limits<double>::min)());
+
+ if(xx > dbl_max)
+ {
+ return ((!b_neg) ? (std::numeric_limits<double>::max)()
+ : -(std::numeric_limits<double>::max)());
+ }
+ else if(xx < dbl_min)
+ {
+ return ((!b_neg) ? (std::numeric_limits<double>::min)()
+ : -(std::numeric_limits<double>::min)());
+ }
+
+ const double dx = ::mpfr_get_d(xx.rop, GMP_RNDN);
+
+ return ((!b_neg) ? dx : -dx);
+}
+
+INT64 mpfr::e_float::extract_int64(void) const
+{
+ const bool b_neg = isneg();
+
+ const e_float nx = ef::fabs(*this);
+
+ static const e_float n64_max((std::numeric_limits<INT64>::max)());
+
+ if(nx > n64_max)
+ {
+ return ((!b_neg) ? (std::numeric_limits<INT64>::max)()
+ : -(std::numeric_limits<INT64>::max)());
+ }
+
+ if(nx < ef::one())
+ {
+ return static_cast<INT64>(0);
+ }
+
+ if(nx.isone())
+ {
+ return static_cast<INT64>(!b_neg ? static_cast<INT64>(1) : static_cast<INT64>(-1));
+ }
+
+ static const char c0 = static_cast<char>('\0');
+
+ std::tr1::array<char, 32u> str = {{ c0 }};
+
+ mp_exp_t p10;
+
+ static_cast<void>(::mpfr_get_str(str.data(), &p10, 10, str.size() - 1u, nx.rop, GMP_RNDN));
+
+ std::string str_n64(static_cast<std::size_t>(p10), static_cast<char>('0'));
+
+ std::copy(str.begin(),
+ str.begin() + str_n64.size(),
+ str_n64.begin());
+
+ std::stringstream ss;
+
+ ss << str_n64;
+
+ INT64 n;
+
+ ss >> n;
+
+ return ((!b_neg) ? n : -n);
+}
+
+mpfr::e_float mpfr::e_float::extract_integer_part(void) const
+{
+ const bool b_neg = isneg();
+
+ e_float nx;
+
+ ::mpfr_floor(nx.rop, (ef::fabs(*this)).rop, GMP_RNDN);
+
+ return ((!b_neg) ? nx : -nx);
+}
+
+mpfr::e_float mpfr::e_float::extract_decimal_part(void) const
+{
+ const bool b_neg = isneg();
+
+ const e_float xx = ef::fabs(*this);
+
+ const e_float dx = xx - xx.extract_integer_part();
+
+ return ((!b_neg) ? dx : -dx);
+}
+
+INT64 mpfr::e_float::order(void) const
+{
+ const e_float xx = ef::fabs(*this);
+
+ if(xx.iszero() || xx.isone())
+ {
+ return static_cast<INT64>(0);
+ }
+ else
+ {
+ signed long int n2;
+ const double d2 = ::mpfr_get_d_2exp(&n2, xx.rop, GMP_RNDN);
+ const double lg10x = static_cast<double>(::log10(d2) + (static_cast<double>(n2) * ::d_log2()));
+
+ return ((lg10x < 0.0) ? static_cast<INT64>(lg10x - 0.5)
+ : static_cast<INT64>(lg10x + 0.5));
+ }
+}
+
+void mpfr::e_float::wr_string(std::string& str, std::ostream& os) const
+{
+ if(isnan())
+ {
+ str = "NaN";
+ return;
+ }
+
+ if(isinf())
+ {
+ str = "INF";
+ return;
+ }
+
+ static const std::streamsize p_min = static_cast<std::streamsize>(10);
+ static const std::streamsize p_lim = static_cast<std::streamsize>(ef_digits10_tol);
+ const std::streamsize p = (std::max)(os.precision(), p_min);
+
+ const std::streamsize my_precision = (std::min)(p, p_lim);
+
+ const std::ios::fmtflags f = os.flags();
+
+ const bool my_uppercase = ((f & std::ios::uppercase) != static_cast<std::ios::fmtflags>(0u));
+ const bool my_showpos = ((f & std::ios::showpos) != static_cast<std::ios::fmtflags>(0u));
+ const bool my_scientific = ((f & std::ios::scientific) != static_cast<std::ios::fmtflags>(0u));
+
+ // Create a format string such as "%+.99RNe"
+ const std::string str_sign(my_showpos ? "%+." : "%.");
+ const std::string str_prec(Util::lexical_cast(my_precision - (my_scientific ? 1 : 0)));
+ const std::string str_case(my_scientific ? (my_uppercase ? "RNE" : "RNe") : (my_uppercase ? "RNG" : "RNg"));
+
+ const std::string str_fmt = str_sign + (str_prec + str_case);
+
+ std::tr1::array<char, static_cast<std::size_t>(e_float::ef_digits10_tol + 32)> buf = {{ static_cast<char>(0) }};
+
+ ::mpfr_sprintf(buf.data(), str_fmt.c_str(), rop);
+
+ str = std::string(buf.data());
+
+ const std::size_t pos_E = (my_uppercase ? str.rfind('E') : str.rfind('e'));
+
+ if(pos_E != std::string::npos)
+ {
+ // Pad the exponent number field with additional zeros such that the width
+ // of the exponent number field is equal to the width of ef_max_exp10.
+ const std::size_t pos_exp = static_cast<std::string::size_type>(pos_E + 2u);
+
+ const std::string::size_type width_of_exp = str.length() - pos_exp;
+
+ str.insert(pos_exp, std::string(width_of_exponent_field() - width_of_exp, static_cast<char>('0')));
+ }
+}
+
+bool mpfr::e_float::rd_string(const char* const s)
+{
+ init();
+ return (::mpfr_init_set_str(rop, s, 10, GMP_RNDN) == 1);
+}
+
+e_float mpfr::e_float::my_cbrt (const e_float& x) { e_float res; static_cast<void>(::mpfr_cbrt (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_rootn (const e_float& x, const UINT32 p) { e_float res; static_cast<void>(::mpfr_root (res.rop, x.rop, static_cast<unsigned long int>(p), GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_exp (const e_float& x) { e_float res; static_cast<void>(::mpfr_exp (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_log (const e_float& x) { e_float res; static_cast<void>(::mpfr_log (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_sin (const e_float& x) { e_float res; static_cast<void>(::mpfr_sin (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_cos (const e_float& x) { e_float res; static_cast<void>(::mpfr_cos (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_tan (const e_float& x) { e_float res; static_cast<void>(::mpfr_tan (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_asin (const e_float& x) { e_float res; static_cast<void>(::mpfr_asin (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_acos (const e_float& x) { e_float res; static_cast<void>(::mpfr_acos (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_atan (const e_float& x) { e_float res; static_cast<void>(::mpfr_atan (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_sinh (const e_float& x) { e_float res; static_cast<void>(::mpfr_sinh (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_cosh (const e_float& x) { e_float res; static_cast<void>(::mpfr_cosh (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_tanh (const e_float& x) { e_float res; static_cast<void>(::mpfr_tanh (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_asinh (const e_float& x) { e_float res; static_cast<void>(::mpfr_asinh(res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_acosh (const e_float& x) { e_float res; static_cast<void>(::mpfr_acosh(res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_atanh (const e_float& x) { e_float res; static_cast<void>(::mpfr_atanh(res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_gamma (const e_float& x) { e_float res; static_cast<void>(::mpfr_gamma(res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_riemann_zeta (const e_float& x) { e_float res; static_cast<void>(::mpfr_zeta (res.rop, x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_cyl_bessel_jn(const INT32 n, const e_float& x) { e_float res; static_cast<void>(::mpfr_jn(res.rop, static_cast<long>(n), x.rop, GMP_RNDN)); return res; }
+e_float mpfr::e_float::my_cyl_bessel_yn(const INT32 n, const e_float& x) { e_float res; static_cast<void>(::mpfr_yn(res.rop, static_cast<long>(n), x.rop, GMP_RNDN)); return res; }

Added: sandbox/e_float/libs/e_float/src/e_float/mpfr/e_float_mpfr_protos.h
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/e_float/mpfr/e_float_mpfr_protos.h 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,86 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _E_FLOAT_MPFR_PROTOS_2009_11_15_H_
+ #define _E_FLOAT_MPFR_PROTOS_2009_11_15_H_
+
+ // Wrap the function names of MPFR.
+ extern "C"
+ {
+ #define MPFR_SIGN(x) ((x)->_mpfr_sign)
+
+ void mpfr_init(mpfr_ptr);
+ void mpfr_set_default_prec(mp_prec_t);
+ void mpfr_clear(mpfr_ptr);
+
+ int mpfr_set4 (mpfr_ptr, mpfr_srcptr, mp_rnd_t, int);
+ #define mpfr_set(x, y, rnd) mpfr_set4((x), (y), (rnd), MPFR_SIGN(y))
+ int mpfr_set_ui (mpfr_ptr, unsigned long, mp_rnd_t);
+ int mpfr_set_d (mpfr_ptr, double, mp_rnd_t);
+
+ #define mpfr_init_set(x, y, rnd) ( mpfr_init(x), static_cast<void>(mpfr_set ((x), (y), (rnd))))
+ #define mpfr_init_set_ui(x, i, rnd) ( mpfr_init(x), static_cast<void>(mpfr_set_ui((x), (i), (rnd))))
+ #define mpfr_init_set_d(x, d, rnd) ( mpfr_init(x), mpfr_set_d((x), (d), (rnd)))
+ int mpfr_init_set_str(mpfr_ptr, const char*, int, mp_rnd_t);
+
+ int mpfr_add(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_sub(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_mul(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_div(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mp_rnd_t);
+
+ int mpfr_add_ui(mpfr_ptr, mpfr_srcptr, unsigned long int, mp_rnd_t);
+ int mpfr_sub_ui(mpfr_ptr, mpfr_srcptr, unsigned long int, mp_rnd_t);
+ int mpfr_mul_ui(mpfr_ptr, mpfr_srcptr, unsigned long int, mp_rnd_t);
+ int mpfr_div_ui(mpfr_ptr, mpfr_srcptr, unsigned long int, mp_rnd_t);
+
+ int mpfr_cmp3(mpfr_srcptr, mpfr_srcptr, int);
+ #define mpfr_cmp(b, c) mpfr_cmp3((b), (c), 1)
+
+ int mpfr_neg(mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+
+ int mpfr_nan_p (mpfr_srcptr);
+ int mpfr_inf_p (mpfr_srcptr);
+ int mpfr_number_p (mpfr_srcptr);
+ int mpfr_zero_p (mpfr_srcptr);
+ int mpfr_integer_p(mpfr_srcptr);
+ int mpfr_sgn (mpfr_srcptr);
+
+ int mpfr_sprintf(char*, const char*, ...);
+
+ double mpfr_get_d (mpfr_srcptr, mp_rnd_t);
+ unsigned long mpfr_get_si (mpfr_srcptr, mp_rnd_t);
+ double mpfr_get_d_2exp(signed long int*, mpfr_srcptr, mp_rnd_t);
+ char* mpfr_get_str (char*, mp_exp_t*, int, size_t, mpfr_srcptr, mp_rnd_t);
+
+ int mpfr_floor(mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_sqrt (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_cbrt (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_root (mpfr_ptr, mpfr_srcptr, unsigned long int, mp_rnd_t);
+ int mpfr_sin (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_cos (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_tan (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_asin (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_acos (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_atan (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_sinh (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_cosh (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_tanh (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_asinh(mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_acosh(mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_atanh(mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_exp (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_log (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_gamma(mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_zeta (mpfr_ptr, mpfr_srcptr, mp_rnd_t);
+ int mpfr_jn (mpfr_ptr, long, mpfr_srcptr, mp_rnd_t);
+ int mpfr_yn (mpfr_ptr, long, mpfr_srcptr, mp_rnd_t);
+ }
+
+#endif // _E_FLOAT_MPFR_PROTOS_2009_11_15_H_

Added: sandbox/e_float/libs/e_float/src/functions/constants/constants.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/constants/constants.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,356 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_elementary_trans.hpp>
+#include <e_float/e_float_constants.hpp>
+
+const e_float& ef::two (void) { static const e_float val( 2u); return val; }
+const e_float& ef::three (void) { static const e_float val( 3u); return val; }
+const e_float& ef::four (void) { static const e_float val( 4u); return val; }
+const e_float& ef::five (void) { static const e_float val( 5u); return val; }
+const e_float& ef::six (void) { static const e_float val( 6u); return val; }
+const e_float& ef::seven (void) { static const e_float val( 7u); return val; }
+const e_float& ef::eight (void) { static const e_float val( 8u); return val; }
+const e_float& ef::nine (void) { static const e_float val( 9u); return val; }
+const e_float& ef::ten (void) { static const e_float val( 10u); return val; }
+const e_float& ef::twenty (void) { static const e_float val( 20u); return val; }
+const e_float& ef::thirty (void) { static const e_float val( 30u); return val; }
+const e_float& ef::forty (void) { static const e_float val( 40u); return val; }
+const e_float& ef::fifty (void) { static const e_float val( 50u); return val; }
+const e_float& ef::hundred (void) { static const e_float val( 100u); return val; }
+const e_float& ef::two_hundred (void) { static const e_float val( 200u); return val; }
+const e_float& ef::three_hundred(void) { static const e_float val( 300u); return val; }
+const e_float& ef::four_hundred (void) { static const e_float val( 400u); return val; }
+const e_float& ef::five_hundred (void) { static const e_float val( 500u); return val; }
+const e_float& ef::thousand (void) { static const e_float val( 1000u); return val; }
+const e_float& ef::two_k (void) { static const e_float val( 2000u); return val; }
+const e_float& ef::three_k (void) { static const e_float val( 3000u); return val; }
+const e_float& ef::four_k (void) { static const e_float val( 4000u); return val; }
+const e_float& ef::five_k (void) { static const e_float val( 5000u); return val; }
+const e_float& ef::ten_k (void) { static const e_float val( 10000u); return val; }
+const e_float& ef::twenty_k (void) { static const e_float val( 20000u); return val; }
+const e_float& ef::thirty_k (void) { static const e_float val( 30000u); return val; }
+const e_float& ef::forty_k (void) { static const e_float val( 40000u); return val; }
+const e_float& ef::fifty_k (void) { static const e_float val( 50000u); return val; }
+const e_float& ef::hundred_k (void) { static const e_float val( 100000u); return val; }
+const e_float& ef::million (void) { static const e_float val( 1000000u); return val; }
+const e_float& ef::ten_M (void) { static const e_float val( 10000000u); return val; }
+const e_float& ef::hundred_M (void) { static const e_float val( 100000000u); return val; }
+const e_float& ef::billion (void) { static const e_float val(1000000000u); return val; }
+const e_float& ef::trillion (void) { static const e_float val( "1e12"); return val; }
+const e_float& ef::googol (void) { static const e_float val( "1e100"); return val; }
+const e_float& ef::int32max (void) { static const e_float val((std::numeric_limits<INT32>::max)()); return val; }
+const e_float& ef::int32min (void) { static const e_float val((std::numeric_limits<INT32>::min)()); return val; }
+const e_float& ef::int64max (void) { static const e_float val((std::numeric_limits<INT64>::max)()); return val; }
+const e_float& ef::int64min (void) { static const e_float val((std::numeric_limits<INT64>::min)()); return val; }
+const e_float& ef::one_minus (void) { static const e_float val(-1 ); return val; }
+const e_float& ef::tenth (void) { static const e_float val(ef::one() / static_cast<INT32>(10)); return val; }
+const e_float& ef::eighth (void) { static const e_float val(ef::one() / static_cast<INT32>( 8)); return val; }
+const e_float& ef::sixteenth (void) { static const e_float val(ef::one() / static_cast<INT32>(16)); return val; }
+const e_float& ef::fifth (void) { static const e_float val(ef::one() / static_cast<INT32>( 5)); return val; }
+const e_float& ef::quarter (void) { static const e_float val(ef::one() / static_cast<INT32>( 4)); return val; }
+const e_float& ef::third (void) { static const e_float val(ef::one() / static_cast<INT32>( 3)); return val; }
+const e_float& ef::two_third (void) { static const e_float val(ef::two() / static_cast<INT32>( 3)); return val; }
+const e_float& ef::four_third (void) { static const e_float val(ef::four() / static_cast<INT32>( 3)); return val; }
+const e_float& ef::three_half (void) { static const e_float val(ef::one() + ef::half()); return val; }
+
+const e_float& ef::sqrt2(void)
+{
+ // 1100 digits of sqrt(2)
+ static const std::string str =
+ std::string("1.")
+ + std::string("4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727")
+ + std::string("3501384623091229702492483605585073721264412149709993583141322266592750559275579995050115278206057147")
+ + std::string("0109559971605970274534596862014728517418640889198609552329230484308714321450839762603627995251407989")
+ + std::string("6872533965463318088296406206152583523950547457502877599617298355752203375318570113543746034084988471")
+ + std::string("6038689997069900481503054402779031645424782306849293691862158057846311159666871301301561856898723723")
+ + std::string("5288509264861249497715421833420428568606014682472077143585487415565706967765372022648544701585880162")
+ + std::string("0758474922657226002085584466521458398893944370926591800311388246468157082630100594858704003186480342")
+ + std::string("1948972782906410450726368813137398552561173220402450912277002269411275736272804957381089675040183698")
+ + std::string("6836845072579936472906076299694138047565482372899718032680247442062926912485905218100445984215059112")
+ + std::string("0249441341728531478105803603371077309182869314710171111683916581726889419758716582152128229518488472")
+ + std::string("0896946338628915628827659526351405422676532396946175112916024087155101351504553812875600526314680171")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::sqrt3(void)
+{
+ // 1100 digits of sqrt(3)
+ static const std::string str =
+ std::string("1.")
+ + std::string("7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485756")
+ + std::string("7562614141540670302996994509499895247881165551209437364852809323190230558206797482010108467492326501")
+ + std::string("5312343266903322886650672254668921837971227047131660367861588019049986537379859389467650347506576050")
+ + std::string("7566183481296061009476021871903250831458295239598329977898245082887144638329173472241639845878553976")
+ + std::string("6795806381835366611084317378089437831610208830552490167002352071114428869599095636579708716849807289")
+ + std::string("9493296484283020786408603988738697537582317317831395992983007838702877053913369563312103707264019249")
+ + std::string("1067682311992883756411414220167427521023729942708310598984594759876642888977961478379583902288548529")
+ + std::string("0357603385280806438197234466105968972287286526415382266469842002119548415527844118128653450703519165")
+ + std::string("0016689294415480846071277143999762926834629577438361895110127148638746976545982451788550975379013880")
+ + std::string("6649619119622229571105552429237231921977382625616314688420328537166829386496119170497388363954959381")
+ + std::string("4575767185337363312591089965542462483478719760523599776919232357022030530284038591541497107242955920")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::pi(void)
+{
+ // 1100 digits of pi
+ static const std::string str =
+ std::string("3.")
+ + std::string("1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679")
+ + std::string("8214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196")
+ + std::string("4428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273")
+ + std::string("7245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094")
+ + std::string("3305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912")
+ + std::string("9833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132")
+ + std::string("0005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235")
+ + std::string("4201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859")
+ + std::string("5024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303")
+ + std::string("5982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989")
+ + std::string("3809525720106548586327886593615338182796823030195203530185296899577362259941389124972177528347913152")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::pi_half (void) { static const e_float val = ef::pi() / static_cast<INT32>(2); return val; }
+const e_float& ef::pi_quarter(void) { static const e_float val = ef::pi() / static_cast<INT32>(4); return val; }
+const e_float& ef::pi_squared(void) { static const e_float val = ef::pi() * ef::pi(); return val; }
+const e_float& ef::two_pi (void) { static const e_float val = ef::pi() * static_cast<INT32>(2); return val; }
+const e_float& ef::degree (void) { static const e_float val = ef::pi() / static_cast<INT32>(180); return val; }
+const e_float& ef::sqrt_pi (void) { static const e_float val = ef::sqrt(ef::pi()); return val; }
+
+const e_float& ef::exp1(void)
+{
+ // 1100 digits of e
+ static const std::string str =
+ std::string("2.")
+ + std::string("7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274")
+ + std::string("2746639193200305992181741359662904357290033429526059563073813232862794349076323382988075319525101901")
+ + std::string("1573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069")
+ + std::string("5517027618386062613313845830007520449338265602976067371132007093287091274437470472306969772093101416")
+ + std::string("9283681902551510865746377211125238978442505695369677078544996996794686445490598793163688923009879312")
+ + std::string("7736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117")
+ + std::string("3012381970684161403970198376793206832823764648042953118023287825098194558153017567173613320698112509")
+ + std::string("9618188159304169035159888851934580727386673858942287922849989208680582574927961048419844436346324496")
+ + std::string("8487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016")
+ + std::string("7683964243781405927145635490613031072085103837505101157477041718986106873969655212671546889570350354")
+ + std::string("0212340784981933432106817012100562788023519303322474501585390473041995777709350366041699732972508869")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::ln2(void)
+{
+ // 1100 digits of ln2
+ static const std::string str =
+ std::string("0.")
+ + std::string("6931471805599453094172321214581765680755001343602552541206800094933936219696947156058633269964186875")
+ + std::string("4200148102057068573368552023575813055703267075163507596193072757082837143519030703862389167347112335")
+ + std::string("0115364497955239120475172681574932065155524734139525882950453007095326366642654104239157814952043740")
+ + std::string("4303855008019441706416715186447128399681717845469570262716310645461502572074024816377733896385506952")
+ + std::string("6066834113727387372292895649354702576265209885969320196505855476470330679365443254763274495125040606")
+ + std::string("9438147104689946506220167720424524529612687946546193165174681392672504103802546259656869144192871608")
+ + std::string("2938031727143677826548775664850856740776484514644399404614226031930967354025744460703080960850474866")
+ + std::string("3852313818167675143866747664789088143714198549423151997354880375165861275352916610007105355824987941")
+ + std::string("4729509293113897155998205654392871700072180857610252368892132449713893203784393530887748259701715591")
+ + std::string("0708823683627589842589185353024363421436706118923678919237231467232172053401649256872747782344535347")
+ + std::string("6481149418642386776774406069562657379600867076257199184734022651462837904883062033061144630073719489")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::ln3(void)
+{
+ // 1100 digits of ln3
+ static const std::string str =
+ std::string("1.")
+ + std::string("0986122886681096913952452369225257046474905578227494517346943336374942932186089668736157548137320887")
+ + std::string("8797002906595786574236800422593051982105280187076727741060316276918338136717937369884436095990374257")
+ + std::string("0316795911521145591917750671347054940166775580222203170252946897560690106521505642868138036317373298")
+ + std::string("5777823669916547921318181490200301038236301222486527481982259910974524908964580534670088459650857484")
+ + std::string("4411901885708764749486707961308582941160216612118400140982551439194876889367984943022557315353296853")
+ + std::string("4529525145921387649468593256279441655694157827231035516886610211846989043994306313825528573646688282")
+ + std::string("4988136822800634143910786893251456437510204451627561934973982116941585740535361758900975122233797736")
+ + std::string("9696877543547951357129821770175812421223514058101632724655889372495649191852429607966842346470693772")
+ + std::string("3725265508203207833392805589285314687309513260645830918439749682223032576546753331182301964927525759")
+ + std::string("9132217851353390237482964339502546074245824934666866121881436526565429542767610505477795422933973323")
+ + std::string("4011737431939745798470185595484940594783539438410106029307622922281312074893063445340252777326856271")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::ln10(void)
+{
+ // 1100 digits of ln10
+ static const std::string str =
+ std::string("2.")
+ + std::string("3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983")
+ + std::string("4196778404228624863340952546508280675666628736909878168948290720832555468084379989482623319852839350")
+ + std::string("5308965377732628846163366222287698219886746543667474404243274365155048934314939391479619404400222105")
+ + std::string("1017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806")
+ + std::string("4450706480002775026849167465505868569356734206705811364292245544057589257242082413146956890167589402")
+ + std::string("5677631135691929203337658714166023010570308963457207544037084746994016826928280848118428931484852494")
+ + std::string("8644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938")
+ + std::string("6629769795221107182645497347726624257094293225827985025855097852653832076067263171643095059950878075")
+ + std::string("2371033310119785754733154142180842754386359177811705430982748238504564801909561029929182431823752535")
+ + std::string("7709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978")
+ + std::string("7488737713456862091670584980782805975119385444500997813114691593466624107184669231010759843831919129")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::log10_2(void)
+{
+ // 1100 digits of log10(2)
+ static const std::string str =
+ std::string("0.")
+ + std::string("3010299956639811952137388947244930267681898814621085413104274611271081892744245094869272521181861720")
+ + std::string("4068447719143099537909476788113352350599969233370469557506450296425419340266181973431160294350118390")
+ + std::string("2898178582617154439531861929046353884699520239310849612462540400263312594621478845847318282672683982")
+ + std::string("3261965427935076313175483509271389649469177857689180507900075995480878154597145850319648776261224922")
+ + std::string("9082911819095149899717161986047767650006782051791255732862866834200040292050983708457222489549429756")
+ + std::string("2149707244659708613689609221909482761214391496528235167826492314804027746243244163311538738259303883")
+ + std::string("0393806332161302390518805821319156854616929053015051319269853784884187183200657535694683929717421320")
+ + std::string("1090589689085058562464098721839687664853985623516127730263892787826084983668103030843141556081394361")
+ + std::string("7674548856663424538123733932422469594349060212044504296827460688478546115684768410643797950046596991")
+ + std::string("7745657540864018464079456529544341077408293999745400737217016801948890554856910694003754116899634157")
+ + std::string("5929721806443038102815203392388085633198685453987393548560657842896848982613944260846632782952602877")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::euler_gamma(void)
+{
+ // 1100 digits of Euler gamma
+ static const std::string str =
+ std::string("0.")
+ + std::string("5772156649015328606065120900824024310421593359399235988057672348848677267776646709369470632917467495")
+ + std::string("1463144724980708248096050401448654283622417399764492353625350033374293733773767394279259525824709491")
+ + std::string("6008735203948165670853233151776611528621199501507984793745085705740029921354786146694029604325421519")
+ + std::string("0587755352673313992540129674205137541395491116851028079842348775872050384310939973613725530608893312")
+ + std::string("6760017247953783675927135157722610273492913940798430103417771778088154957066107501016191663340152278")
+ + std::string("9358679654972520362128792265559536696281763887927268013243101047650596370394739495763890657296792960")
+ + std::string("1009015125195950922243501409349871228247949747195646976318506676129063811051824197444867836380861749")
+ + std::string("4551698927923018773910729457815543160050021828440960537724342032854783670151773943987003023703395183")
+ + std::string("2869000155819398804270741154222781971652301107356583396734871765049194181230004065469314299929777956")
+ + std::string("9303100503086303418569803231083691640025892970890985486825777364288253954925873629596133298574739302")
+ + std::string("3734388470703702844129201664178502487333790805627549984345907616431671031467107223700218107450444187")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::catalan(void)
+{
+ // 1100 digits of Catalan's constant
+ static const std::string str =
+ std::string("0.")
+ + std::string("9159655941772190150546035149323841107741493742816721342664981196217630197762547694793565129261151062")
+ + std::string("4857442261919619957903589880332585905943159473748115840699533202877331946051903872747816408786590902")
+ + std::string("4706484152163000228727640942388259957741508816397470252482011560707644883807873370489900864775113225")
+ + std::string("9971343407485407553230768565335768095835260219382323950800720680355761048235733942319149829836189977")
+ + std::string("0690364041808621794110191753274314997823397610551224779530324875371878665828082360570225594194818097")
+ + std::string("5350971131571261580424272363643985001738287597797653068370092980873887495610893659771940968726844441")
+ + std::string("6680462162433986483891628044828150627302274207388431172218272190472255870531908685735423498539498309")
+ + std::string("9191159673884645086151524996242370437451777372351775440708538464401321748392999947572446199754961975")
+ + std::string("8706400747487070149093767887304586997986064487497464387206238513712392736304998503539223928787979063")
+ + std::string("3644032354784535851927777787270906083031994301332316712476158709792455479119092126201854803963934243")
+ + std::string("4956537596739494354730014385180705051250748861328564129344959502298722983162894816461622573989476232")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::glaisher(void)
+{
+ // 1100 digits of Glaisher's constant
+ static const std::string str =
+ std::string("1.")
+ + std::string("2824271291006226368753425688697917277676889273250011920637400217404063088588264611297364919582023743")
+ + std::string("9420646120399000748933157791362775280404159072573861727522143343271434397873350679152573668569078765")
+ + std::string("6114668644999778496275451817431239465276128213808180219264516851546143919901083573730703504903888123")
+ + std::string("4188136749781330509377083368222249411587483734806439997883007012556700128699415770543205392758540581")
+ + std::string("7315881554817629703847432504677751473746000316160230466132963429915580958792933634388728870198895346")
+ + std::string("0725233184702489001091776941712153569193674967261270398013526526688689782188974017293758407501674721")
+ + std::string("1489528881599666874316451389030696264559870469543740253099606800842447417554061490189444139386196089")
+ + std::string("1296821735287986298843422036698990060698088878584958749408530734711709013266756750331052340522105414")
+ + std::string("1767761563081919199971852370477613123153741353047258198147974517610275408349431438496523413945337306")
+ + std::string("5832325673954957601692256427736926358821692159870775858274695751628415506485858908341282275562095470")
+ + std::string("0291859326307937337694207752229094018708695195737807113096673517703001997619162841026237527268163782")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::khinchin(void)
+{
+ // 1100 digits of Khinchin's constant
+ static const std::string str =
+ std::string("2.")
+ + std::string("6854520010653064453097148354817956938203822939944629530511523455572188595371520028011411749318476979")
+ + std::string("9515346590528809008289767771641096305179253348325966838185231542133211949962603932852204481940961806")
+ + std::string("8664166428930847788062036073705350103367263357728904990427070272345170262523702354581068631850103237")
+ + std::string("4655803775026442524852869468234189949157306618987207994137235500057935736698933950879021244642075289")
+ + std::string("7414591476930184490506017934993852254704042033779856398310157090222339100002207725096513324604444391")
+ + std::string("9169146085968234821283246228292710126906974182348477675457348986254203392662351862086778136650969658")
+ + std::string("3146995271837448054012195366666049648269890827548115254721177330319675947383719393578106059230401890")
+ + std::string("7113496246737068412217946810740608918276695667117166837405904739368809534504899970471763904513432323")
+ + std::string("7715103219651503824698888324870935399469608264781812056634946712578436664579740977848366204977774868")
+ + std::string("2765697087163192938512899314199518611673792654620563505951385713761697126872299805327673278710513763")
+ + std::string("9563719023145289003058136910904799672757571385043565050641590820999623402779053834180985121278529455")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}
+
+const e_float& ef::golden_ratio(void)
+{
+ // 1100 digits of the golden ratio
+ static const std::string str =
+ std::string("1.")
+ + std::string("6180339887498948482045868343656381177203091798057628621354486227052604628189024497072072041893911374")
+ + std::string("8475408807538689175212663386222353693179318006076672635443338908659593958290563832266131992829026788")
+ + std::string("0675208766892501711696207032221043216269548626296313614438149758701220340805887954454749246185695364")
+ + std::string("8644492410443207713449470495658467885098743394422125448770664780915884607499887124007652170575179788")
+ + std::string("3416625624940758906970400028121042762177111777805315317141011704666599146697987317613560067087480710")
+ + std::string("1317952368942752194843530567830022878569978297783478458782289110976250030269615617002504643382437764")
+ + std::string("8610283831268330372429267526311653392473167111211588186385133162038400522216579128667529465490681131")
+ + std::string("7159934323597349498509040947621322298101726107059611645629909816290555208524790352406020172799747175")
+ + std::string("3427775927786256194320827505131218156285512224809394712341451702237358057727861600868838295230459264")
+ + std::string("7878017889921990270776903895321968198615143780314997411069260886742962267575605231727775203536139362")
+ + std::string("1076738937645560606059216589466759551900400555908950229530942312482355212212415444006470340565734798")
+ ;
+
+ static const e_float val(str.c_str());
+ return val;
+}

Added: sandbox/e_float/libs/e_float/src/functions/elementary/elementary_complex.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/elementary/elementary_complex.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,257 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float_complex.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary_complex.hpp>
+#include <e_float/e_float_elementary_math.hpp>
+#include <e_float/e_float_elementary_trans.hpp>
+
+#include "../../utility/util_power_x_pow_n.h"
+
+std::complex<double> efz::to_double(const ef_complex& z)
+{
+ const double rxd = ef::to_double(z.real());
+ const double ixd = ef::to_double(z.imag());
+
+ return std::complex<double>(rxd, ixd);
+}
+
+bool operator==(const ef_complex& u, const e_float& v) { return ((u.real() == v) && ef::iszero(u.imag())); }
+bool operator!=(const ef_complex& u, const e_float& v) { return ((u.real() != v) || !ef::iszero(u.imag())); }
+
+bool operator==(const e_float& u, const ef_complex& v) { return ((u == v.real()) && ef::iszero(v.imag())); }
+bool operator!=(const e_float& u, const ef_complex& v) { return ((u != v.real()) || !ef::iszero(v.imag())); }
+
+bool operator==(const ef_complex& u, const INT32 n) { return ((u.real() == n) && ef::iszero(u.imag())); }
+bool operator!=(const ef_complex& u, const INT32 n) { return ((u.real() != n) || !ef::iszero(u.imag())); }
+
+bool operator==(const INT32 n, const ef_complex& u) { return ((n == u.real()) && ef::iszero(u.imag())); }
+bool operator!=(const INT32 n, const ef_complex& u) { return ((n != u.real()) || !ef::iszero(u.imag())); }
+
+e_float efz::abs(const ef_complex& z) { return ef::sqrt(efz::norm(z)); }
+e_float efz::arg(const ef_complex& z) { return ef::atan2(z.imag(), z.real()); }
+
+ef_complex efz::polar(const e_float& mod, const e_float& arg)
+{
+ e_float s, c;
+ ef::sincos(arg, &s, &c);
+ return ef_complex(c, s) * mod;
+}
+
+ef_complex efz::sin(const ef_complex& z)
+{
+ e_float sin_x, cos_x, sinh_y, cosh_y;
+
+ ef::sincos (z.real(), &sin_x, &cos_x);
+ ef::sinhcosh(z.imag(), &sinh_y, &cosh_y);
+
+ return ef_complex(sin_x * cosh_y, cos_x * sinh_y);
+}
+
+ef_complex efz::cos(const ef_complex& z)
+{
+ e_float sin_x, cos_x, sinh_y, cosh_y;
+
+ ef::sincos (z.real(), &sin_x, &cos_x);
+ ef::sinhcosh(z.imag(), &sinh_y, &cosh_y);
+
+ return ef_complex(cos_x * cosh_y, -(sin_x * sinh_y));
+}
+
+void efz::sincos(const ef_complex& z, ef_complex* const p_sin, ef_complex* const p_cos)
+{
+ e_float sin_x, cos_x, sinh_y, cosh_y;
+
+ ef::sincos (z.real(), &sin_x, &cos_x);
+ ef::sinhcosh(z.imag(), &sinh_y, &cosh_y);
+
+ const bool b_wants_sin = (p_sin != static_cast<ef_complex* const>(0u));
+ const bool b_wants_cos = (p_cos != static_cast<ef_complex* const>(0u));
+
+ if(b_wants_sin) { *p_sin = ef_complex(sin_x * cosh_y, cos_x * sinh_y); }
+ if(b_wants_cos) { *p_cos = ef_complex(cos_x * cosh_y, -(sin_x * sinh_y)); }
+}
+
+ef_complex efz::tan(const ef_complex& z)
+{
+ ef_complex s, c;
+ efz::sincos(z, &s, &c);
+ return s * efz::inv(c);
+}
+
+ef_complex efz::csc(const ef_complex& z) { return efz::inv(efz::sin(z)); }
+ef_complex efz::sec(const ef_complex& z) { return efz::inv(efz::cos(z)); }
+ef_complex efz::cot(const ef_complex& z) { return efz::inv(efz::tan(z)); }
+
+ef_complex efz::asin(const ef_complex& z)
+{
+ return -efz::iz(efz::log(efz::iz(z) + efz::sqrt(ef::one() - (z * z))));
+}
+
+ef_complex efz::acos(const ef_complex& z)
+{
+ return ef_complex(ef::pi_half(), ef::zero()) - efz::asin(z);
+}
+
+ef_complex efz::atan(const ef_complex& z)
+{
+ const ef_complex izz = efz::iz(z);
+ return efz::iz(efz::log(ef::one() - izz) - efz::log(ef::one() + izz)) / static_cast<INT32>(2);
+}
+
+ef_complex efz::inv(const ef_complex& z)
+{
+ // Compute inverse 1 / (x + iy) = (x - iy) / (x^2 + y^2)
+ return ef_complex(z.real(), -z.imag()) * efz::norm(z).calculate_inv();
+}
+
+ef_complex efz::sqrt(const ef_complex& z)
+{
+ // Equation from MPFUN documentation page 12.
+ // See: http://www.nersc.gov/~dhb/mpdist/mpdist.html
+
+ // Pure zero?
+ if(ef::iszero(z))
+ {
+ return ef::zero();
+ }
+ else
+ {
+ // sqrt(*this) = (s, I / 2s) for R >= 0
+ // (|I| / 2s, +-s) for R < 0
+ // where s = sqrt{ [ |R| + sqrt(R^2 + I^2) ] / 2 },
+ // and the +- sign is the same as the sign of I.
+ const e_float s = ef::sqrt((ef::fabs(z.real()) + efz::abs(z)) / static_cast<INT32>(2));
+
+ if(ef::iszero(z.real()) || !ef::isneg(z.real()))
+ {
+ return ef_complex(s, (z.imag() / s) / static_cast<INT32>(2));
+ }
+ else
+ {
+ const bool imag_is_pos = ef::iszero(z.imag()) || (!ef::isneg(z.imag()));
+
+ return ef_complex((ef::fabs(z.imag()) / s) / static_cast<INT32>(2), (imag_is_pos ? s : -s));
+ }
+ }
+}
+
+ef_complex efz::exp(const ef_complex& z)
+{
+ e_float s, c;
+ ef::sincos(z.imag(), &s, &c);
+ return ef_complex(c , s) * ef::exp(z.real());
+}
+
+ef_complex efz::log(const ef_complex& z)
+{
+ return ef_complex(ef::log(efz::norm(z)) / static_cast<INT32>(2), ef::atan2(z.imag(), z.real()));
+}
+
+ef_complex efz::log10(const ef_complex& z)
+{
+ return efz::log(z) / ef::ln10();
+}
+
+ef_complex efz::loga(const ef_complex& a, const ef_complex& z)
+{
+ return efz::log(z) / efz::log(a);
+}
+
+ef_complex efz::pown(const ef_complex& z, const INT64 p)
+{
+ return Util::x_pow_n_template<ef_complex>(z, p);
+}
+
+ef_complex efz::pow(const ef_complex& z, const ef_complex& a)
+{
+ return (ef::isint(a) ? efz::pown(z, ef::to_int64(a.real()))
+ : efz::exp(a * efz::log(z)));
+}
+
+ef_complex efz::rootn(const ef_complex& z, const INT32 p)
+{
+ if(p < static_cast<INT32>(0))
+ {
+ return efz::pown(ef::one() / z, static_cast<INT64>(-p));
+ }
+ else if(p == static_cast<INT32>(0))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+ else if(p == static_cast<INT32>(1))
+ {
+ return z;
+ }
+ else
+ {
+ return efz::polar(ef::rootn(efz::norm(z), static_cast<INT32>(2) * p), efz::arg(z) / p);
+ }
+}
+
+ef_complex efz::sinh(const ef_complex& z)
+{
+ e_float sin_y, cos_y, sinh_x, cosh_x;
+
+ ef::sincos (z.imag(), &sin_y, &cos_y);
+ ef::sinhcosh(z.real(), &sinh_x, &cosh_x);
+
+ return ef_complex(cos_y * sinh_x, cosh_x * sin_y);
+}
+
+ef_complex efz::cosh(const ef_complex& z)
+{
+ e_float sin_y, cos_y, sinh_x, cosh_x;
+
+ ef::sincos (z.imag(), &sin_y, &cos_y);
+ ef::sinhcosh(z.real(), &sinh_x, &cosh_x);
+
+ return ef_complex(cos_y * cosh_x, sin_y * sinh_x);
+}
+
+void efz::sinhcosh(const ef_complex& z, ef_complex* const p_sinh, ef_complex* const p_cosh)
+{
+ e_float sin_y, cos_y, sinh_x, cosh_x;
+
+ ef::sincos (z.imag(), &sin_y, &cos_y);
+ ef::sinhcosh(z.real(), &sinh_x, &cosh_x);
+
+ const bool b_wants_sinh = (p_sinh != static_cast<ef_complex* const>(0u));
+ const bool b_wants_cosh = (p_cosh != static_cast<ef_complex* const>(0u));
+
+ if(b_wants_sinh) { *p_sinh = ef_complex(cos_y * sinh_x, cosh_x * sin_y); }
+ if(b_wants_cosh) { *p_cosh = ef_complex(cos_y * cosh_x, sin_y * sinh_x); }
+}
+
+ef_complex efz::tanh(const ef_complex& z)
+{
+ ef_complex sh, ch;
+ efz::sinhcosh(z, &sh, &ch);
+ return sh * efz::inv(ch);
+}
+
+ef_complex efz::asinh(const ef_complex& z)
+{
+ return efz::log(z + efz::sqrt((z * z) + ef::one()));
+}
+
+ef_complex efz::acosh(const ef_complex& z)
+{
+ const ef_complex zp(z.real() + ef::one(), z.imag());
+ const ef_complex zm(z.real() - ef::one(), z.imag());
+
+ return efz::log(z + (zp * efz::sqrt(zm / zp)));
+}
+
+ef_complex efz::atanh(const ef_complex& z)
+{
+ return (efz::log(ef::one() + z) - efz::log(ef::one() - z)) / static_cast<INT32>(2);
+}

Added: sandbox/e_float/libs/e_float/src/functions/elementary/elementary_hyper_g.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/elementary/elementary_hyper_g.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,319 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <vector>
+#include <algorithm>
+#include <numeric>
+#include <functional>
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+
+e_float ef::hyp0F0(const e_float& x)
+{
+ // Compute the series representation of Hypergeometric0F0 taken from
+ // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric0F0/06/01/
+ // There are no checks on input range or parameter boundaries.
+
+ e_float x_pow_n_div_n_fact(x);
+
+ e_float H0F0 = ef::one() + x_pow_n_div_n_fact;
+
+ INT32 n;
+
+ // Series expansion of hyperg_0f0(; ; x).
+ for(n = static_cast<INT32>(2); n < ef::max_iteration(); n++)
+ {
+ x_pow_n_div_n_fact *= x;
+ x_pow_n_div_n_fact /= n;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(x_pow_n_div_n_fact.order() - H0F0.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ H0F0 += x_pow_n_div_n_fact;
+ }
+
+ return ((n < ef::max_iteration()) ? H0F0 : std::numeric_limits<e_float>::quiet_NaN());
+}
+
+e_float ef::hyp0F1(const e_float& b, const e_float& x)
+{
+ // Compute the series representation of Hypergeometric0F1 taken from
+ // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric0F1/06/01/01/
+ // There are no checks on input range or parameter boundaries.
+
+ e_float x_pow_n_div_n_fact(x);
+ e_float pochham_b (b);
+ e_float bp (b);
+
+ e_float H0F1 = ef::one() + (x_pow_n_div_n_fact / pochham_b);
+
+ INT32 n;
+
+ // Series expansion of hyperg_0f1(; b; x).
+ for(n = static_cast<INT32>(2); n < ef::max_iteration(); n++)
+ {
+ x_pow_n_div_n_fact *= x;
+ x_pow_n_div_n_fact /= n;
+
+ pochham_b *= ++bp;
+
+ const e_float term = x_pow_n_div_n_fact / pochham_b;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(term.order() - H0F1.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ H0F1 += term;
+ }
+
+ return ((n < ef::max_iteration()) ? H0F1 : std::numeric_limits<e_float>::quiet_NaN());
+}
+
+e_float ef::hyp1F0(const e_float& a, const e_float& x)
+{
+ // Compute the series representation of Hypergeometric1F0 taken from
+ // http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F0/06/01/01/
+ // and also see the corresponding section for the power function (i.e. x^a).
+ // There are no checks on input range or parameter boundaries.
+
+ e_float x_pow_n_div_n_fact(x);
+ e_float pochham_a (a);
+ e_float ap (a);
+
+ e_float H1F0 = ef::one() + (pochham_a * x_pow_n_div_n_fact);
+
+ INT32 n;
+
+ // Series expansion of hyperg_1f0(a; ; x).
+ for(n = static_cast<INT32>(2); n < ef::max_iteration(); n++)
+ {
+ x_pow_n_div_n_fact *= x;
+ x_pow_n_div_n_fact /= n;
+
+ pochham_a *= ++ap;
+
+ const e_float term = pochham_a * x_pow_n_div_n_fact;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(term.order() - H1F0.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ H1F0 += term;
+ }
+
+ return ((n < ef::max_iteration()) ? H1F0 : std::numeric_limits<e_float>::quiet_NaN());
+}
+
+e_float ef::hyp1F1(const e_float& a, const e_float& b, const e_float& x)
+{
+ // Compute the series representation of hyperg_1f1 taken from
+ // Abramowitz and Stegun 13.1.2, page 504.
+ // There are no checks on input range or parameter boundaries.
+
+ e_float x_pow_n_div_n_fact(x);
+ e_float pochham_a (a);
+ e_float pochham_b (b);
+ e_float ap (a);
+ e_float bp (b);
+
+ e_float H1F1 = ef::one() + ((pochham_a / pochham_b) * x_pow_n_div_n_fact);
+
+ INT32 n;
+
+ // Series expansion of hyperg_1f1(a, b ; x).
+ for(n = static_cast<INT32>(2); n < ef::max_iteration(); n++)
+ {
+ x_pow_n_div_n_fact *= x;
+ x_pow_n_div_n_fact /= n;
+
+ pochham_a *= ++ap;
+ pochham_b *= ++bp;
+
+ const e_float term = (pochham_a / pochham_b) * x_pow_n_div_n_fact;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(term.order() - H1F1.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ H1F1 += term;
+ }
+
+ return ((n < ef::max_iteration()) ? H1F1 : std::numeric_limits<e_float>::quiet_NaN());
+}
+
+e_float ef::hyp2F0(const e_float& a, const e_float& b, const e_float& x)
+{
+ // Compute the series representation of hyperg_2f0.
+ // There are no checks on input range or parameter boundaries.
+
+ e_float x_pow_n_div_n_fact(x);
+ e_float pochham_a (a);
+ e_float pochham_b (b);
+ e_float ap (a);
+ e_float bp (b);
+
+ e_float H2F0 = ef::one() + ((pochham_a * pochham_b) * x_pow_n_div_n_fact);
+
+ INT32 n;
+
+ // Series expansion of hyperg_2f0(a, b; ; x).
+ for(n = static_cast<INT32>(2); n < ef::max_iteration(); n++)
+ {
+ x_pow_n_div_n_fact *= x;
+ x_pow_n_div_n_fact /= n;
+
+ pochham_a *= ++ap;
+ pochham_b *= ++bp;
+
+ const e_float term = (pochham_a * pochham_b) * x_pow_n_div_n_fact;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(term.order() - H2F0.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ H2F0 += term;
+ }
+
+ return ((n < ef::max_iteration()) ? H2F0 : std::numeric_limits<e_float>::quiet_NaN());
+}
+
+e_float ef::hyp2F1(const e_float& a, const e_float& b, const e_float& c, const e_float& x)
+{
+ // Compute the series representation of hyperg_2f1 taken from
+ // Abramowitz and Stegun 15.1.1.
+ // There are no checks on input range or parameter boundaries.
+
+ e_float x_pow_n_div_n_fact(x);
+ e_float pochham_a (a);
+ e_float pochham_b (b);
+ e_float pochham_c (c);
+ e_float ap (a);
+ e_float bp (b);
+ e_float cp (c);
+
+ e_float H2F1 = ef::one() + (((pochham_a * pochham_b) / pochham_c) * x_pow_n_div_n_fact);
+
+ INT32 n;
+
+ // Series expansion of hyperg_2f1(a, b; c; x).
+ for(n = static_cast<INT32>(2); n < ef::max_iteration(); n++)
+ {
+ x_pow_n_div_n_fact *= x;
+ x_pow_n_div_n_fact /= n;
+
+ pochham_a *= ++ap;
+ pochham_b *= ++bp;
+ pochham_c *= ++cp;
+
+ const e_float term = ((pochham_a * pochham_b) / pochham_c) * x_pow_n_div_n_fact;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(term.order() - H2F1.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ H2F1 += term;
+ }
+
+ return ((n < ef::max_iteration()) ? H2F1 : std::numeric_limits<e_float>::quiet_NaN());
+}
+
+e_float ef::hypPFQ(const std::deque<e_float>& a, const std::deque<e_float>& b, const e_float& x)
+{
+ // Compute the series representation of hyperg_pfq.
+ // There are no checks on input range or parameter boundaries.
+
+ e_float x_pow_n_div_n_fact(x);
+
+ // The pochhammer symbols for the multiplications in the series expansion
+ // will be stored in STL-containers.
+ std::vector<e_float> ap(a.begin(), a.end());
+ std::vector<e_float> bp(b.begin(), b.end());
+
+ // Initialize the pochhammer product terms with the products of the form:
+ // [(a0)_1 * (a1)_1 * (a2)_1 * ...], or [(b0)_1 * (b1)_1 * (b2)_1 * ...].
+ e_float pochham_a = std::accumulate(ap.begin(), ap.end(), ef::one(), std::multiplies<e_float>());
+ e_float pochham_b = std::accumulate(bp.begin(), bp.end(), ef::one(), std::multiplies<e_float>());
+
+ e_float HPFQ = ef::one() + ((pochham_a / pochham_b) * x_pow_n_div_n_fact);
+
+ INT32 n;
+
+ // Series expansion of hyperg_pfq[{a0, a1, a2, ...}; {b0, b1, b2, ...}; x].
+ for(n = static_cast<INT32>(2); n < ef::max_iteration(); n++)
+ {
+ x_pow_n_div_n_fact *= x;
+ x_pow_n_div_n_fact /= n;
+
+ // Increment each of the pochhammer elements in a and b.
+ std::transform(ap.begin(), ap.end(), ap.begin(), std::bind1st(std::plus<e_float>(), ef::one()));
+ std::transform(bp.begin(), bp.end(), bp.begin(), std::bind1st(std::plus<e_float>(), ef::one()));
+
+ // Multiply the pochhammer product terms with the products of the incremented
+ // pochhammer elements. These are products of the form:
+ // [(a0)_k * (a1)_k * (a2)_k * ...], or [(b0)_k * (b1)_k * (b2)_k * ...].
+ pochham_a *= std::accumulate(ap.begin(), ap.end(), ef::one(), std::multiplies<e_float>());
+ pochham_b *= std::accumulate(bp.begin(), bp.end(), ef::one(), std::multiplies<e_float>());
+
+ const e_float term = (pochham_a / pochham_b) * x_pow_n_div_n_fact;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(term.order() - HPFQ.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ HPFQ += term;
+ }
+
+ return ((n < ef::max_iteration()) ? HPFQ : std::numeric_limits<e_float>::quiet_NaN());
+}

Added: sandbox/e_float/libs/e_float/src/functions/elementary/elementary_math.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/elementary/elementary_math.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,229 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float_complex.hpp>
+#include <e_float/e_float_elementary.hpp>
+
+#if defined(__GNUC__)
+ static inline INT32 _isnan (double x) { return static_cast<INT32>(std::isnan <double>(x)); }
+ static inline INT32 _finite(double x) { return static_cast<INT32>(std::isfinite<double>(x)); }
+#endif
+
+e_float ef::floor(const e_float& x)
+{
+ if(!ef::isfinite(x) || ef::isint(x)) { return x; }
+
+ return ef::isneg(x) ? ef::integer_part(x - ef::one())
+ : ef::integer_part(x);
+}
+
+e_float ef::ceil(const e_float& x)
+{
+ if(!ef::isfinite(x) || ef::isint(x)) { return x; }
+
+ return ef::isneg(x) ? ef::integer_part(x)
+ : ef::integer_part(x + ef::one());
+}
+
+INT32 ef::sgn(const e_float& x)
+{
+ if(ef::iszero(x))
+ {
+ return static_cast<INT32>(0);
+ }
+ else
+ {
+ return (ef::isneg(x) ? static_cast<INT32>(-1) : static_cast<INT32>(1));
+ }
+}
+
+bool ef::isfinite(const double x) { return static_cast<INT32>(::_finite(x)) == static_cast<INT32>(1); }
+bool ef::isnan (const double x) { return static_cast<INT32>(::_isnan (x)) == static_cast<INT32>(1); }
+
+double ef::to_double(const e_float& x) { return x.extract_double(); }
+double ef::to_double(const ef_complex& z) { return ef::to_double(z.real()); }
+
+INT64 ef::to_int64(const double x) { return static_cast<INT64>(x); }
+INT64 ef::to_int64(const e_float& x) { return x.extract_int64(); }
+INT64 ef::to_int64(const ef_complex& z) { return ef::to_int64(z.real()); }
+
+bool ef::isint(const double x)
+{
+ static const double delta = (std::numeric_limits<double>::min)() * 2.0;
+
+ const double xx = ::fabs(x);
+
+ if((xx - ::floor(xx)) < delta)
+ {
+ return true;
+ }
+ else if((::ceil(xx) - xx) < delta)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+INT32 ef::to_int32(const double x)
+{
+ static const INT64 n32_max = static_cast<INT64>((std::numeric_limits<INT32>::max)());
+ static const INT64 n32_min = static_cast<INT64>((std::numeric_limits<INT32>::min)());
+
+ INT64 n64 = ef::to_int64(x);
+
+ if(n64 < n32_min) { n64 = n32_min; }
+ if(n64 > n32_max) { n64 = n32_max; }
+
+ return static_cast<INT32>(n64);
+}
+
+INT32 ef::to_int32(const e_float& x)
+{
+ static const INT64 n32_max = static_cast<INT64>((std::numeric_limits<INT32>::max)());
+ static const INT64 n32_min = static_cast<INT64>((std::numeric_limits<INT32>::min)());
+
+ INT64 n64 = ef::to_int64(x);
+
+ if(n64 < n32_min) { n64 = n32_min; }
+ if(n64 > n32_max) { n64 = n32_max; }
+
+ return static_cast<INT32>(n64);
+}
+
+INT32 ef::to_int32(const ef_complex& z)
+{
+ return ef::to_int32(z.real());
+}
+
+void ef::to_parts(const e_float& x, double& mantissa, INT64& exponent)
+{
+ x.extract_parts(mantissa, exponent);
+}
+
+e_float ef::integer_part(const e_float& x)
+{
+ return x.extract_integer_part();
+}
+
+e_float ef::decimal_part(const e_float& x)
+{
+ return x.extract_decimal_part();
+}
+
+bool ef::small_arg(const double x)
+{
+ static const double one_sixth = 1.0 / 6.0;
+ static const double small_tol = ::pow(std::numeric_limits<double>::epsilon(), one_sixth);
+
+ return (::fabs(x) < small_tol);
+}
+
+bool ef::small_arg(const e_float& x)
+{
+ static const double lim_d = static_cast<double>(static_cast<INT32>(ef::tol())) / 10.0;
+ static const INT64 lim_n = static_cast<INT64>(lim_d);
+ static const INT64 lim = (lim_n < 6 ? 6 : lim_n);
+
+ return x.order() < -lim;
+}
+
+bool ef::small_arg(const ef_complex& z)
+{
+ return ef::small_arg(efz::abs(z));
+}
+
+bool ef::large_arg(const double x)
+{
+ static const double one_sixth = 1.0 / 6.0;
+ static const double small_tol = ::pow(std::numeric_limits<double>::epsilon(), one_sixth);
+ static const double large_tol = 1.0 / small_tol;
+
+ return ::fabs(x) > large_tol;
+}
+
+bool ef::large_arg(const e_float& x)
+{
+ static const double lim_d = static_cast<double>(static_cast<INT32>(ef::tol())) / 10.0;
+ static const INT64 lim_n = static_cast<INT64>(lim_d);
+ static const INT64 lim = (lim_n < 6 ? 6 : lim_n);
+
+ return x.order() > lim;
+}
+
+bool ef::large_arg(const ef_complex& z) { return ef::large_arg(z.real()); }
+
+bool ef::near_one(const double x) { return ef::small_arg(::fabs(1.0 - x)); }
+bool ef::near_one(const e_float& x) { return ef::small_arg(ef::fabs(ef::one() - x)); }
+bool ef::near_one(const ef_complex& z) { return ef::near_one(z.real()) && ef::iszero(z.imag()); }
+
+bool ef::near_int(const double x)
+{
+ if(ef::isint(x))
+ {
+ return true;
+ }
+ else
+ {
+ const double xx = ::fabs(x);
+
+ if(ef::small_arg(xx - ::floor(xx)))
+ {
+ return true;
+ }
+ else if(ef::small_arg(::ceil(xx) - xx))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+}
+
+bool ef::near_int(const e_float& x)
+{
+ if(ef::isint(x))
+ {
+ return true;
+ }
+ else
+ {
+ const e_float xx = ef::fabs(x);
+
+ if(ef::small_arg(xx - ef::floor(xx)))
+ {
+ return true;
+ }
+ else if(ef::small_arg(ef::ceil(xx) - xx))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+}
+
+bool ef::near_int(const ef_complex& z)
+{
+ if(ef::isint(z))
+ {
+ return true;
+ }
+ else
+ {
+ return ef::iszero(z.imag()) && ef::near_int(z.real());
+ }
+}

Added: sandbox/e_float/libs/e_float/src/functions/elementary/elementary_trans.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/elementary/elementary_trans.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,638 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <vector>
+#include <numeric>
+#include <map>
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+
+#include "../../utility/util_lexical_cast.h"
+#include "../../utility/util_power_x_pow_n.h"
+
+namespace ElementaryTrans_Series
+{
+ static e_float rootn_inv(const e_float& x, const INT32 p);
+}
+
+e_float ef::pown(const e_float& x, const INT64 p)
+{
+ return Util::x_pow_n_template<e_float>(x, p);
+}
+
+e_float ef::pow2(const INT64 p)
+{
+ // Compute two raised to the power of p, in other words 2^p.
+ switch(p)
+ {
+ case static_cast<INT64>(-4):
+ return ef::sixteenth();
+ case static_cast<INT64>(-3):
+ return ef::eighth();
+ case static_cast<INT64>(-2):
+ return ef::quarter();
+ case static_cast<INT64>(-1):
+ return ef::half();
+ case static_cast<INT64>(0):
+ return ef::one();
+ case static_cast<INT64>(1):
+ return ef::two();
+ case static_cast<INT64>(2):
+ return ef::four();
+ case static_cast<INT64>(3):
+ return ef::eight();
+ default:
+ break;
+ }
+
+ if(p < static_cast<INT64>(0))
+ {
+ return ef::pow2(static_cast<INT64>(-p)).calculate_inv();
+ }
+ else if(p < static_cast<INT64>(std::numeric_limits<UINT64>::digits))
+ {
+ const UINT64 p2 = static_cast<UINT64>(static_cast<UINT64>(1uLL) << p);
+ return e_float(p2);
+ }
+ else
+ {
+ return Util::x_pow_n_template(ef::two(), p);
+ }
+}
+
+static e_float ElementaryTrans_Series::rootn_inv(const e_float& x, const INT32 p)
+{
+ // Compute the value of [1 / (rootn of x)] with n = p.
+
+ // Generate the initial estimate using 1 / rootn.
+ // Extract the mantissa and exponent for a "manual"
+ // computation of the estimate.
+ double dd;
+ INT64 ne;
+ ef::to_parts(x, dd, ne);
+
+ // Adjust exponent and mantissa such that ne is an even power of p.
+ while(ne % static_cast<INT64>(p))
+ {
+ ++ne;
+ dd /= 10.0;
+ }
+
+ // Estimate the one over the root using simple manipulations.
+ const double one_over_rtn_d = ::pow(dd, -1.0 / static_cast<double>(p));
+
+ // Set the result equal to the initial guess.
+ e_float result(one_over_rtn_d, static_cast<INT64>(-ne / p));
+
+ static const INT32 double_digits10_minus_one = static_cast<INT32>(static_cast<INT32>(std::numeric_limits<double>::digits10) - static_cast<INT32>(1));
+
+ for(INT32 digits = double_digits10_minus_one; digits <= static_cast<INT32>(ef::tol()); digits *= static_cast<INT32>(2))
+ {
+ // Adjust precision of the terms.
+ result.precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+
+ // Next iteration
+ e_float term = (((-ef::pown(result, p) * x) + ef::one()) / p) + ef::one();
+
+ term.precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+
+ result *= term;
+
+ }
+
+ result.precision(static_cast<INT32>(ef::tol()));
+
+ return result;
+}
+
+e_float ef::inv (const e_float& x) { return e_float(x).calculate_inv(); }
+e_float ef::sqrt(const e_float& x) { return e_float(x).calculate_sqrt(); }
+
+e_float ef::cbrt(const e_float& x)
+{
+ return ef::rootn(x, static_cast<INT32>(3));
+}
+
+e_float ef::rootn(const e_float& x, const INT32 p)
+{
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(p < static_cast<INT32>(0))
+ {
+ return ef::rootn(ef::one() / x, static_cast<INT32>(-p));
+ }
+
+ if((p == static_cast<INT32>(0)) || ef::isneg(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+ else if(p == static_cast<INT32>(1))
+ {
+ return x;
+ }
+ else if(p == static_cast<INT32>(2))
+ {
+ return ef::sqrt(x);
+ }
+ else if((p == static_cast<INT32>(3)) && x.has_its_own_cbrt())
+ {
+ return e_float::my_cbrt(x);
+ }
+
+ const e_float rtn = (x.has_its_own_rootn() ? e_float::my_rootn(x, p)
+ : ElementaryTrans_Series::rootn_inv(x, p).calculate_inv());
+
+ return rtn;
+}
+
+e_float ef::exp(const e_float& x)
+{
+ if(x.has_its_own_exp())
+ {
+ return e_float::my_exp(x);
+ }
+
+ // Handle special arguments.
+ if(ef::isnan(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(ef::isinf(x))
+ {
+ return (!ef::isneg(x) ? std::numeric_limits<e_float>::infinity() : ef::zero());
+ }
+
+ if(ef::iszero(x) || x.order() < -ef::tol())
+ {
+ return ef::one();
+ }
+
+ // Get local copy of argument and force it to be positive.
+ const bool bo_x_is_neg = ef::isneg(x);
+
+ const e_float xx = !bo_x_is_neg ? x : -x;
+
+ // Check the range of the argument.
+ static const e_float maximum_arg_for_exp = e_float(std::numeric_limits<e_float>::max_exponent);
+
+ if(xx > maximum_arg_for_exp)
+ {
+ // Overflow / underflow
+ return !bo_x_is_neg ? std::numeric_limits<e_float>::infinity() : ef::zero();
+ }
+
+ // Check for pure-integer arguments which can be either signed or unsigned.
+ if(ef::isint(x))
+ {
+ return ef::pown(ef::exp1(), ef::to_int64(x));
+ }
+
+ // The algorithm for exp has been taken from MPFUN.
+ // exp(t) = [ (1 + r + r^2/2! + r^3/3! + r^4/4! ...)^p2 ] * 2^n
+ // where p2 is a power of 2 such as 512, r = t_prime / p2, and
+ // t_prime = t - n*ln2, with n chosen to minimize the absolute
+ // value of t_prime. In the resulting Taylor series, which is
+ // implemented as a hypergeometric function, |r| is bounded by
+ // ln2 / p2. For small arguments, no scaling is done.
+
+ static const e_float one_over_ln2 = ef::one() / ef::ln2();
+
+ e_float nf = ef::integer_part(xx * one_over_ln2);
+
+ // Scaling.
+ static const INT32 p2 = static_cast<INT32>(UINT32(1u) << 11);
+
+ const bool b_scale = xx.order() > static_cast<INT64>(-4);
+
+ // Compute the exponential series of the (possibly) scaled argument.
+ e_float exp_series = ef::hyp0F0(b_scale ? (xx - nf * ef::ln2()) / p2 : xx);
+
+ if(b_scale)
+ {
+ exp_series = ef::pown(exp_series, p2);
+ exp_series *= ef::pow2(ef::to_int64(nf));
+ }
+
+ return ((!bo_x_is_neg) ? exp_series : exp_series.calculate_inv());
+}
+
+namespace Log_Series
+{
+ static e_float AtOne(const e_float& x)
+ {
+ // This subroutine computes the series representation of Log[1 + x]
+ // for small x without losing precision.
+
+ // http://functions.wolfram.com/ElementaryFunctions/Log/26/01/01/
+
+ return x * ef::hyp2F1( ef::one(), ef::one(), ef::two(), -x);
+ }
+}
+
+e_float ef::log(const e_float& x)
+{
+ // Handle special arguments.
+ if(ef::isnan(x) || ef::isneg(x) || ef::isinf(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(x.has_its_own_log())
+ {
+ return e_float::my_log(x);
+ }
+
+ if(ef::iszero(x))
+ {
+ return -std::numeric_limits<e_float>::infinity();
+ }
+
+ if(ef::isone(x))
+ {
+ return ef::zero();
+ }
+
+ // Make a local copy
+ e_float xx = x;
+
+ // Compute the delta of the argument compared to one.
+ const e_float x_minus_one = xx - ef::one();
+
+ if(ef::near_one(xx))
+ {
+ return Log_Series::AtOne(x_minus_one);
+ }
+
+ // For large arguments, the value will be broken into two parts
+ // in order to facilitate the convergence of the Newton iteration.
+ const bool b_correction = ( (xx.order() > static_cast<INT64>(+1000))
+ || (xx.order() < static_cast<INT64>(-1000)));
+
+ e_float correction;
+
+ if(b_correction)
+ {
+ // The argument xx is of the form a * 10^b.
+ // It will be broken into two parts: log(a) + b * log(10).
+ const bool b_neg_exp = xx.order() < static_cast<INT64>(0);
+
+ // Remove a large power of ten from the argument. But be sure to leave the argument
+ // large enough (or small enough) to avoid entering the near-one range.
+ const INT64 n_order = xx.order();
+ const INT64 n_exp = !b_neg_exp ? n_order : -n_order;
+ const INT64 delta_exp = static_cast<INT64>(n_exp - static_cast<INT64>(8));
+
+ // Convert the scaling power of ten to a string and subsequently to an e_float.
+ const e_float ef_delta_exp("1E" + Util::lexical_cast(delta_exp));
+
+ !b_neg_exp ? xx /= ef_delta_exp : xx *= ef_delta_exp;
+
+ correction = ef::ln10() * e_float(delta_exp);
+
+ if(b_neg_exp)
+ {
+ correction = -correction;
+ }
+ }
+
+ // Generate the initial estimate using double precision log combined with
+ // the exponent for a "manual" computation of the initial iteration estimate.
+
+ static const double lg10_d = ::log(10.0);
+
+ static const INT64 n32_min = static_cast<INT64>((std::numeric_limits<INT32>::min)());
+ static const INT64 n32_max = static_cast<INT64>((std::numeric_limits<INT32>::max)());
+
+ // computation of the estimate.
+ double dd;
+ INT64 ne;
+ ef::to_parts(xx, dd, ne);
+
+ const double nd = ((ne < static_cast<INT64>(0)) ? static_cast<double>(static_cast<INT32>((std::max)(ne, n32_min)))
+ : static_cast<double>(static_cast<INT32>((std::min)(ne, n32_max))));
+
+ const double dlog = ::log(dd) + (nd * lg10_d);
+
+ const double d10 = ((!ef::iszero(dlog)) ? ::log10(::fabs(dlog)) + 0.5 : 0.0);
+
+ const INT64 p10 = (ef::ispos(dlog) ? static_cast<INT64>(d10) : static_cast<INT64>(-d10));
+
+ e_float log_val = ((!ef::iszero(dlog)) ? e_float(dlog / ::pow(10.0, static_cast<double>(static_cast<INT32>(p10))), p10)
+ : x_minus_one);
+
+ // Newton-Raphson iteration
+ static const INT32 double_digits10_minus_one = static_cast<INT32>(static_cast<INT32>(std::numeric_limits<double>::digits10) - static_cast<INT32>(1));
+
+ for(INT32 digits = double_digits10_minus_one; digits <= static_cast<INT32>(ef::tol()); digits *= static_cast<INT32>(2))
+ {
+ // Adjust precision of the terms.
+ log_val.precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+ xx.precision(static_cast<INT32>(digits * static_cast<INT32>(2)));
+
+ const e_float exp_minus_log = ef::exp(-log_val);
+
+ log_val += (xx * exp_minus_log) - ef::one();
+ }
+
+ return ((!b_correction) ? log_val : log_val + correction);
+}
+
+e_float ef::log10(const e_float& x) { return ef::log(x) / ef::ln10(); }
+e_float ef::loga (const e_float& a, const e_float& x) { return ef::log(x) / ef::log(a); }
+e_float ef::log1p(const e_float& x) { return Log_Series::AtOne(x); }
+
+e_float ef::log1p1m2(const e_float& x)
+{
+ // This subroutine calculates the series representation of (1/2) Log[(1 + x) / (1 - x)]
+ // for small x without losing precision.
+
+ if(!ef::isfinite(x))
+ {
+ return x;
+ }
+
+ if((x <= ef::one_minus()) || (x >= ef::one()))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ // for values of x near one.
+ const e_float x2 = x * x;
+ e_float xn = x;
+
+ e_float sum = xn;
+
+ // Series representation of (1/2) Log[(1 + x) / (1 - x)] as given in
+ // Schaum's Outlines: Mathematical Handbook of Formulas and Tables,
+ // Second Edition, equation 22.8, page 136.
+ for(INT32 n = static_cast<INT32>(3); n < ef::max_iteration(); n += static_cast<INT32>(2))
+ {
+ xn *= x2;
+
+ const e_float term = xn / n;
+
+ if(n > static_cast<INT32>(20))
+ {
+ const INT64 order_check = static_cast<INT64>(term.order() - sum.order());
+
+ if(order_check < -ef::tol())
+ {
+ break;
+ }
+ }
+
+ sum += term;
+ }
+
+ return sum;
+}
+
+e_float ef::pow(const e_float& x, const e_float& a)
+{
+ if(!ef::isfinite(x) || ef::isone(a))
+ {
+ return x;
+ }
+
+ if(ef::iszero(x))
+ {
+ return ef::one();
+ }
+
+ if(ef::iszero(a))
+ {
+ return ef::one();
+ }
+
+ const bool bo_a_isint = ef::isint(a);
+
+ if(ef::isneg(x) && !bo_a_isint)
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(a <= ef::one_minus())
+ {
+ return ef::one() / ef::pow(x, -a);
+ }
+
+ const e_float a_int = ef::integer_part(a);
+ const INT64 an = ef::to_int64(a_int);
+ const e_float da = a - a_int;
+
+ if(bo_a_isint)
+ {
+ return ef::pown(x, an);
+ }
+
+ static const e_float nine_tenths = ef::nine() / static_cast<INT32>(10);
+
+ if(ef::ispos(x) && (x > ef::tenth()) && (x < nine_tenths))
+ {
+ if(ef::small_arg(a))
+ {
+ // Series expansion for small a.
+ return ef::hyp0F0(a * ef::log(x));
+ }
+ else
+ {
+ // Series expansion for moderately sized x. Note that for large power of a,
+ // the power of the integer part of a is calculated using the pown function.
+ return ((an != static_cast<INT64>(0)) ? ef::hyp1F0(-da, ef::one() - x) * ef::pown(x, an)
+ : ef::hyp1F0( -a, ef::one() - x));
+ }
+ }
+ else
+ {
+ // Series expansion for pow(x, a). Note that for large power of a, the power
+ // of the integer part of a is calculated using the pown function.
+ return ((an != static_cast<INT64>(0)) ? ef::exp(da * ef::log(x)) * ef::pown(x, an)
+ : ef::exp( a * ef::log(x)));
+ }
+}
+
+e_float ef::sinh(const e_float& x)
+{
+ if(x.has_its_own_sinh())
+ {
+ return e_float::my_sinh(x);
+ }
+
+ if(!ef::isfinite(x))
+ {
+ return x;
+ }
+
+ e_float s;
+ ef::sinhcosh(x, &s, static_cast<e_float*>(0u));
+ return s;
+}
+
+e_float ef::cosh(const e_float& x)
+{
+ if(x.has_its_own_cosh())
+ {
+ return e_float::my_cosh(x);
+ }
+
+ if(!ef::isfinite(x))
+ {
+ return x;
+ }
+
+ e_float c;
+ ef::sinhcosh(x, static_cast<e_float*>(0u), &c);
+ return c;
+}
+
+void ef::sinhcosh(const e_float& x, e_float* const p_sinh, e_float* const p_cosh)
+{
+ if(!ef::isfinite(x) || (!p_sinh && !p_cosh))
+ {
+ return;
+ }
+
+ if(ef::iszero(x))
+ {
+ if(p_sinh)
+ {
+ *p_sinh = ef::zero();
+ }
+
+ if(p_cosh)
+ {
+ *p_cosh = ef::one();
+ }
+
+ return;
+ }
+
+ const e_float e_px = ef::exp(x);
+ const e_float e_mx = ef::one() / e_px;
+
+ if(p_sinh)
+ {
+ *p_sinh = e_px;
+ *p_sinh -= e_mx;
+ p_sinh->div_by_int(2);
+ }
+
+ if(p_cosh)
+ {
+ *p_cosh = e_px;
+ *p_cosh += e_mx;
+ p_cosh->div_by_int(2);
+ }
+}
+
+e_float ef::tanh(const e_float& x)
+{
+ if(x.has_its_own_tanh())
+ {
+ return e_float::my_tanh(x);
+ }
+
+ e_float c, s;
+ ef::sinhcosh(x, &s, &c);
+ return s * c.calculate_inv();
+}
+
+e_float ef::asinh(const e_float& x)
+{
+ if(x.has_its_own_asinh())
+ {
+ return e_float::my_asinh(x);
+ }
+
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(ef::iszero(x))
+ {
+ return ef::zero();
+ }
+ else
+ {
+ const e_float value = ef::log(ef::fabs(x) + ef::sqrt((x * x) + ef::one()));
+
+ return !ef::isneg(x) ? value : -value;
+ }
+}
+
+e_float ef::acosh(const e_float& x)
+{
+ if(x.has_its_own_acosh())
+ {
+ return e_float::my_acosh(x);
+ }
+
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(ef::isneg(x) || x < ef::one())
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(ef::isone(x))
+ {
+ return ef::one();
+ }
+
+ const e_float x_minus_one = x - ef::one();
+
+ if(ef::small_arg(x_minus_one))
+ {
+ return (ef::sqrt2() * ef::sqrt(x_minus_one))
+ * ef::hyp2F1( ef::half(),
+ ef::half(),
+ ef::three_half(),
+ -x_minus_one / static_cast<INT32>(2));
+ }
+ else
+ {
+ return ef::log(x + ef::sqrt((x * x) - ef::one()));
+ }
+}
+
+e_float ef::atanh(const e_float& x)
+{
+ if(x.has_its_own_atanh())
+ {
+ return e_float::my_atanh(x);
+ }
+
+ if(!ef::isfinite(x))
+ {
+ return x;
+ }
+
+ const e_float xx = ef::fabs(x);
+
+ if(xx >= ef::one())
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ const e_float value = (ef::small_arg(x) ? ef::log1p1m2(x)
+ : (ef::log((ef::one() + x) / (ef::one() - x)) / static_cast<INT32>(2)));
+
+ return ((!ef::isneg(xx)) ? value : -value);
+}

Added: sandbox/e_float/libs/e_float/src/functions/elementary/elementary_trig.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/elementary/elementary_trig.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,501 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+// *****************************************************************************
+// Filename : e_float_math.cpp
+//
+// Project : Multiple precision mathematics
+//
+// Date : 28.02.2004
+//
+// Description : Real variable mathematics for e_float.
+//
+// *****************************************************************************
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+
+e_float ef::sin(const e_float& x)
+{
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(x.has_its_own_sin())
+ {
+ return e_float::my_sin(x);
+ }
+
+ // Local copy of the argument
+ e_float xx = x;
+
+ // Analyze and prepare the phase of the argument.
+ // Make a local, positive copy of the argument, xx.
+ // The argument xx will be reduced to 0 <= xx <= pi/2.
+ bool b_negate_sin = false;
+
+ if(ef::isneg(x))
+ {
+ xx = -xx;
+ b_negate_sin = !b_negate_sin;
+ }
+
+ // Remove even multiples of pi.
+ if(xx > ef::pi())
+ {
+ e_float n_pi = ef::integer_part(xx / ef::pi());
+ xx -= n_pi * ef::pi();
+
+ // Adjust signs if the multiple of pi is not even.
+ const bool b_n_pi_is_even = ef::iszero(ef::decimal_part(n_pi / static_cast<INT32>(2)));
+
+ if(!b_n_pi_is_even)
+ {
+ b_negate_sin = !b_negate_sin;
+ }
+ }
+
+ // Reduce the argument to 0 <= xx <= pi/2.
+ if(xx > ef::pi_half())
+ {
+ xx = ef::pi() - xx;
+ }
+
+ const bool b_zero = ef::iszero(xx);
+ const bool b_pi_half = ef::iszero(xx - ef::pi_half());
+
+ // Check if the reduced argument is very close to 0 or pi/2.
+ const bool b_near_zero = ef::small_arg(xx);
+ const e_float delta_pi_half = ef::pi_half() - xx;
+ const bool b_near_pi_half = ef::small_arg(delta_pi_half);
+
+ e_float sin_val;
+
+ if(b_zero)
+ {
+ sin_val = ef::zero();
+ }
+ else if(b_pi_half)
+ {
+ sin_val = ef::one();
+ }
+ else if(b_near_zero)
+ {
+ const e_float x_squared = xx * xx;
+
+ sin_val = xx * ef::hyp0F1(ef::three_half(), -x_squared / static_cast<INT32>(4));
+ }
+ else if(b_near_pi_half)
+ {
+ sin_val = ef::hyp0F1(ef::half(), -(delta_pi_half * delta_pi_half) / static_cast<INT32>(4));
+ }
+ else
+ {
+ // Scale to a small argument for an efficient Taylor series,
+ // implemented as a hypergeometric function. Use a standard
+ // divide by three identity a certain number of times.
+ // Here we use division by 3^9 --> (19683 = 3^9).
+
+ const bool b_scale = (xx.order() > static_cast<INT64>(-4));
+
+ static const INT32 n_scale = static_cast<INT32>(9);
+ static const INT32 n_three_pow_scale = static_cast<INT32>(static_cast<INT64>(::pow(3.0, static_cast<double>(n_scale)) + 0.5));
+
+ if(b_scale)
+ {
+ xx /= n_three_pow_scale;
+ }
+
+ // Now with small arguments, we are ready for a series expansion.
+ sin_val = xx * ef::hyp0F1(ef::three_half(), -(xx * xx) / static_cast<INT32>(4));
+
+ // Convert back using multiple angle identity.
+ if(b_scale)
+ {
+ for(INT32 k = static_cast<INT32>(0); k < n_scale; k++)
+ {
+ // Rescale the cosine value using the multiple angle identity.
+ sin_val = - ((sin_val * (sin_val * sin_val)) * static_cast<INT32>(4))
+ + (sin_val * static_cast<INT32>(3));
+ }
+ }
+ }
+
+ return ((!b_negate_sin) ? sin_val : -sin_val);
+}
+
+e_float ef::cos(const e_float& x)
+{
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(x.has_its_own_cos())
+ {
+ return e_float::my_cos(x);
+ }
+
+ // Local copy of the argument
+ e_float xx = x;
+
+ // Analyze and prepare the phase of the argument.
+ // Make a local, positive copy of the argument, xx.
+ // The argument xx will be reduced to 0 <= xx <= pi/2.
+ bool b_negate_cos = false;
+
+ if(ef::isneg(x))
+ {
+ xx = -xx;
+ }
+
+ // Remove even multiples of pi.
+ if(xx > ef::pi())
+ {
+ e_float n_pi = ef::integer_part(xx / ef::pi());
+ xx -= n_pi * ef::pi();
+
+ // Adjust signs if the multiple of pi is not even.
+ const bool b_n_pi_is_even = ef::iszero(ef::decimal_part(n_pi / static_cast<INT32>(2)));
+
+ if(!b_n_pi_is_even)
+ {
+ b_negate_cos = !b_negate_cos;
+ }
+ }
+
+ // Reduce the argument to 0 <= xx <= pi/2.
+ if(xx > ef::pi_half())
+ {
+ xx = ef::pi() - xx;
+ b_negate_cos = !b_negate_cos;
+ }
+
+ const bool b_zero = ef::iszero(xx);
+ const bool b_pi_half = ef::iszero(xx - ef::pi_half());
+
+ // Check if the reduced argument is very close to 0 or pi/2.
+ const bool b_near_zero = ef::small_arg(xx);
+ const e_float delta_pi_half = ef::pi_half() - xx;
+ const bool b_near_pi_half = ef::small_arg(delta_pi_half);
+
+ e_float cos_val;
+
+ if(b_zero)
+ {
+ cos_val = ef::one();
+ }
+ else if(b_pi_half)
+ {
+ cos_val = ef::zero();
+ }
+ else if(b_near_zero)
+ {
+ const e_float x_squared = xx * xx;
+
+ cos_val = ef::hyp0F1(ef::half(), -x_squared / static_cast<INT32>(4));
+ }
+ else if(b_near_pi_half)
+ {
+ cos_val = delta_pi_half * ef::hyp0F1(ef::three_half(), -(delta_pi_half * delta_pi_half) / static_cast<INT32>(4));
+ }
+ else
+ {
+ // Scale to a small argument for an efficient Taylor series,
+ // implemented as a hypergeometric function. Use a standard
+ // divide by three identity a certain number of times.
+ // Here we use division by 3^9 --> (19683 = 3^9).
+
+ const bool b_scale = (xx.order() > static_cast<INT64>(-4));
+
+ static const INT32 n_scale = static_cast<INT32>(9);
+ static const INT32 n_three_pow_scale = static_cast<INT32>(static_cast<INT64>(::pow(3.0, static_cast<double>(n_scale)) + 0.5));
+
+ if(b_scale)
+ {
+ xx /= n_three_pow_scale;
+ }
+
+ // Now with small arguments, we are ready for a series expansion.
+ cos_val = ef::hyp0F1(ef::half(), -(xx * xx) / static_cast<INT32>(4));
+
+ // Convert back using multiple angle identity.
+ if(b_scale)
+ {
+ for(INT32 k = static_cast<INT32>(0); k < n_scale; k++)
+ {
+ // Rescale the cosine value using the multiple angle identity.
+ cos_val = ((cos_val * (cos_val * cos_val)) * static_cast<INT32>(4))
+ - (cos_val * static_cast<INT32>(3));
+ }
+ }
+ }
+
+ return ((!b_negate_cos) ? cos_val : -cos_val);
+}
+
+void ef::sincos(const e_float& x, e_float* const p_sin, e_float* const p_cos)
+{
+ if(p_sin != static_cast<e_float*>(0u)) { *p_sin = ef::sin(x); }
+ if(p_cos != static_cast<e_float*>(0u)) { *p_cos = ef::cos(x); }
+}
+
+e_float ef::tan(const e_float& x)
+{
+ if(x.has_its_own_tan())
+ {
+ return e_float::my_tan(x);
+ }
+ else
+ {
+ return ef::sin(x) / ef::cos(x);
+ }
+}
+
+e_float ef::csc(const e_float& x) { return ef::one() / ef::sin(x); }
+e_float ef::sec(const e_float& x) { return ef::one() / ef::cos(x); }
+e_float ef::cot(const e_float& x) { return ef::cos(x) / ef::sin(x); }
+
+e_float ef::asin(const e_float& x)
+{
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(x.has_its_own_asin())
+ {
+ return e_float::my_asin(x);
+ }
+
+ const bool b_neg = ef::isneg(x);
+
+ const e_float xx = !b_neg ? x : -x;
+
+ if(xx > ef::one())
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(ef::iszero(x))
+ {
+ return ef::zero();
+ }
+
+ if(ef::isone(xx))
+ {
+ return ((!b_neg) ? ef::pi_half() : -ef::pi_half());
+ }
+
+ if(ef::small_arg(xx))
+ {
+ // http://functions.wolfram.com/ElementaryFunctions/ArcSin/26/01/01/
+ const e_float asin_value = x * ef::hyp2F1(ef::half(),
+ ef::half(),
+ ef::three_half(),
+ (x * x));
+
+ return !b_neg ? asin_value : -asin_value;
+ }
+ else if(ef::near_one(xx))
+ {
+ const e_float dx1 = ef::one() - xx;
+
+ const e_float asin_value = ef::pi_half()
+ - ( ef::sqrt(dx1 * static_cast<INT32>(2))
+ * ef::hyp2F1(ef::half(),
+ ef::half(),
+ ef::three_half(),
+ dx1 / static_cast<INT32>(2)));
+
+ return ((!b_neg) ? asin_value : -asin_value);
+ }
+
+ // Get initial estimate using standard math function asin.
+ double dd;
+ INT64 ne;
+ ef::to_parts(xx, dd, ne);
+
+ static const INT64 p10_min = static_cast<INT64>(std::numeric_limits<double>::min_exponent10);
+ static const INT64 p10_max = static_cast<INT64>(std::numeric_limits<double>::max_exponent10);
+
+ const double de = static_cast<double>(ne < static_cast<INT64>(0) ? static_cast<INT32>((std::max)(ne, p10_min))
+ : static_cast<INT32>((std::min)(ne, p10_max)));
+
+ e_float value = e_float(::asin(dd * ::pow(10.0, de)));
+
+ // Newton-Raphson iteration
+
+ static const INT32 double_digits10_minus_one = static_cast<INT32>(static_cast<INT32>(std::numeric_limits<double>::digits10) - static_cast<INT32>(1));
+
+ for(INT32 digits = double_digits10_minus_one; digits <= static_cast<INT32>(ef::tol()); digits *= static_cast<INT32>(2))
+ {
+ e_float s, c;
+ ef::sincos(value, &s, &c);
+ value -= (s - xx) / c;
+ }
+
+ return ((!b_neg) ? value : -value);
+}
+
+e_float ef::acos(const e_float& x)
+{
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(x.has_its_own_acos())
+ {
+ return e_float::my_acos(x);
+ }
+
+ if(ef::fabs(x) > ef::one()) { return std::numeric_limits<e_float>::quiet_NaN(); }
+
+ return ef::iszero(x) ? ef::pi_half() : ef::pi_half() - ef::asin(x);
+}
+
+namespace Atan_Series
+{
+ static e_float AtZero (const e_float& x);
+ static e_float AtInfinity(const e_float& x);
+}
+
+static e_float Atan_Series::AtZero(const e_float& x)
+{
+ // http://functions.wolfram.com/ElementaryFunctions/ArcTan/26/01/01/
+ return x * ef::hyp2F1( ef::one(),
+ ef::half(),
+ ef::three_half(),
+ -(x * x));
+}
+
+static e_float Atan_Series::AtInfinity(const e_float& x)
+{
+ // http://functions.wolfram.com/ElementaryFunctions/ArcTan/26/01/01/
+ return ef::pi_half() - ef::hyp2F1( ef::half(),
+ ef::one(),
+ ef::three_half(),
+ -ef::one() / (x * x)) / x;
+}
+
+e_float ef::atan(const e_float& x)
+{
+ if(!ef::isfinite(x))
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+
+ if(x.has_its_own_atan())
+ {
+ return e_float::my_atan(x);
+ }
+
+ const INT64 order = x.order();
+
+ if(x.isinf() || order > ef::tol())
+ {
+ return ef::ispos(x) ? ef::pi_half() : -ef::pi_half();
+ }
+ else if(ef::iszero(x))
+ {
+ return ef::zero();
+ }
+
+ if(ef::small_arg(x))
+ {
+ return Atan_Series::AtZero(x);
+ }
+
+ if(ef::large_arg(x))
+ {
+ return Atan_Series::AtInfinity(x);
+ }
+
+ const bool b_neg = ef::isneg(x);
+
+ const e_float xx = ((!b_neg) ? x : -x);
+
+ // Get initial estimate using standard math function atan or a series
+ // expansion for rather large arguments having order 3 or larger.
+ double dd;
+ INT64 ne;
+ ef::to_parts(xx, dd, ne);
+
+ static const INT64 p10_min = static_cast<INT64>(std::numeric_limits<double>::min_exponent10);
+ static const INT64 p10_max = static_cast<INT64>(std::numeric_limits<double>::max_exponent10);
+
+ const double de = static_cast<double>(ne < static_cast<INT64>(0) ? static_cast<INT32>((std::max)(ne, p10_min))
+ : static_cast<INT32>((std::min)(ne, p10_max)));
+
+ e_float value = order < static_cast<INT64>(2) ? e_float(::atan(dd * ::pow(10.0, de)))
+ : Atan_Series::AtInfinity(xx);
+
+ // Newton-Raphson iteration
+ static const INT32 double_digits10_minus_one = static_cast<INT32>(static_cast<INT32>(std::numeric_limits<double>::digits10) - static_cast<INT32>(1));
+
+ for(INT32 digits = double_digits10_minus_one; digits <= static_cast<INT32>(ef::tol()); digits *= static_cast<INT32>(2))
+ {
+ e_float s, c;
+ ef::sincos(value, &s, &c);
+ value += c * ((xx * c) - s);
+ }
+
+ return !b_neg ? value : -value;
+}
+
+e_float ef::atan2(const e_float& y, const e_float& x)
+{
+ if(!ef::isfinite(x) || !ef::isfinite(y))
+ {
+ return x;
+ }
+
+ // y is zero
+ if(ef::iszero(y))
+ {
+ return (ef::isneg(x) ? ef::pi() : ef::zero());
+ }
+
+ // x is zero
+ if(ef::iszero(x))
+ {
+ return ef::sgn(y) * ef::pi_half();
+ }
+
+ // y is infinite
+ if(y.isinf())
+ {
+ const bool b_pos = ((ef::ispos(x) && ef::ispos(y)) || (ef::isneg(x) && ef::isneg(y)));
+
+ return (b_pos ? std::numeric_limits<e_float>::infinity()
+ : -std::numeric_limits<e_float>::infinity());
+ }
+
+ // Compute atan(y / x), ignoring sign.
+ e_float atan_term(ef::atan(y / x));
+
+ // Determine quadrant (sign) based on signs of x, y
+ const bool y_neg = ef::isneg(y);
+ const bool x_neg = ef::isneg(x);
+
+ if(y_neg == x_neg)
+ {
+ // Both negative or both positive
+ return (x_neg ? atan_term - ef::pi() : atan_term);
+ }
+ else
+ {
+ // Different signs of x, y
+ return (x_neg ? atan_term + ef::pi() : atan_term);
+ }
+}

Added: sandbox/e_float/libs/e_float/src/functions/gamma/factorial.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/gamma/factorial.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,109 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+#include <e_float/e_float_gamma.hpp>
+
+#include "../tables/tables.h"
+
+namespace Factorial_Series
+{
+ e_float AtInfinity(const UINT32 n);
+}
+
+e_float Factorial_Series::AtInfinity(const UINT32 n)
+{
+ const e_float x = e_float(n);
+ e_float one_over_x_pow_two_n_minus_one = ef::one() / x;
+ const e_float one_over_x2 = one_over_x_pow_two_n_minus_one * one_over_x_pow_two_n_minus_one;
+
+ static const e_float B2 = Tables::A000367()[static_cast<std::size_t>(1u)]()
+ / Tables::A002445()[static_cast<std::size_t>(1u)]();
+
+ e_float sum = (B2 * one_over_x_pow_two_n_minus_one) / static_cast<INT32>(2);
+
+ static const std::size_t sz_A000367 = Tables::A000367().size();
+ static const std::size_t sz_A002445 = Tables::A002445().size();
+ static const std::size_t sz_max = (std::min)(sz_A000367, sz_A002445);
+
+ // Perform the Bernoulli series expansion without explicitly calling the function
+ // ef::Bernoulli in order to avoid any recursive calls of ef::factorial. This is
+ // because ef::bernoulli_b calls ef::factorial for large integers.
+
+ for(INT32 k = static_cast<INT32>(2); k < static_cast<INT32>(sz_max); k++)
+ {
+ one_over_x_pow_two_n_minus_one *= one_over_x2;
+
+ const INT32 two_k = static_cast<INT32>(k * static_cast<INT32>(2));
+ const INT32 two_k_minus_one = static_cast<INT32>(two_k - static_cast<INT32>(1));
+
+ const e_float B2k = Tables::A000367()[static_cast<std::size_t>(k)]()
+ / Tables::A002445()[static_cast<std::size_t>(k)]();
+
+ const e_float term = ((B2k * one_over_x_pow_two_n_minus_one) / two_k) / two_k_minus_one;
+
+ if(term.order() < -ef::tol())
+ {
+ break;
+ }
+
+ sum += term;
+ }
+
+ static const e_float half_ln_two_pi = ef::log(ef::two_pi()) / static_cast<INT32>(2);
+
+ return ef::exp(((((x - ef::half()) * ef::log(x)) - x) + half_ln_two_pi) + sum);
+}
+
+e_float ef::factorial(const UINT32 n)
+{
+ return (static_cast<std::size_t>(n) < Tables::A000142().size()) ? Tables::A000142()[n]()
+ : Factorial_Series::AtInfinity(static_cast<UINT32>(n + static_cast<UINT32>(1u)));
+}
+
+e_float ef::binomial(const UINT32 n, const UINT32 k)
+{
+ if(k > n)
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+ else if(k == n)
+ {
+ return ef::one();
+ }
+ else
+ {
+ if(n < static_cast<UINT32>(Tables::A007318().size()))
+ {
+ return Tables::A007318()[static_cast<std::size_t>(n)]()[static_cast<std::size_t>(k)];
+ }
+ else
+ {
+ return ef::factorial(n) / (ef::factorial(k) * ef::factorial(n - k));
+ }
+ }
+}
+
+e_float ef::binomial(const UINT32 n, const e_float& y)
+{
+ return ef::factorial(n) / (ef::gamma(y + ef::one()) * ef::gamma((e_float(n) - y) + ef::one()));
+}
+
+e_float ef::binomial(const e_float& x, const UINT32 k)
+{
+ return ef::gamma(x + ef::one()) / (ef::factorial(k) * ef::gamma((x - e_float(k)) + ef::one()));
+}
+
+e_float ef::binomial(const e_float& x, const e_float& y)
+{
+ return ef::gamma(x + ef::one()) / (ef::gamma(y + ef::one()) * ef::gamma((x - y) + ef::one()));
+}

Added: sandbox/e_float/libs/e_float/src/functions/gamma/factorial2.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/gamma/factorial2.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,74 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float_complex.hpp>
+#include <e_float/e_float_elementary.hpp>
+#include <e_float/e_float_gamma.hpp>
+
+#include "../tables/tables.h"
+
+namespace Factorial2_Series
+{
+ e_float AtInfinity(const INT32 n);
+}
+
+e_float Factorial2_Series::AtInfinity(const INT32 n)
+{
+ const bool n_is_even = static_cast<INT32>(n % static_cast<INT32>(2)) == static_cast<INT32>(0u);
+
+ if(n_is_even)
+ {
+ const UINT32 n_half = static_cast<UINT32>(static_cast<UINT32>(n) / static_cast<UINT32>(2));
+
+ return ef::pow2(static_cast<INT64>(n_half)) * ef::factorial(n_half);
+ }
+ else
+ {
+ const INT32 n_plus_one = static_cast<INT32>(static_cast<INT32>(n) + static_cast<INT32>(1));
+
+ return ef::factorial(static_cast<UINT32>(n_plus_one)) / ef::factorial2(n_plus_one);
+ }
+}
+
+e_float ef::factorial2(const INT32 n)
+{
+ const bool n_is_neg = (n < static_cast<INT32>(0));
+
+ if(!n_is_neg)
+ {
+ return (static_cast<std::size_t>(n) < Tables::A006882().size()) ? Tables::A006882()[n]()
+ : Factorial2_Series::AtInfinity(n);
+ }
+ else
+ {
+ if(n == static_cast<INT32>(-1))
+ {
+ return ef::one();
+ }
+
+ const INT32 nn = (!n_is_neg ? n : static_cast<INT32>(-n));
+ const bool n_is_even = (static_cast<INT32>(nn % static_cast<INT32>(2)) == static_cast<INT32>(0u));
+
+ if(n_is_even)
+ {
+ return std::numeric_limits<e_float>::quiet_NaN();
+ }
+ else
+ {
+ // Double factorial for negative odd integers.
+ const INT32 n_minus_one_over_two = static_cast<INT32>(static_cast<INT32>(nn - static_cast<INT32>(1)) / static_cast<INT32>(2));
+ const bool b_negate = static_cast<INT32>(n_minus_one_over_two % static_cast<INT32>(2)) != static_cast<INT32>(0);
+
+ const e_float f2 = ef::one() / ef::factorial2(static_cast<INT32>(nn - static_cast<INT32>(2)));
+
+ return (!b_negate ? f2 : -f2);
+ }
+ }
+}

Added: sandbox/e_float/libs/e_float/src/functions/gamma/gamma.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/gamma/gamma.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,244 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <numeric>
+
+#include <e_float/e_float_complex.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+#include <e_float/e_float_integer.hpp>
+#include <e_float/e_float_gamma.hpp>
+
+#include "../tables/tables.h"
+#include "../../utility/util_coefficient_expansion.h"
+#include "../../utility/util_digit_scale.h"
+#include "gamma_util.h"
+
+namespace Gamma_Series
+{
+ const std::vector<e_float>& CoefOneOverGammaAtZero(void)
+ {
+ // Series coefficients of 1/gamma[x] to 400 decimal digits of precision.
+ // Extracted from Mathematica Version 4.1 using:
+ // N[Series[1/Gamma[x], {x, 0, 20}], 400]
+ // Table[SeriesCoefficient[%, n], {n, 20}]
+ // Export["c:\\temp\\coef.txt", %, "list"]
+ // The coefficient of (x^1) is 1 and the coefficient of (x^2) is EulerGamma.
+ static const std::tr1::array<e_float, 20u> coef_data =
+ {{
+ ef::one(),
+ ef::euler_gamma(),
+ e_float("-0.6558780715202538810770195151453904812797663804785843472923624456838708383537221020861828159940213640004823766794673960425880273800045120663276349042352029670719647868920256583927459606866272636428716503560447876477020029264993733572853936743624613834732228286244522007087071544720609051364563240296088675489599938359316660318321422152685114387721454550793121583896628767836242712406766501355141085654"),
+ e_float("-0.04200263503409523552900393487542981871139450040110609352206581297618009687597598854710770129478771323353200022200001805792037621099075181447805816907283782783355156941422840681585671757922536196664416350181665682109004334254906673031085386942302647163933719562136186164185652922234123296618703050633022456154116377616684761434108546150201363905266261778775672100038613880494186238891616981359256812529"),
+ e_float("+0.1665386113822914895017007951021052357177815022471743405704689031789938660564742483194719146580416266239559340512887953328435534067790239085961674942407332694546242602880866376070387262496367207086080494302533434060985324494851329241260152920664205323542319634585425345992159996851601411139446646838555765301874799329345794442502091118859615974367643203447574836048889488156231419555751071696734321971"),
+ e_float("-0.04219773455554433674820830128918739130165268418982248637691887327545901118558899606734728429375531504062334826057082510869875342573608881031728336193513216807653051215558592232817158189354800086887093374690761985231094669862796057544336120242135379457098619992409318732513064699294082343694452964488092134178703074119479383139206604543459710454255056686229455745478027704185028721684902564483861681488"),
+ e_float("-0.009621971527876973562114921672348198975362942252113002105138862627311673514460739536466888015658820015733562800356029803723332017419507197553494169877116743012525221376253108885704616876673111525831349233429832639845702227478746003004271641976963298258697182291199410219284964853091797576513483088948247179443482321981474420510403801562538507188880431476146363008815197790256291597231466854822676154536"),
+ e_float("+0.007218943246663099542395010340446572709904800880238318001094781173622594974158542714089090120849888863763580197688859795311415307822774690748268422748882778219306457154065720813703287027418373611063189696287389264012126740635036226069672622811192532111244693818497291437270392053464350242231258452208196814361249731802322058940324639712443939052265996811453388534005459217602808725999963971215780208927"),
+ e_float("-0.001165167591859065112113971084018388666809333795384057443407505275620025848166530722148800109172188515797192888894863669066772517370809868046375622203294817029684730913245113885467980578363470095176347017392442241646234586862652283891629280315418462703268811259855101866764711768855009672612320853542794740964104932696508211319286122820153051919898017312123494771712287419491362072058225406140411120019"),
+ e_float("-0.0002152416741149509728157299630536478064782419233783387503502674890856394637167847391861851194625624815259563219739244945163417211076747477123391086742668973557906175454607228737337091983400046734865215719165942151250609611490595370582548259601169491801275521476262588189925692003213654485091597871400858799644166761772424150734750207019101578462267487952510338819128595535888433239855683688898584219257"),
+ e_float("+0.0001280502823881161861531986263281643233948920996936772149005458380412035520434687587389223798955199755551386484801312995164552307622434192355599981862167102840027210758568419015795376653975972537042214781394208013779609060164253049743961101368403030633183813736201875808775924737002119102356796180501539005893241175032007956168654433971365386229244346745439587609848542929397402454550229243419558216667"),
+ e_float("-0.00002013485478078823865568939142102181838229483329797911526116267090822918618897047762330812383650301882610598611158717931945723532269982416612357113737088330997041202300337442465482349805785560019857678505838147808340261428265467157736711014454674223004617947229087707010849731551472310234902900406148808090505873712222916856506434771262514141240239945017462827997814312257914315173799509409580592227999"),
+ e_float("-1.250493482142670657345359473833092242322655621153959815349923157491212455610792211796228757892295094621846077970315353463508834829915102416793382769258699176937711876791097906964868348037193273974207229913211507712885193827801031655018418659441463872772541489470618445691009164835001388077418133290491428524980227554901591552867473525328143941529948218328641439202885771220946627449251945182703333714e-6"),
+ e_float("+1.133027231981695882374129620330744943324004838621075654295505395460408427303676342059099599341571794151723102554723472282247098515047076970814877245054820361527216773963022956952446219594483308210208907304801101488348848062734625098840906296035467239877276901851067511872545950865225464347561051817490348962059288584407364395282537157756108088904191766662293100072409206551732618605079716933286705185e-6"),
+ e_float("-2.056338416977607103450154130020572836512579026293379453468317253324568037109991871188900376836419475497313953593845935602678421832119064686665246359768127970426304592335249241703427667413130015011643569198543828768405669892358923289301890386377129451006676551195702074350994748934923779785037553155730018542197343217850356691279814564656597210371502101337995794398983674689948759643317988389766813875e-7"),
+ e_float("+6.116095104481415817862498682855342867275865719712320867324029277235074352503861972826211688750122568389248723593760275052110202607289094841928198408739156977044243956049097412356065163620990532543731396877525356196920079422184202257312549571022890099774170257148393843273692290361740154736183615097192651911573292083206887421491192856772933647750427490115120897580598446855104580940274924647813616162e-9"),
+ e_float("+5.002007644469222930055665048059991303044612742494481718953378877374721317711613245138149284064041492607495463035818621192634138138674255799031521408077064669154375661227867987031920077145517025614542160750699253046327614481165280828729590903826540895400924922302845714850348986296988595579237764267997702727230547855413274977607953320860481079313147166661821990367245206182829153066329757101435599756e-9"),
+ e_float("-1.181274570487020144588126565436505577738759504932587590961892631696433914362731439517968288144559739788048758350566671400704726777156064156164018114386575307315494202805215438614394288438629133949868735821855227356344177768519582180435858700409517489758611765199834757506730273652724786075640254440409769591442946310523471108835614728780635461979668551745785999641219440682865730142763528023172889291e-9"),
+ e_float("+1.043426711691100510491540332312250191400709823125812121087107392734758807124820988847060670016098018403228867991155660260908069802732864181290140345583710171861863717571042850540110559715149698077318582760140410483437385783369743279091227248338835597955083612786539728965176160729156453537619398985580910769450857209100810336623880736523569415690948751514525776483744186241841939479643365941249571376e-10"),
+ e_float("+7.782263439905071254049937311360777226068086181392938819435507326929869575078978038827379507664107281913393462406889059435100758544819098632173849066677032230561159253228543787258397911069334455291546933865105252140021359958145198606994108363499673176861344191053751641915087563642143554534989078722037333135067999258209158657882450793530257918827738106564148852026754272154918712839939196672793348702e-12")
+ }};
+
+ static const std::vector<e_float> coef(coef_data.begin(), coef_data.end());
+
+ return coef;
+ }
+}
+
+namespace GammaTemplate
+{
+ template<typename T,
+ typename TR>
+ T gamma(const T& x)
+ {
+ using ef::isfinite;
+ using ef::iszero;
+ using ef::isneg;
+ using ef::isint;
+ using ef::small_arg;
+ using ef::abs;
+ using efz::abs;
+ using ef::tol;
+ using ef::exp;
+ using efz::exp;
+ using ef::log;
+ using efz::log;
+ using ef::real;
+ using efz::real;
+ using ef::sin;
+ using efz::sin;
+ using ef::factorial;
+ using ef::bernoulli;
+ using ef::half;
+ using ef::one;
+ using ef::pi;
+ using ef::pi_half;
+ using ef::two_pi;
+ using ef::max_iteration;
+ using ef::to_int32;
+ using ef::to_int64;
+ using ef::order_of;
+
+ if(!isfinite(x))
+ {
+ return x;
+ }
+
+ const bool b_neg = isneg(real(x));
+
+ if(isint(x))
+ {
+ if(b_neg || iszero(x))
+ {
+ return std::numeric_limits<TR>::quiet_NaN();
+ }
+ else
+ {
+ const INT64 nx = to_int64(x);
+
+ // Possible special handling for (relatively) small, pure integers.
+ if(static_cast<std::size_t>(nx) < Tables::A000142().size())
+ {
+ const INT32 n = static_cast<INT32>(nx - static_cast<INT64>(1));
+
+ return factorial(static_cast<UINT32>(n));
+ }
+ }
+ }
+
+ // Make a local, unsigned copy of the input argument.
+
+ T xx((!b_neg) ? x : -x);
+
+ T G;
+
+ if(small_arg(xx))
+ {
+ static const T tz(0u);
+
+ G = one() / std::accumulate(Gamma_Series::CoefOneOverGammaAtZero().begin(),
+ Gamma_Series::CoefOneOverGammaAtZero().end(),
+ tz,
+ Util::coefficient_expansion<T, T>(xx, xx));
+ }
+ else
+ {
+ // Check if the argument should be scaled up for the Bernoulli series expansion.
+ static const INT32 min_arg_n = static_cast<INT32>(240.0 * Util::DigitScale());
+ static const TR min_arg_x = TR(min_arg_n);
+
+ const TR rx = real(xx);
+
+ const INT32 n_recur = ((rx < min_arg_x) ? static_cast<INT32>((min_arg_n - to_int32(rx)) + 1)
+ : static_cast<INT32>(0));
+
+ // Scale the argument up and use downward recursion later for the final result.
+ xx += n_recur;
+
+ // Perform the Bernoulli series expansion.
+ T one_over_x_pow_two_n_minus_one = one() / xx;
+ const T one_over_x2 = one_over_x_pow_two_n_minus_one * one_over_x_pow_two_n_minus_one;
+ T sum = (bernoulli(static_cast<UINT32>(2u)) / static_cast<INT32>(2)) * one_over_x_pow_two_n_minus_one;
+
+ for(INT32 n2 = static_cast<INT32>(4); n2 < max_iteration(); n2 += static_cast<INT32>(2))
+ {
+ one_over_x_pow_two_n_minus_one *= one_over_x2;
+
+ const T term = (bernoulli(static_cast<UINT32>(n2)) * one_over_x_pow_two_n_minus_one) / static_cast<INT32>(n2 * (n2 - static_cast<INT32>(1)));
+
+ const INT64 order_check = static_cast<INT64>(order_of(abs(term)) - order_of(abs(sum)));
+
+ if((n2 > static_cast<INT32>(20)) && (order_check < -tol()))
+ {
+ break;
+ }
+
+ sum += term;
+ }
+
+ static const TR half_ln_two_pi = log(two_pi()) / static_cast<INT32>(2);
+
+ G = exp(((((xx - half()) * log(xx)) - xx) + half_ln_two_pi) + sum);
+
+ // Rescale the result using downward recursion if necessary.
+ for(INT32 k = static_cast<INT32>(0); k < n_recur; k++)
+ {
+ G /= --xx;
+ }
+ }
+
+ // Return the result, accounting for possible negative arguments.
+ return ((!b_neg) ? G : -pi() / ((xx * G) * sin(pi() * xx)));
+ }
+
+ template<typename T,
+ typename TR>
+ T gamma_near_n(const INT32 n, const T& x)
+ {
+ using ef::sin;
+ using efz::sin;
+ using ef::one;
+ using ef::pi;
+
+ if(n >= static_cast<INT32>(0))
+ {
+ return GammaTemplate::gamma<T, TR>(n + x);
+ }
+ else
+ {
+ const INT32 nn = static_cast<INT32>(-n);
+
+ const bool b_neg = (static_cast<INT32>(nn % static_cast<INT32>(2)) != static_cast<INT32>(0));
+
+ const T n_minus_x = nn - x;
+ const T Gn = pi() / (GammaTemplate::gamma<T, TR>(n_minus_x + one()) * sin(pi() * x));
+
+ return ((!b_neg) ? Gn : -Gn);
+ }
+ }
+}
+
+e_float ef::gamma(const e_float& x)
+{
+ if(x.has_its_own_gamma())
+ {
+ return e_float::my_gamma(x);
+ }
+ else
+ {
+ return GammaTemplate::gamma<e_float, e_float>(x);
+ }
+}
+
+ef_complex efz::gamma(const ef_complex& z)
+{
+ if(ef::iszero(z.imag()))
+ {
+ return ef_complex(GammaTemplate::gamma<e_float, e_float>(z.real()));
+ }
+ else
+ {
+ return GammaTemplate::gamma<ef_complex, e_float>(z);
+ }
+}
+
+e_float ef::gamma_near_n(const INT32 n, const e_float& x)
+{
+ return GammaTemplate::gamma_near_n<e_float, e_float>(n, x);
+}

Added: sandbox/e_float/libs/e_float/src/functions/gamma/gamma_util.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/gamma/gamma_util.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,29 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+#include <e_float/e_float_gamma.hpp>
+#include "gamma_util.h"
+
+void GammaUtil::GammaOfPlusXMinusX(const e_float& x, e_float& gamma_plus_x, e_float& gamma_minus_x)
+{
+ // Calculate gamma(x) and gamma(-x) without regard for the actual sign of x.
+ // In other words, calculate gamma(abs(x)) and set the results appropriately
+ // using the reflection formula.
+ const bool bo_x_isneg = ef::isneg(x);
+ const e_float abs_x = ef::fabs(x);
+ const e_float gamma_x_pos = ef::gamma(abs_x);
+ const e_float gamma_x_neg = -ef::pi() / ((abs_x * gamma_x_pos) * ef::sin(ef::pi() * abs_x));
+
+ gamma_plus_x = bo_x_isneg ? gamma_x_neg : gamma_x_pos;
+ gamma_minus_x = bo_x_isneg ? gamma_x_pos : gamma_x_neg;
+}

Added: sandbox/e_float/libs/e_float/src/functions/gamma/gamma_util.h
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/gamma/gamma_util.h 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,21 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#ifndef _GAMMA_UTIL_2008_01_10_H_
+ #define _GAMMA_UTIL_2008_01_10_H_
+
+ #include <e_float/e_float.hpp>
+
+ namespace GammaUtil
+ {
+ void GammaOfPlusXMinusX(const e_float& x, e_float& gamma_plus_x, e_float& gamma_minus_x);
+ }
+
+#endif // _GAMMA_UTIL_2008_01_10_H_

Added: sandbox/e_float/libs/e_float/src/functions/gamma/pochhammer.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/gamma/pochhammer.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,78 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float_complex.hpp>
+#include <e_float/e_float_elementary.hpp>
+#include <e_float/e_float_gamma.hpp>
+
+namespace Pochhammer_Series
+{
+ template<typename T,
+ typename TR>
+ T Pochhammer_Template(const T& x, const UINT32 n)
+ {
+ using ef::real;
+ using efz::real;
+ using ef::gamma;
+ using efz::gamma;
+ using ef::one;
+
+ if(n == static_cast<UINT32>(0u))
+ {
+ return one();
+ }
+ else if(n == static_cast<UINT32>(1u))
+ {
+ return x;
+ }
+ else
+ {
+ if(n < static_cast<UINT32>(50u))
+ {
+ T val (x);
+ T term(x);
+
+ for(UINT32 i = static_cast<UINT32>(1u); i < n; i++)
+ {
+ val *= ++term;
+ }
+
+ return val;
+ }
+ else
+ {
+ const TR nr(n);
+
+ return gamma(x + nr) / gamma(x);
+ }
+ }
+ }
+}
+
+e_float ef::pochhammer(const e_float& x, const UINT32 n)
+{
+ return Pochhammer_Series::Pochhammer_Template<e_float, e_float>(x, n);
+}
+
+ef_complex efz::pochhammer(const ef_complex& x, const UINT32 n)
+{
+ return Pochhammer_Series::Pochhammer_Template<ef_complex, e_float>(x, n);
+}
+
+e_float ef::pochhammer(const e_float& x, const e_float& a)
+{
+ return ef::gamma(x + a) / ef::gamma(x);
+}
+
+ef_complex efz::pochhammer(const ef_complex& z, const ef_complex& a)
+{
+ return efz::gamma(z + a) / efz::gamma(z);
+}
+

Added: sandbox/e_float/libs/e_float/src/functions/integer/bernoulli_b.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/integer/bernoulli_b.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,119 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <e_float/e_float.hpp>
+#include <e_float/e_float_constants.hpp>
+#include <e_float/e_float_elementary.hpp>
+#include <e_float/e_float_integer.hpp>
+#include <e_float/e_float_gamma.hpp>
+
+#include "../tables/tables.h"
+
+e_float ef::bernoulli(const UINT32 n)
+{
+ if(static_cast<UINT32>(n % static_cast<UINT32>(2u)) != static_cast<UINT32>(0u))
+ {
+ return (n == static_cast<UINT32>(1u) ? -ef::half() : ef::zero());
+ }
+ else
+ {
+ static const std::size_t sz_A000367 = Tables::A000367().size();
+ static const std::size_t sz_A002445 = Tables::A002445().size();
+ static const std::size_t sz_max = (std::min)(sz_A000367, sz_A002445);
+
+ const std::size_t n_half = static_cast<std::size_t>(n / static_cast<UINT32>(2u));
+
+ if(n_half < sz_max)
+ {
+ return Tables::A000367()[n_half]() / Tables::A002445()[n_half]();
+ }
+ else
+ {
+ // Do a loop calculation for higher numbered Bernoulli numbers.
+ // See Abramowitz & Stegun 23.1.18, page 805, for x = 0.
+ // See Computation of Special Functions, Zhang & Jin, 1.1.16, page 5.
+
+ e_float sum = ef::one();
+
+ // TBD: Check the power of two using logs and floating point math to see
+ // if the loop is even necessary.
+
+ for(INT32 k = static_cast<INT32>(2); k < ef::max_iteration(); k++)
+ {
+ const e_float one_over_k = ef::one() / k;
+ const e_float term = ef::pown(one_over_k, static_cast<INT64>(n));
+
+ if(term.order() < -ef::tol())
+ {
+ break;
+ }
+
+ sum += term;
+ }
+
+ const bool b_neg = static_cast<UINT32>(static_cast<UINT32>(n / static_cast<UINT32>(2u)) & static_cast<UINT32>(1u)) == static_cast<UINT32>(0u);
+
+ const e_float factor = ((ef::factorial(n) / ef::pown(ef::two_pi(), static_cast<INT64>(n))) * static_cast<INT32>(2));
+ const e_float bn = sum * factor;
+
+ return !b_neg ? bn : -bn;
+ }
+ }
+}
+
+void ef::bernoulli_table(std::vector<e_float>& bn, const UINT32 n)
+{
+ // See reference "Computing Bernoulli and Tangent Numbers", Richard P. Brent.
+ // See also the book Richard P. Brent and Paul Zimmermann, "Modern Computer Arithmetic",
+ // Cambridge University Press, 2010, 237 pp.
+
+ const UINT32 nn = (((n % static_cast<UINT32>(2)) != static_cast<UINT32>(0u)) ? static_cast<UINT32>(n + 1u) : n);
+
+ const INT32 m = nn / 2;
+
+ std::vector<e_float> tangent_numbers(static_cast<std::vector<e_float>::size_type>(m + 1));
+
+ tangent_numbers[0u] = ef::zero();
+ tangent_numbers[1u] = ef::one();
+
+ for(INT32 k = 2; k <= m; k++)
+ {
+ tangent_numbers[k] = (k - 1) * tangent_numbers[k - 1];
+ }
+
+ for(INT32 k = 2; k <= m; k++)
+ {
+ for(INT32 j = k; j <= m; j++)
+ {
+ tangent_numbers[j] = (tangent_numbers[j - 1] * (j - k)) + (tangent_numbers[j] * (j - k + 2));
+ }
+ }
+
+ e_float two_pow_two_m(4);
+
+ bn.clear();
+ bn.resize(static_cast<std::vector<e_float>::size_type>(nn + 1));
+
+ for(INT32 i = 1; i < static_cast<INT32>(tangent_numbers.size()); i++)
+ {
+ const INT32 two_i = static_cast<INT32>(static_cast<INT32>(2) * i);
+
+ const e_float b = (tangent_numbers[i] * two_i) / (two_pow_two_m * (two_pow_two_m - 1));
+
+ const bool b_neg = (static_cast<INT32>(two_i % static_cast<INT32>(4)) == static_cast<INT32>(0));
+
+ bn[2 * i] = ((!b_neg) ? b : -b);
+
+ two_pow_two_m *= 4;
+ }
+
+ bn[0u] = ef::one();
+ bn[1u] = -ef::half();
+}

Added: sandbox/e_float/libs/e_float/src/functions/integer/prime.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/integer/prime.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,126 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <vector>
+#include <algorithm>
+
+#include <e_float/e_float_prime.hpp>
+
+namespace Primes
+{
+ struct Inserter
+ {
+ private:
+
+ mutable UINT32 count;
+ mutable std::back_insert_iterator<std::deque<UINT32> > it;
+
+ public:
+
+ static const std::size_t start_index = static_cast<std::size_t>(2u);
+
+ explicit Inserter(std::deque<UINT32>& sequence) : count(static_cast<UINT32>(start_index)),
+ it (std::back_inserter(sequence)) { }
+
+ void operator()(const bool& bo_is_not_prime) const
+ {
+ const bool bo_is_prime = !bo_is_not_prime;
+
+ if(bo_is_prime)
+ {
+ *it = count;
+ }
+
+ ++count;
+ }
+ };
+
+ static void Generator(const UINT32 n, std::deque<UINT32>& primes_data)
+ {
+ // Establish the range of the prime number calculation. Use an approximation
+ // related to the prime number theorem to obtain the value of the maximum prime
+ // number or a minimum of at least 100. Also be sure to limit this range to
+ // within the upper limit of UINT32.
+
+ static const UINT32 min_hundred = static_cast<UINT32>(100u);
+ static const double xmax = static_cast<double>((std::numeric_limits<UINT32>::max)());
+
+ const UINT32 N = (std::max)(min_hundred, n);
+ const double xn = static_cast<double>(N);
+ const double logn = ::log(xn);
+ const double loglogn = ::log(logn);
+ const double top = xn * (((logn + loglogn) - 1.0) + ((static_cast<double>(1.8) * loglogn) / logn));
+ const double xlim = (std::min)(top, xmax);
+ const UINT32 nlim = static_cast<UINT32>(static_cast<UINT64>(xlim));
+ const UINT32 limit = (std::max)(n, nlim);
+
+ // Use a sieve algorithm to generate a boolean table representation of the primes.
+
+ std::vector<bool> sieve(static_cast<std::size_t>(limit), false);
+
+ UINT32 i = static_cast<UINT32>(Primes::Inserter::start_index);
+ UINT32 i2;
+
+ while((i2 = static_cast<UINT32>(i * i)) < limit)
+ {
+ if(!sieve[i])
+ {
+ for(UINT32 j = i2; j < limit; j = static_cast<UINT32>(j + i))
+ {
+ sieve[j] = true;
+ }
+ }
+
+ ++i;
+ }
+
+ // Extract the prime numbers into the data table by inserting them from the sieve.
+ primes_data.clear();
+
+ std::for_each(sieve.begin() + Primes::Inserter::start_index,
+ sieve.end(),
+ Primes::Inserter(primes_data));
+
+ primes_data.resize(static_cast<std::size_t>(n), static_cast<UINT32>(0u));
+ }
+
+ std::deque<UINT32>& Data(void)
+ {
+ // Create a static data table of primes and return a reference to it.
+ static std::deque<UINT32> primes;
+
+ if(primes.empty())
+ {
+ // Select a maximum count of prime numbers to be stored in the data table.
+ // This number is selected such that the value of the highest prime will slightly
+ // exceed 0x10000 (decimal 65,536). This number is significant because it is
+ // the maximum value which needs to be tested while computing the prime factors
+ // of unsigned 32-bit integers, as done in the subroutine Factors(...).
+ Primes::Generator(static_cast<UINT32>(6550u), primes);
+ }
+
+ return primes;
+ }
+}
+
+void ef::prime(const UINT32 n, std::deque<UINT32>& primes)
+{
+ // For small values of n less than the size of the prime data table, the primes
+ // can be copied from the data table. For large values of n, the primes must be
+ // generated.
+ if(n < static_cast<UINT32>(Primes::Data().size()))
+ {
+ primes.assign(Primes::Data().begin(), Primes::Data().begin() + static_cast<std::size_t>(n));
+ }
+ else
+ {
+ Primes::Generator(n, primes);
+ }
+}

Added: sandbox/e_float/libs/e_float/src/functions/integer/prime_factor.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/integer/prime_factor.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,127 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+#include <vector>
+#include <algorithm>
+
+#include <e_float/e_float_prime.hpp>
+
+#include "prime_factors.h"
+
+namespace Primes
+{
+ std::deque<UINT32>& Data(void);
+
+ static bool IsPrimeFactor(UINT32& np, const UINT32 p)
+ {
+ const UINT32 q = static_cast<UINT32>(np / p);
+ const UINT32 r = static_cast<UINT32>(np - static_cast<UINT32>(q * p));
+
+ const bool is_prime_factor = (r == static_cast<UINT32>(0u));
+
+ if(is_prime_factor)
+ {
+ np = q;
+ }
+
+ return is_prime_factor;
+ }
+
+ static void Factors(const UINT32 n, std::deque<Util::point<UINT32> >& pf)
+ {
+ // Compute the prime factors of the unsigned integer n. Use the divide algorithm of
+ // "The Art of Computer Programming Volume 2 Semi-numerical Algorithms Third Edition",
+ // Donald Knuth (Algorithm A, Chapter 4.5.4, page 380 and pages 378-417).
+ static const std::size_t sz = Data().size();
+
+ pf.clear();
+
+ const UINT32 sqrt_n = static_cast<UINT32>(static_cast<UINT64>(::sqrt(static_cast<double>(n)) + 0.5));
+
+ UINT32 np = n;
+
+ for(std::size_t i = static_cast<std::size_t>(0u); i < sz; i++)
+ {
+ const UINT32 p = Data()[i];
+
+ if(IsPrimeFactor(np, p))
+ {
+ Util::point<UINT32> ip(p, static_cast<UINT32>(1u));
+
+ while(IsPrimeFactor(np, p))
+ {
+ ++ip.y;
+ }
+
+ pf.push_back(ip);
+ }
+
+ if(static_cast<UINT32>(np / p) <= p)
+ {
+ pf.push_back(Util::point<UINT32>(np, static_cast<UINT32>(1u)));
+
+ break;
+ }
+
+ if((np == static_cast<UINT32>(1u)) || (p >= sqrt_n))
+ {
+ break;
+ }
+ }
+ }
+}
+
+void ef::prime_factors(const UINT32 n, std::deque<Util::point<UINT32> >& pf)
+{
+ // Factor the input integer into a list of primes. For small inputs less than 10,000
+ // use the tabulated prime factors list. Calculate the prime factors for larger inputs
+ // above 10,000.
+ static std::vector<std::deque<Util::point<UINT32> > > prime_factors_list;
+
+ if(prime_factors_list.empty())
+ {
+ // Generate a table of the sets of the first 10,000 integer prime factorizations.
+ prime_factors_list.resize(static_cast<std::size_t>(10000u));
+
+ prime_factors_list[static_cast<std::size_t>(0u)] = std::deque<Util::point<UINT32> >(static_cast<std::size_t>(1u), Util::point<UINT32>(static_cast<UINT32>(0u), static_cast<UINT32>(1u)));
+ prime_factors_list[static_cast<std::size_t>(1u)] = std::deque<Util::point<UINT32> >(static_cast<std::size_t>(1u), Util::point<UINT32>(static_cast<UINT32>(1u), static_cast<UINT32>(1u)));
+ prime_factors_list[static_cast<std::size_t>(2u)] = std::deque<Util::point<UINT32> >(static_cast<std::size_t>(1u), Util::point<UINT32>(static_cast<UINT32>(2u), static_cast<UINT32>(1u)));
+ prime_factors_list[static_cast<std::size_t>(3u)] = std::deque<Util::point<UINT32> >(static_cast<std::size_t>(1u), Util::point<UINT32>(static_cast<UINT32>(3u), static_cast<UINT32>(1u)));
+
+ static const UINT32 n_five = static_cast<UINT32>(5u);
+
+ std::deque<UINT32>::const_iterator it_next_prime = std::find(Primes::Data().begin(), Primes::Data().end(), n_five);
+
+ for(std::size_t i = static_cast<std::size_t>(4u); i < prime_factors_list.size(); i++)
+ {
+ if((it_next_prime != Primes::Data().end()) && (static_cast<UINT32>(i) == *it_next_prime))
+ {
+ ++it_next_prime;
+
+ prime_factors_list[i] = std::deque<Util::point<UINT32> >(static_cast<std::size_t>(1u),
+ Util::point<UINT32>(static_cast<UINT32>(i),
+ static_cast<UINT32>(1u)));
+ }
+ else
+ {
+ Primes::Factors(static_cast<UINT32>(i), prime_factors_list[i]);
+ }
+ }
+ }
+
+ if(static_cast<std::size_t>(n) < prime_factors_list.size())
+ {
+ pf = prime_factors_list[static_cast<std::size_t>(n)];
+ }
+ else
+ {
+ Primes::Factors(n, pf);
+ }
+}

Added: sandbox/e_float/libs/e_float/src/functions/integer/prime_factors.h
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/integer/prime_factors.h 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,13 @@
+#ifndef _PRIME_FACTORS_2011_06_23_H_
+ #define _PRIME_FACTORS_2011_06_23_H_
+
+ #include <deque>
+
+ #include "../../utility/util_point.h"
+
+ namespace ef
+ {
+ void prime_factors(const UINT32 n, std::deque<Util::point<UINT32> >& pf);
+ }
+
+#endif // _PRIME_FACTORS_2011_06_23_H_

Added: sandbox/e_float/libs/e_float/src/functions/tables/A000142.cpp
==============================================================================
--- (empty file)
+++ sandbox/e_float/libs/e_float/src/functions/tables/A000142.cpp 2011-07-12 17:05:43 EDT (Tue, 12 Jul 2011)
@@ -0,0 +1,7039 @@
+
+// Copyright Christopher Kormanyos 2002 - 2011.
+// 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)
+
+// This work is based on an earlier work:
+// "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations",
+// in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} © ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469
+
+// Automatically generated file
+#include <vector>
+
+#include "tables.h"
+
+namespace A000142_Table
+{
+ static const e_float& A000142_0(void)
+ {
+ static const e_float val(static_cast<INT32>(1L));
+ return val;
+ }
+
+ static const e_float& A000142_1(void)
+ {
+ static const e_float val(static_cast<INT32>(1L));
+ return val;
+ }
+
+ static const e_float& A000142_2(void)
+ {
+ static const e_float val(static_cast<INT32>(2L));
+ return val;
+ }
+
+ static const e_float& A000142_3(void)
+ {
+ static const e_float val(static_cast<INT32>(6L));
+ return val;
+ }
+
+ static const e_float& A000142_4(void)
+ {
+ static const e_float val(static_cast<INT32>(24L));
+ return val;
+ }
+
+ static const e_float& A000142_5(void)
+ {
+ static const e_float val(static_cast<INT32>(120L));
+ return val;
+ }
+
+ static const e_float& A000142_6(void)
+ {
+ static const e_float val(static_cast<INT32>(720L));
+ return val;
+ }
+
+ static const e_float& A000142_7(void)
+ {
+ static const e_float val(static_cast<INT32>(5040L));
+ return val;
+ }
+
+ static const e_float& A000142_8(void)
+ {
+ static const e_float val(static_cast<INT32>(40320L));
+ return val;
+ }
+
+ static const e_float& A000142_9(void)
+ {
+ static const e_float val(static_cast<INT32>(362880L));
+ return val;
+ }
+
+ static const e_float& A000142_10(void)
+ {
+ static const e_float val(static_cast<INT32>(3628800L));
+ return val;
+ }
+
+ static const e_float& A000142_11(void)
+ {
+ static const e_float val(static_cast<INT32>(39916800L));
+ return val;
+ }
+
+ static const e_float& A000142_12(void)
+ {
+ static const e_float val(static_cast<INT32>(479001600L));
+ return val;
+ }
+
+ static const e_float& A000142_13(void)
+ {
+ static const e_float val(static_cast<INT64>(6227020800LL));
+ return val;
+ }
+
+ static const e_float& A000142_14(void)
+ {
+ static const e_float val(static_cast<INT64>(87178291200LL));
+ return val;
+ }
+
+ static const e_float& A000142_15(void)
+ {
+ static const e_float val(static_cast<INT64>(1307674368000LL));
+ return val;
+ }
+
+ static const e_float& A000142_16(void)
+ {
+ static const e_float val(static_cast<INT64>(20922789888000LL));
+ return val;
+ }
+
+ static const e_float& A000142_17(void)
+ {
+ static const e_float val(static_cast<INT64>(355687428096000LL));
+ return val;
+ }
+
+ static const e_float& A000142_18(void)
+ {
+ static const e_float val(static_cast<INT64>(6402373705728000LL));
+ return val;
+ }
+
+ static const e_float& A000142_19(void)
+ {
+ static const e_float val(static_cast<INT64>(121645100408832000LL));
+ return val;
+ }
+
+ static const e_float& A000142_20(void)
+ {
+ static const e_float val(static_cast<INT64>(2432902008176640000LL));
+ return val;
+ }
+
+ static const e_float& A000142_21(void)
+ {
+ static const e_float val("51090942171709440000");
+ return val;
+ }
+
+ static const e_float& A000142_22(void)
+ {
+ static const e_float val("1124000727777607680000");
+ return val;
+ }
+
+ static const e_float& A000142_23(void)
+ {
+ static const e_float val("25852016738884976640000");
+ return val;
+ }
+
+ static const e_float& A000142_24(void)
+ {
+ static const e_float val("620448401733239439360000");
+ return val;
+ }
+
+ static const e_float& A000142_25(void)
+ {
+ static const e_float val("15511210043330985984000000");
+ return val;
+ }
+
+ static const e_float& A000142_26(void)
+ {
+ static const e_float val("403291461126605635584000000");
+ return val;
+ }
+
+ static const e_float& A000142_27(void)
+ {
+ static const e_float val("10888869450418352160768000000");
+ return val;
+ }
+
+ static const e_float& A000142_28(void)
+ {
+ static const e_float val("304888344611713860501504000000");
+ return val;
+ }
+
+ static const e_float& A000142_29(void)
+ {
+ static const e_float val("8841761993739701954543616000000");
+ return val;
+ }
+
+ static const e_float& A000142_30(void)
+ {
+ static const e_float val("265252859812191058636308480000000");
+ return val;
+ }
+
+ static const e_float& A000142_31(void)
+ {
+ static const e_float val("8222838654177922817725562880000000");
+ return val;
+ }
+
+ static const e_float& A000142_32(void)
+ {
+ static const e_float val("263130836933693530167218012160000000");
+ return val;
+ }
+
+ static const e_float& A000142_33(void)
+ {
+ static const e_float val("8683317618811886495518194401280000000");
+ return val;
+ }
+
+ static const e_float& A000142_34(void)
+ {
+ static const e_float val("295232799039604140847618609643520000000");
+ return val;
+ }
+
+ static const e_float& A000142_35(void)
+ {
+ static const e_float val("10333147966386144929666651337523200000000");
+ return val;
+ }
+
+ static const e_float& A000142_36(void)
+ {
+ static const e_float val("371993326789901217467999448150835200000000");
+ return val;
+ }
+
+ static const e_float& A000142_37(void)
+ {
+ static const e_float val("13763753091226345046315979581580902400000000");
+ return val;
+ }
+
+ static const e_float& A000142_38(void)
+ {
+ static const e_float val("523022617466601111760007224100074291200000000");
+ return val;
+ }
+
+ static const e_float& A000142_39(void)
+ {
+ static const e_float val("20397882081197443358640281739902897356800000000");
+ return val;
+ }
+
+ static const e_float& A000142_40(void)
+ {
+ static const e_float val("815915283247897734345611269596115894272000000000");
+ return val;
+ }
+
+ static const e_float& A000142_41(void)
+ {
+ static const e_float val("33452526613163807108170062053440751665152000000000");
+ return val;
+ }
+
+ static const e_float& A000142_42(void)
+ {
+ static const e_float val("1405006117752879898543142606244511569936384000000000");
+ return val;
+ }
+
+ static const e_float& A000142_43(void)
+ {
+ static const e_float val("60415263063373835637355132068513997507264512000000000");
+ return val;
+ }
+
+ static const e_float& A000142_44(void)
+ {
+ static const e_float val("2658271574788448768043625811014615890319638528000000000");
+ return val;
+ }
+
+ static const e_float& A000142_45(void)
+ {
+ static const e_float val("119622220865480194561963161495657715064383733760000000000");
+ return val;
+ }
+
+ static const e_float& A000142_46(void)
+ {
+ static const e_float val("5502622159812088949850305428800254892961651752960000000000");
+ return val;
+ }
+
+ static const e_float& A000142_47(void)
+ {
+ static const e_float val("258623241511168180642964355153611979969197632389120000000000");
+ return val;
+ }
+
+ static const e_float& A000142_48(void)
+ {
+ static const e_float val("12413915592536072670862289047373375038521486354677760000000000");
+ return val;
+ }
+
+ static const e_float& A000142_49(void)
+ {
+ static const e_float val("608281864034267560872252163321295376887552831379210240000000000");
+ return val;
+ }
+
+ static const e_float& A000142_50(void)
+ {
+ static const e_float val("30414093201713378043612608166064768844377641568960512000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_51(void)
+ {
+ static const e_float val("1551118753287382280224243016469303211063259720016986112000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_52(void)
+ {
+ static const e_float val("80658175170943878571660636856403766975289505440883277824000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_53(void)
+ {
+ static const e_float val("4274883284060025564298013753389399649690343788366813724672000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_54(void)
+ {
+ static const e_float val("230843697339241380472092742683027581083278564571807941132288000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_55(void)
+ {
+ static const e_float val("12696403353658275925965100847566516959580321051449436762275840000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_56(void)
+ {
+ static const e_float val("710998587804863451854045647463724949736497978881168458687447040000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_57(void)
+ {
+ static const e_float val("40526919504877216755680601905432322134980384796226602145184481280000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_58(void)
+ {
+ static const e_float val("2350561331282878571829474910515074683828862318181142924420699914240000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_59(void)
+ {
+ static const e_float val("138683118545689835737939019720389406345902876772687432540821294940160000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_60(void)
+ {
+ static const e_float val("8320987112741390144276341183223364380754172606361245952449277696409600000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_61(void)
+ {
+ static const e_float val("507580213877224798800856812176625227226004528988036003099405939480985600000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_62(void)
+ {
+ static const e_float val("31469973260387937525653122354950764088012280797258232192163168247821107200000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_63(void)
+ {
+ static const e_float val("1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_64(void)
+ {
+ static const e_float val("126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_65(void)
+ {
+ static const e_float val("8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_66(void)
+ {
+ static const e_float val("544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_67(void)
+ {
+ static const e_float val("36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_68(void)
+ {
+ static const e_float val("2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_69(void)
+ {
+ static const e_float val("171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_70(void)
+ {
+ static const e_float val("11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_71(void)
+ {
+ static const e_float val("850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_72(void)
+ {
+ static const e_float val("61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_73(void)
+ {
+ static const e_float val("4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_74(void)
+ {
+ static const e_float val("330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_75(void)
+ {
+ static const e_float val("24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_76(void)
+ {
+ static const e_float val("1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_77(void)
+ {
+ static const e_float val("145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_78(void)
+ {
+ static const e_float val("11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_79(void)
+ {
+ static const e_float val("894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_80(void)
+ {
+ static const e_float val("71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_81(void)
+ {
+ static const e_float val("5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_82(void)
+ {
+ static const e_float val("475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_83(void)
+ {
+ static const e_float val("39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_84(void)
+ {
+ static const e_float val("3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_85(void)
+ {
+ static const e_float val("281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_86(void)
+ {
+ static const e_float val("24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_87(void)
+ {
+ static const e_float val("2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_88(void)
+ {
+ static const e_float val("185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_89(void)
+ {
+ static const e_float val("16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_90(void)
+ {
+ static const e_float val("1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_91(void)
+ {
+ static const e_float val("135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_92(void)
+ {
+ static const e_float val("12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_93(void)
+ {
+ static const e_float val("1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_94(void)
+ {
+ static const e_float val("108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_95(void)
+ {
+ static const e_float val("10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_96(void)
+ {
+ static const e_float val("991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_97(void)
+ {
+ static const e_float val("96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_98(void)
+ {
+ static const e_float val("9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_99(void)
+ {
+ static const e_float val("933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_100(void)
+ {
+ static const e_float val("93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_101(void)
+ {
+ static const e_float val("9425947759838359420851623124482936749562312794702543768327889353416977599316221476503087861591808346911623490003549599583369706302603264000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_102(void)
+ {
+ static const e_float val("961446671503512660926865558697259548455355905059659464369444714048531715130254590603314961882364451384985595980362059157503710042865532928000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_103(void)
+ {
+ static const e_float val("99029007164861804075467152545817733490901658221144924830052805546998766658416222832141441073883538492653516385977292093222882134415149891584000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_104(void)
+ {
+ static const e_float val("10299016745145627623848583864765044283053772454999072182325491776887871732475287174542709871683888003235965704141638377695179741979175588724736000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_105(void)
+ {
+ static const e_float val("1081396758240290900504101305800329649720646107774902579144176636573226531909905153326984536526808240339776398934872029657993872907813436816097280000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_106(void)
+ {
+ static const e_float val("114628056373470835453434738414834942870388487424139673389282723476762012382449946252660360871841673476016298287096435143747350528228224302506311680000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_107(void)
+ {
+ static const e_float val("12265202031961379393517517010387338887131568154382945052653251412013535324922144249034658613287059061933743916719318560380966506520420000368175349760000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_108(void)
+ {
+ static const e_float val("1324641819451828974499891837121832599810209360673358065686551152497461815091591578895743130235002378688844343005686404521144382704205360039762937774080000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_109(void)
+ {
+ static const e_float val("144385958320249358220488210246279753379312820313396029159834075622223337844983482099636001195615259277084033387619818092804737714758384244334160217374720000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_110(void)
+ {
+ static const e_float val("15882455415227429404253703127090772871724410234473563207581748318444567162948183030959960131517678520479243672638179990208521148623422266876757623911219200000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_111(void)
+ {
+ static const e_float val("1762952551090244663872161047107075788761409536026565516041574063347346955087248316436555574598462315773196047662837978913145847497199871623320096254145331200000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_112(void)
+ {
+ static const e_float val("197450685722107402353682037275992488341277868034975337796656295094902858969771811440894224355027779366597957338237853638272334919686385621811850780464277094400000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_113(void)
+ {
+ static const e_float val("22311927486598136465966070212187151182564399087952213171022161345724023063584214692821047352118139068425569179220877461124773845924561575264739138192463311667200000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_114(void)
+ {
+ static const e_float val("2543559733472187557120132004189335234812341496026552301496526393412538629248600474981599398141467853800514886431180030568224218435400019580180261753940817530060800000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_115(void)
+ {
+ static const e_float val("292509369349301569068815180481773552003419272043053514672100535242441942363589054622883930786268803187059211939585703515345785120071002251720730101703194015956992000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_116(void)
+ {
+ static const e_float val("33931086844518982011982560935885732032396635556994207701963662088123265314176330336254535971207181169698868584991941607780111073928236261199604691797570505851011072000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_117(void)
+ {
+ static const e_float val("3969937160808720895401959629498630647790406360168322301129748464310422041758630649341780708631240196854767624444057168110272995649603642560353748940315749184568295424000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_118(void)
+ {
+ static const e_float val("468452584975429065657431236280838416439267950499862031533310318788629800927518416622330123618486343228862579684398745837012213486653229822121742374957258403779058860032000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_119(void)
+ {
+ static const e_float val("55745857612076058813234317117419771556272886109483581752463927935846946310374691578057284710599874844234646982443450754604453404911734348832487342619913750049708004343808000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_120(void)
+ {
+ static const e_float val("6689502913449127057588118054090372586752746333138029810295671352301633557244962989366874165271984981308157637893214090552534408589408121859898481114389650005964960521256960000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_121(void)
+ {
+ static const e_float val("809429852527344373968162284544935082997082306309701607045776233628497660426640521713391773997910182738287074185078904956856663439318382745047716214841147650721760223072092160000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_122(void)
+ {
+ static const e_float val("98750442008336013624115798714482080125644041369783596059584700502676714572050143649033796427745042294071023050579626404736512939596842694895821378210620013388054747214795243520000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_123(void)
+ {
+ static const e_float val("12146304367025329675766243241881295855454217088483382315328918161829235892362167668831156960612640202170735835221294047782591091570411651472186029519906261646730733907419814952960000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_124(void)
+ {
+ static const e_float val("1506141741511140879795014161993280686076322918971939407100785852066825250652908790935063463115967385069171243567440461925041295354731044782551067660468376444194611004520057054167040000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_125(void)
+ {
+ static const e_float val("188267717688892609974376770249160085759540364871492425887598231508353156331613598866882932889495923133646405445930057740630161919341380597818883457558547055524326375565007131770880000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_126(void)
+ {
+ static const e_float val("23721732428800468856771473051394170805702085973808045661837377170052497697783313457227249544076486314839447086187187275319400401837013955325179315652376928996065123321190898603130880000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_127(void)
+ {
+ static const e_float val("3012660018457659544809977077527059692324164918673621799053346900596667207618480809067860692097713761984609779945772783965563851033300772326297773087851869982500270661791244122597621760000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_128(void)
+ {
+ static const e_float val("385620482362580421735677065923463640617493109590223590278828403276373402575165543560686168588507361534030051833058916347592172932262498857766114955245039357760034644709279247692495585280000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_129(void)
+ {
+ static const e_float val("49745042224772874403902341504126809639656611137138843145968864022652168932196355119328515747917449637889876686464600208839390308261862352651828829226610077151044469167497022952331930501120000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_130(void)
+ {
+ static const e_float val("6466855489220473672507304395536485253155359447828049608975952322944781961185526165512707047229268452925683969240398027149120740074042105844737747799459310029635780991774612983803150965145600000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_131(void)
+ {
+ static const e_float val("847158069087882051098456875815279568163352087665474498775849754305766436915303927682164623187034167333264599970492141556534816949699515865660644961729169613882287309922474300878212776434073600000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_132(void)
+ {
+ static const e_float val("111824865119600430744996307607616902997562475571842633838412167568361169672820118454045730260688510087990927196104962685462595837360336094267205134948250389032461924909766607715924086489297715200000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_133(void)
+ {
+ static const e_float val("14872707060906857289084508911813048098675809251055070300508818286592035566485075754388082124671571841702793317081960037166525246368924700537538282948117301741317436012998958826217903503076596121600000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_134(void)
+ {
+ static const e_float val("1992942746161518876737324194182948445222558439641379420268181650403332765909000151088003004705990626788174304488982644980314383013435909872030129915047718433336536425741860482713199069412263880294400000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_135(void)
+ {
+ static const e_float val("269047270731805048359538766214698040105045389351586221736204522804449923397715020396880405635308734616403531106012657072342441706813847832724067538531441988500432417475151165166281874370655623839744000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_136(void)
+ {
+ static const e_float val("36590428819525486576897272205198933454286172951815726156123815101405189582089242773975735166401987907830880230417721361838572072126683305250473185240276110436058808776620558462614334914409164842205184000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_137(void)
+ {
+ static const e_float val("5012888748274991661034926292112253883237205694398754483388962668892510972746226260034675717797072343372830591567227826571884373881355612819314826377917827129740056802397016509378163883274055583382110208000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_138(void)
+ {
+ static const e_float val("691778647261948849222819828311491035886734385827028118707676848307166514238979223884785249055995983385450621636277440066920043595627074569065446040152660143904127838730788278294186615891819670506731208704000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_139(void)
+ {
+ static const e_float val("96157231969410890041971956135297253988256079629956908500367081914696145479218112119985149618783441690577636407442564169301886059792163365100096999581219760002673769583579570682891939608962934200435638009856000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_140(void)
+ {
+ static const e_float val("13462012475717524605876073858941615558355851148193967190051391468057460367090535696797920946629681836680869097041958983702264048370902871114013579941370766400374327741701139895604871545254810788060989321379840000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_141(void)
+ {
+ static const e_float val("1898143759076170969428526414110767793728175011895349373797246196996101911759765533248506853474785138972002542682916216702019230820297304827075914771733278062452780211579860725280286887880928321116599494314557440000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_142(void)
+ {
+ static const e_float val("269536413788816277658850750803729026709400851689139611079208959973446471469886705721287973193419489734024361060974102771686730776482217285444779897586125484868294790044340222989800738079091821598557128192667156480000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_143(void)
+ {
+ static const e_float val("38543707171800727705215657364933250819444321791546964384326881276202845420193798918144180166658987031965483631719296696351202501036957071818603525354815944336166154976340651887541505545310130488593669331551403376640000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_144(void)
+ {
+ static const e_float val("5550293832739304789551054660550388117999982337982762871343070903773209740507907044212761943998894132603029642967578724274573160149321818341878907651093495984407926316593053871805976798524658790357488383743402086236160000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_145(void)
+ {
+ static const e_float val("804792605747199194484902925779806277109997439007500616344745281047115412373646521410850481879839649227439298230298915019813108221651663659572441609408556917739149315905992811411866635786075524601835815642793302504243200000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_146(void)
+ {
+ static const e_float val("117499720439091082394795827163851716458059626095095089986332811032878850206552392125984170354456588787206137541623641592892713800361142894297576474973649309989915800122274950466132528824767026591868029083847822165619507200000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_147(void)
+ {
+ static const e_float val("17272458904546389112034986593086202319334765035978978227990923221833190980363201642519673042105118551719302218618675314155228928653088005461743741821126448568517622617974417718521481737240752909004600275325629858346067558400000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_148(void)
+ {
+ static const e_float val("2556323917872865588581178015776757943261545225324888777742656636831312265093753843092911610231557545654456728355563946494973881440657024808338073789526714388140608147460213822341179297111631430532680840748193219035217998643200000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_149(void)
+ {
+ static const e_float val("380892263763056972698595524350736933545970238573408427883655838887865527498969322620843829924502074302514052524979028027751108334657896696442372994639480443832950613971571859528835715269633083149369445271480789636247481797836800000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_150(void)
+ {
+ static const e_float val("57133839564458545904789328652610540031895535786011264182548375833179829124845398393126574488675311145377107878746854204162666250198684504466355949195922066574942592095735778929325357290444962472405416790722118445437122269675520000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_151(void)
+ {
+ static const e_float val("8627209774233240431623188626544191544816225903687700891564804750810154197851655157362112747789971982951943289690774984828562603780001360174419748328584232052816331406456102618328128950857189333333217935399039885261005462721003520000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_152(void)
+ {
+ static const e_float val("1311335885683452545606724671234717114812066337360530535517850322123143438073451583919041137664075741408695380032997797693941515774560206746511801745944803272028082373781327597985875600530292778666649126180654062559672830333592535040000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_153(void)
+ {
+ static const e_float val("200634390509568239477828874698911718566246149616161171934231099284840946025238092339613294062603588435530393145048663047173051913507711632216305667129554900620296603188543122491838966881134795135997316305640071571629943041039657861120000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_154(void)
+ {
+ static const e_float val("30897696138473508879585646703632404659201907040888820477871589289865505687886666220300447285640952619071680544337494109264649994680187591361311072737951454695525676891035640863743200899694758450943586711068571022031011228320107310612480000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_155(void)
+ {
+ static const e_float val("4789142901463393876335775239063022722176295591337767174070096339929153381622433264146569329274347655956110484372311586936020749175429076661003216274382475477806479918110524333880196139452687559896255940215628508414806740389616633144934400000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_156(void)
+ {
+ static const e_float val("747106292628289444708380937293831544659502112248691679154935029028947927533099589206864815366798234329153235562080607562019236871366935959116501738803666174537810867225241796085310597754619259343815926673638047312709851500780194770609766400000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_157(void)
+ {
+ static const e_float val("117295687942641442819215807155131552511541831623044593627324799557544824622696635505477776012587322789677057983246655387237020188804608945581290772992175589402436306154362961985393763847475223716979100487761173428095446685622490578985733324800000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_158(void)
+ {
+ static const e_float val("18532718694937347965436097530510785296823609396441045793117318330092082290386068409865488609988797000768975161352971551183449189831128213401843942132763743125584936372389347993692214687901085347282697877066265401639080576328353511479745865318400000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_159(void)
+ {
+ static const e_float val("2946702272495038326504339507351214862194953894034126281105653614484641084171384877168612688988218723122267050655122476638168421183149385930893186799109435156968004883209906330997062135376272570217948962453536198860613811636208208325279592585625600000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_160(void)
+ {
+ static const e_float val("471472363599206132240694321176194377951192623045460204976904578317542573467421580346978030238114995699562728104819596262106947389303901748942909887857509625114880781313585012959529941660203611234871833992565791817698209861793313332044734813700096000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_161(void)
+ {
+ static const e_float val("75907050539472187290751785709367294850142012310319093001281637109124354328254874435863462868336514307629599224875954998199218529677928181579808491945059049643495805791487187086484320607292781408814365272803092482649411787748723446459202305005715456000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_162(void)
+ {
+ static const e_float val("12296942187394494341101789284917501765723005994271693066207625211678145401177289658609880984670515317835995074429904709708273401807824365415928975695099566042246320538220924308010459938381430588227927174194100982189204709615293198326390773410925903872000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_163(void)
+ {
+ static const e_float val("2004401576545302577599591653441552787812849977066285969791842909503537700391898214353410600501293996807267197132074467682448564494675371562796423038301229264886150247730010662205704969956173185881152129393638460096840367667292791327201696065980922331136000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_164(void)
+ {
+ static const e_float val("328721858553429622726333031164414657201307396238870899045862237158580182864271307153959338482212215476391820329660212699921564577126760936298613378281401599441328640627721748601735615072812402484508949220556707455881820297436017777661078154820871262306304000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_165(void)
+ {
+ static const e_float val("54239106661315887749844950142128418438215720379413698342567269131165730172604765680403290849565015553604650354393935095487058155225915554489271207416431263907819225703574088519286376487014046409943976621391856730220500349076942933314077895545443758280540160000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_166(void)
+ {
+ static const e_float val("9003691705778437366474261723593317460743809582982673924866166675773511208652391102946946281027792581898371958829393225850851653767501982045219020431127589808697991466793298694201538496844331704050700119151048217216603057946772526930136930660543663874569666560000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_167(void)
+ {
+ static const e_float val("1503616514864999040201201707840084015944216200358106545452649834854176371844949314192140028931641361177028117124508668717092226179172831001551576411998307498052564574954480881931656928973003394576466919898225052275172710677111011997332867420310791867053134315520000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_168(void)
+ {
+ static const e_float val("252607574497319838753801886917134114678628321660161899636045172255501630469951484784279524860515748677740723676917456344471493998101035608260664837215715659672830848592352788164518364067464570288846442542901808782229015393754650015551921726612213033664926565007360000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_169(void)
+ {
+ static const e_float val("42690680090047052749392518888995665380688186360567361038491634111179775549421800928543239701427161526538182301399050122215682485679075017796052357489455946484708413412107621199803603527401512378815048789750405684196703601544535852628274771797464002689372589486243840000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_170(void)
+ {
+ static const e_float val("7257415615307998967396728211129263114716991681296451376543577798900561843401706157852350749242617459511490991237838520776666022565442753025328900773207510902400430280058295603966612599658257104398558294257568966313439612262571094946806711205568880457193340212661452800000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_171(void)
+ {
+ static const e_float val("1241018070217667823424840524103103992616605577501693185388951803611996075221691752992751978120487585576464959501670387052809889858690710767331242032218484364310473577889968548278290754541561964852153468318044293239598173696899657235903947616152278558180061176365108428800000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_172(void)
+ {
+ static const e_float val("213455108077438865629072570145733886730056159330291227886899710221263324938130981514753340236723864719151973034287306573083301055694802251980973629541579310661401455397074590303866009781148657954570396550703618437210885875866741044575478989978191912006970522334798649753600000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_173(void)
+ {
+ static const e_float val("36927733697396923753829554635211962404299715564140382424433649868278555214296659802052327860953228596413291334931704037143411082635200789592708437910693220744422451783693904122568819692138717826140678603271725989637483256524946200711557865266227200777205900363920166407372800000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_174(void)
+ {
+ static const e_float val("6425425663347064733166342506526881458348150508160426541851455077080468607287618805557105047805861775775912692278116502462953528378524937389131268196460620409529506610362739317326974626432136901748478076969280322196922086635340638923811068556323532935233826663322108954882867200000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_175(void)
+ {
+ static const e_float val("1124449491085736328304109938642204255210926338928074644824004638489082006275333290972493383366025810760784721148670387931016867466241864043097971934380608571667663656813479380532220559625623957805983663469624056384461365161184611811666936997356618263665919666081369067104501760000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_176(void)
+ {
+ static const e_float val("197903110431089593781523349201027948917123035651341137489024816374078433104458659211158835472420542693898110922165988275858968674058568071585243060450987108613508803599172370973670818494109816573853124770653833923665200268368491678853380911534764814405201861230320955810392309760000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_177(void)
+ {
+ static const e_float val("35028850546302858099329632808581946958330777310287381335557392498211882659489182680375113878618436056819965633223379924827037455308366548670588021699824718224591058237053509662339734873457437533572003084405728604488740447501223027157048421341653372149720729437766809178439438827520000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_178(void)
+ {
+ static const e_float val("6235135397241908741680674639927586558582878361231153877729215864681715113389074517106770270394081618113953882713761626619212667044889245663364667862568799843977208366195524719896472807475423880975816549024219691598995799655217698833954618998814300242650289839922492033762220111298560000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_179(void)
+ {
+ static const e_float val("1116089236106301664760840760547037993986335226660376544113529639778027005296644338562111878400540609642397745005763331164839067401035174973742275547399815172071920297548998924861468632538100874694671162275335324796220248138283968091277876800787759743434401881346126074043437399922442240000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_180(void)
+ {
+ static const e_float val("200896062499134299656951336898466838917540340798867777940435335160044860953395980941180138112097309735631594101037399609671032132186331495273609598531966730972945653558819806475064353856858157445040809209560358463319644664891114256430017824141796753818192338642302693327818731986039603200000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_181(void)
+ {
+ static const e_float val("36362187312343308237908191978622497844074801684595067807218795663968119832564672550353604998289613062149318532287769329350456815925726000644523337334285978306103163294146384971986648048091326497552386466930424881860855684345291680413833226169665212441092813294256787492335190489473168179200000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_182(void)
+ {
+ static const e_float val("6617918090846482099299290940109294607621613906596302340913820810842197809526770404164356109688709577311175972876374017941783140498482132117303247394840048051710775719534642064901569944752621422554534336981337328498675734550843085835317647162879068664278892019554735323605004669084116608614400000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_183(void)
+ {
+ static const e_float val("1211079010624906224171770242040000913194755344907123328387229208384122199143398983962077168073033852647945203036376445283346314711222230177466494273255728793463071956674839497876987299889729720327479783667584731115257659422804284707863129430806869565563037239578516564219715854442393339376435200000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_184(void)
+ {
+ static const e_float val("222838537954982745247605724535360168027834983462910692423250174342678484642385413049022198925438228887221917358693265932135721906864890352653834946279054097997205240028170467609365663179710268540256280194835590525207409333795988386246815815268464000063598852082447047816427717217400374445264076800000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_185(void)
+ {
+ static const e_float val("41225129521671807870807059039041631085149471940638478098301282253395519658841301414069106801206072344136054711358254197445108552770004715240959465061625008129482969405211536507732647688246399679947411836044584247163370726752257851455660925824665840011765787635252703846039127685219069272373854208000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_186(void)
+ {
+ static const e_float val("7667874091030956263970112981261743381837801780958756926284038499131566656544482063016853865024329456009306176312635280724790190815220877034818460501462251512083832309369345790438272470013830340470218601504292669972386955175919960370752932203387846242188436500157002915363277749450746884661536882688000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_187(void)
+ {
+ static const e_float val("1433892455022788821362411127495946012403668933039287545215115199337602964773818145784151672759549608273740254970462797495535765682446304005511052113773441032759676641852067662811956951892586273667930878481302729284836360617897032589330798322033527247289237625529359545172932939147289667431707397062656000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_188(void)
+ {
+ static const e_float val("269571781544284298416133291969237850331889759411386058500441657475469357377477811407420514478795326355463167934447005929160723948299905153036077797389406914158819208668188720608647906955806219449571005154484913105549235796164642126794190084542303122490376673599519594492511392559690457477160990647779328000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_189(void)
+ {
+ static const e_float val("50949066711869732400649192182185953712727164528751965056583473262863708544343306356002477236492316681182538739610484120611376826228682073923818703706597906776016830438287668195034454414647375475968919974197648576948805565475117361964101925978495290150681191310309203359084653193781496463183427232430292992000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_190(void)
+ {
+ static const e_float val("9680322675255249156123346514615331205418161260462873360750859919944104623425228207640470674933540169424682360525991982916161596983449594045525553704253602287443197783274656957056546338783001340434094795097553229620273057440272298773179365935914105128629426348958748638226084106818484328004851174161755668480000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_191(void)
+ {
+ static const e_float val("1848941630973752588819559184291528260234868800748408811903414244709323983074218587659329898912306172360114330860464468736986865023838872462695380757512438036901650776605459478797800350707553256022912105863632666857472153971092009065677258893759594079568220432651120989901182064402330506648926574264895332679680000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_192(void)
+ {
+ static const e_float val("354996793146960497053355363383973425965094809743694491885455534984190204750249968830591340591162785093141951525209177997501478084577063512837513105442388103085116949108248219929177667335850225156399124325817472036634653562449665740610033707601842063277098323069015230061026956365247457276593902258859903874498560000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_193(void)
+ {
+ static const e_float val("68514381077363375931297585133106871211263298280533036933892918251948709516798243984304128734094417522976396644365371353517785270323373257977640029350380903895427571177891906446331289795819093455185030994882772103070488137552785487937736505567155518212479976352319939401778202578492759254382623135959961447778222080000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_194(void)
+ {
+ static const e_float val("13291789929008494930671731515822733014985079866423409165175226140878049646258859332955000974414316999457420949006882042582450342442734412047662165693973895355712948808511029850588270220388904130305896013007257787995674698685240384659920882080028170533221115412350068243944971300227595295350228888376232520868975083520000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_195(void)
+ {
+ static const e_float val("2591899036156656511480987645585432937922090573952564787209169097471219681020477569926225190010791814894197085056341998303577816776333210349294122310324909594364025017659650820864712692975836305409649722536415268659156566243621875008684572005605493253978117505408263307569269403544381082593294633233365341569450141286400000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_196(void)
+ {
+ static const e_float val("508012211086704676250273578534744855832729752494702698292997143104359057480013603705540137242115195719262628671043031667501252088161309228461647972823682280495348903461291560889483687823263915860291345617137392657194686983749887501702176113098676677779711031060019608283576803094698692188285748113739606947612227692134400000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_197(void)
+ {
+ static const e_float val("100078405584080821221303894971344736599047761241456431563720437191558734323562679929991407036696693556694737848195477238497746661367777918006944650646265409257583733981874437495228286501182991424477395086576066353467353335798727837835328694280439305522603073118823862831864630209655642361092292378406702568679608855350476800000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_198(void)
+ {
+ static const e_float val("19815524305648002601818171204326257846611456725808373449616646563928629396065410626138298593265945324225558093942704493222553838950820027765375040827960551033001579328411138624055200727234232302046524227142061137986535960488148111891395081467526982493475408477527124840709196781511817187496273890924527108598562553359394406400000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_199(void)
+ {
+ static const e_float val("3943289336823952517761816069660925311475679888435866316473712666221797249817016714601521420059923119520886060694598194151288213951213185525309633124764149655567314286353816586186984944719612228107258321201270166459320656137141474266387621212037869516201606287027897843301130159520851620311758504293980894611113948118519486873600000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_200(void)
+ {
+ static const e_float val("788657867364790503552363213932185062295135977687173263294742533244359449963403342920304284011984623904177212138919638830257642790242637105061926624952829931113462857270763317237396988943922445621451664240254033291864131227428294853277524242407573903240321257405579568660226031904170324062351700858796178922222789623703897374720000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_201(void)
+ {
+ static const e_float val("158520231340322891214025006000369197521322331515121825922243249182116249442644071926981161086408909404739619639922847404881786200838770058117447251615518816153806034311423426764716794777728411569911784512291060691664690376713087265508782372723922354551304572738521493300705432412738235136532691872618031963366780714364483372318720000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_202(void)
+ {
+ static const e_float val("32021086730745224025233051212074577899307110966054608836293136334787482387414102529250194539454599699757403167264415175786120812569431551739724344826334800863068818930907532206472792545101139137122180471482794259716267456096043627632774039290232315619363523693181341646742497347373123497579603758268842456600089704301625641208381440000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_203(void)
+ {
+ static const e_float val("6500280606341280477122309396051139313559343526109085593767506675961858924645062813437789491509283739050752842954676280684582524951594605003164041999745964575202970242974229037913976886655531244835802635711007234722402293587496856409453129975917160070730795309715812354288726961516744070008659562928575018689818209973230005165301432320000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_204(void)
+ {
+ static const e_float val("1326057243693621217332951116794432419966106079326253461128571361896219220627592813941309056267893882766353579962753961259654835090125299420645464567948176773341405929566742723734451284877728373946503737685045475883370067891849358707528438515087100654429082243182025720274900300149415790281766550837429303812722914834538921053721492193280000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_205(void)
+ {
+ static const e_float val("271841734957192349553254978942858646093051746261881959531357129188724940228656526857968356534918245967102483892364562058229241193475686381232320236429376238534988215561182258365562513399934316659033266225434322556090863917829118535043329895592855634157961859852315272656354561530630237007762142921673007281608197541080478816012905899622400000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_206(void)
+ {
+ static const e_float val("55999397401181624007970525662228881095168659729947683663459568612877337687103244532741481446193158669223111681827099783995223685855991394533857968704451505138207572405603545223305877760386469231760852842439470446554717967072798418218925958492128260636540143129576946167209039675309828823599001441864639500011288693462578636098658615322214400000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_207(void)
+ {
+ static const e_float val("11591875262044596169649898812081378386699912564099170518336130702865608901230371618277486659361983844529184118138209655287011302972190218668508599521821461563608967487959933861224316696399999130974496538384970382436826619184069272571317673407870549951763809627822427856612271212789134566484993298465980376502336759546753777672422333371698380800000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_208(void)
+ {
+ static const e_float val("2411110054505276003287178952912926704433581813332627467813915186196046651455917296601717225147292639662070296572747608299698351018215565483049788700538864005230665237495666243134657872851199819242695279984073839546859936790286408694834076068837074389966872402587064994175352412260139989828878606080923918312486045985724785755863845341313263206400000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_209(void)
+ {
+ static const e_float val("503922001391602684687020401158801681226618598986519140773108273914973750154286714989758900055784161689372691983704250134636955362807053185957405838412622577093209034636594244815143495425900762221723313516671432465293726789169859417220321898386948547503076332140696583782648654162369257874235628670913098927309583611016480222975543676334472010137600000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_210(void)
+ {
+ static const e_float val("105823620292236563784274284243348353057589905787169019562352737522144487532400210147849369011714673954768265316577892528273760626189481169051055226066650741189573897273684791411180134039439160066561895838501000817711682625725670477616267598661259194975646029749546282594356217374097544153589482020891750774735012558313460846824864172030239122128896000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_211(void)
+ {
+ static const e_float val("22328783881661914958481873975346502495151470121092663127656427617172486869336444341196216861471796204456103981797935323465763492125980526669772652700063306391000092324747490987759008282321662774044560021923711172537165034028116470777032463317525690139861312277154265627409161865934581816407380706408159413469087649804140238680046340298380454769197056000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_212(void)
+ {
+ static const e_float val("4733702182912325971198157282773458528972111665671644583063162654840567216299326200333597974632020795344694044141162288574741860330707871653991802372413420954892019572846468089404909755852192508097446724647826768577878987213960691804730882223315446309650598202756704313010742315578131345078364709758529795655446581758477730600169824143256656411069775872000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_213(void)
+ {
+ static const e_float val("1008278564960325431865207501230746666671059784788060296192453645481040817071756480671056368596620429408419831402067567466420016250440776662300253905324058663392000169016297703043245777996517004224756152349987101707088224276573627354407677913566190063955577417187178018671288113218141976501691683178566846474610121914555756617836172542513667815557862260736000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_214(void)
+ {
+ static const e_float val("215771612901509642419154405263379786667606793944644903385185080132942734853355886863606062879676771893401843920042459437813883477594326205732254335739348553965888036169487708451254596491254638904097816602897239765316879995186756253843243073503164673686493567278056095995655656228682382971362020200213305145566566089714931916216940924097924912529382523797504000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_215(void)
+ {
+ static const e_float val("46390896773824573120118197131626654133535460698098654227814792228582687993471515675675303519130505957081396442809128779129984947682780134232434682183959939102665927776439857317019738245619747364381030569622906549543129198965152594576297260803180404842596116964782060639065966089166712338842834343045860606296811709288710361986642298681053856193817242616463360000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_216(void)
+ {
+ static const e_float val("10020433703146107793945530580431357292843659510789309313207995121373860606589847385945865560132189286729581631646771816292076748699480508994205891351735346846175840399711009180476263461053865430706302603038547814701315906976472960428480208333486967446000761264392925098038248675260009865190052218097905890960111329206361438189114736515107632937864524405156085760000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_217(void)
+ {
+ static const e_float val("2174434113582705391286180135953604532547074113841280120966134941338127751629996882750252826548685075220319214067349484135380654467787270451742678423326570265620157366737288992163349171048688798463267664859364875790185551813894632412980205208366671935782165194373264746274299962531422140746241331327245578338344158437780432087037897823778356347516601795918870609920000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_218(void)
+ {
+ static const e_float val("474026636761029775300387269637885788095262156817399066370617417211711849855339320439555116187613346398029588666682187541512982673977624958479903896285192317905194305948729000291610119288614158064992350939341542922260450295429029866029684735423934482000512012373371714687797391831850026682680610229339536077759026539436134194974261725583681683758619191510313792962560000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_219(void)
+ {
+ static const e_float val("103811833450665520790784812050696987592862412343010395535165214369364895118319311176262570445087322861168479918003399071591343205601099865907098953286457117621237553002771651063862616124206500616233324855715797899975038614698957540660500957057841651558112130709768405516627628811175155843507053640225358401029226812136513388699363317902826288743137602940758720658800640000000000000000000000000000000000000000000000000000");
+ return val;
+ }
+
+ static const e_float& A000142_220(void)
+ {
+ static const e_float val("+2.28386033591464145739726586511533372704297307154622870177363471612602769260302484587777654979192110294570655819607477957500955052322419704995617697230205658766722616606097632340497755473254301355713314682574755379945084952337706589453102105527251633427846687561490492136580783384585342855715518008495788482264298986700329455138599299386217835234902726469669185449361408000000000000000000000000000000000000000000000000000E+000000000000000421");
+ return val;
+ }
+
+ static const e_float& A000142_221(void)
+ {
+ static const e_float val("+5.04733134237135762084795756190488753676497048811716543091973272263852120065268490938988617504014563751001149361332526286077110665632547548040315110878754505874456982699475767472500039595892005996126425448490209389678637744666331562691355653215226109875541179510893987621843531279933607711131294798775692545804100760607728095856304451643541415869135025497968899843088711680000000000000000000000000000000000000000000000000E+000000000000000423");
+ return val;
+ }
+
+ static const e_float& A000142_222(void)
+ {
+ static const e_float val("+1.12050755800644139182824657874288503316182344836201072566418066442575170654489604988455473085891233152722255158215820835509118567770425555664949954615083500304129450159283620378895008790288025331140066449564826484508657579315925606917480955013780196392370141851418465252049263944145260911871147445328203745168510368854915637280099588264866194322947975660549095765165693992960000000000000000000000000000000000000000000000E+000000000000000426");
+ return val;
+ }
+
+ static const e_float& A000142_223(void)
+ {
+ static const e_float val("+2.49873185435436430377698987059663362395086628984728391823112288166942630559511819124255704981537449930570629002821280463185334406128048989132838398791636205678208673855202473444935869602342296488442348182529563060454306401874514103425982529680729837954985416328663177512069858595443931833472658803081894351725778122546461871134622081830651613340173985723024483556319497604300800000000000000000000000000000000000000000000E+000000000000000428");
+ return val;
+ }
+
+ static const e_float& A000142_224(void)
+ {
+ static const e_float val("+5.59715935375377604046045731013645931764994048925791597683771525493951492453306474838332779158643887844478208966319668237535149069726829735657558013293265100719187429435653540516656347909246744134110859928866221255417646340198911591674200866484834837019167332576205517627036483253794407306978755718903443347865742994504074591341553463300659613881989728019574843166155674633633792000000000000000000000000000000000000000000E+000000000000000430");
+ return val;
+ }
+
+ static const e_float& A000142_225(void)
+ {
+ static const e_float val("+1.25936085459459960910360289478070334647123661008303109478848593236139085801993956838624875310694874765007597017421925353445408540688536690522950552990984647661817171623022046616247678279580517430174943483994899782468970426544755108126695194959087838329312649829646241466083208732103741644070220036753274753269792173763416783051849529242648413123447688804404339712385026792567603200000000000000000000000000000000000000000E+000000000000000433");
+ return val;
+ }
+
+ static const e_float& A000142_226(void)
+ {
+ static const e_float val("+2.84615553138379511657414254220438956302499473878765027422197820713674333912506342455292218202170416968917169259373551298786623301956092920581868249759625303715706807868029825352719752911851969392195372273828473508379873163991146544366331140607538514624246588615000505713348051734554456115598697283062400942389730312705321929697179936088385413658991776697953807749990160551202783232000000000000000000000000000000000000000E+000000000000000435");
+ return val;
+ }
+
+ static const e_float& A000142_227(void)
+ {
+ static const e_float val("+6.46077305624121491462330357080396430806673805704796612248389053020040737981389397373513335318926846519441974218777961448245634895440330929720840926954349439434654453860427703550673839109903970520283495061590634864022312082259902655711571689179112428197039756156051147969300077437438615382409042832551650139224687809841080780412598454920634889005911333104355143592477664451230317936640000000000000000000000000000000000000E+000000000000000437");
+ return val;
+ }
+
+ static const e_float& A000142_228(void)
+ {
+ static const e_float val("+1.47305625682299700053411321414330386223921627700693627592632704088569288259756782601161040452715321006432770121881375210200004756160395451976351731345591672191101215480177516409553635317058105278624636874042664748997087154755257805502238345132837633628925064403579661737000417655736004307189261765821776231743228820643766417934072447721904754693347783947792972739084907494880512489553920000000000000000000000000000000000E+000000000000000440");
+ return val;
+ }
+
+ static const e_float& A000142_229(void)
+ {
+ static const e_float val("+3.37329882812466313122311926038816584452780527434588407187128892362823670114843032156658782636718085104731043579108349231358010891607305585025845464781404929317621783449606512577877824876063061088050418441557702275203329584389540374600125810354198181010238397484197425377730956431635449863463409443731867570691993999274225097069025905283161888247766425240445907572504438163276373601078476800000000000000000000000000000000E+000000000000000442");
+ return val;
+ }
+
+ static const e_float& A000142_230(void)
+ {
+ static const e_float val("+7.75858730468672520181317429889278144241395213099553336530396452434494441264138973960315200064451595740881400231949203232123425050696802845559444568997231337430530101934094978929118997214945040502515962415582715232967658044095942861580289363814655816323548314213654078368781199792761534685965841720583295412591586198330717723258759582151272342969862778053025587416760207775535659282480496640000000000000000000000000000000E+000000000000000444");
+ return val;
+ }
+
+ static const e_float& A000142_231(void)
+ {
+ static const e_float val("+1.79223366738263352161884326304423251319762294225996820738521580512368215932016102984832811214888318616143603453580265946620511186710961457324231695438360438946452453546775940132626488356652304356081187317999607218815529008186162801025046843041185493570739660583354092103188457152127914512458109437454741240308656411814395794072773463476943911226038301730248910693271607996148737294252994723840000000000000000000000000000E+000000000000000447");
+ return val;
+ }
+
+ static const e_float& A000142_232(void)
+ {
+ static const e_float val("+4.15798210832770977015571637026261943061848522604312624113370066788694260962277358924812122018540899189453160012306216996159585953169430580992217533416996218355769692228520181107693452987433346106108354577759088747652027298991897698378108675855550345084116012553381493679397220592936761668902813894894999677516082875409398242248834435266509874044408860014177472808390130551065070522666947759308800000000000000000000000000E+000000000000000449");
+ return val;
+ }
+
+ static const e_float& A000142_233(void)
+ {
+ static const e_float val("+9.68809831240356376446281914271190327334107057668048414184152255617657628042106246294812244303200295111425862828673485601051835270884773253711866852861601188768943382892452021980925745460719696427232466166178676782029223606651121637220993214743432304045990309249378880272995523981542654688543556375105349248612473099703897904439784234170968006523472643833033511643549004183981614317813988279189504000000000000000000000000E+000000000000000451");
+ return val;
+ }
+
+ static const e_float& A000142_234(void)
+ {
+ static const e_float val("+2.26701500510243392088429967939458536596181051494323328919091627814531884961852861632986065166948869056073651901909595630646129453387036941368576843569614678171932751596833773143536624437808408963972397082885810366994838323956362463109712412249963159146761732364354657983880952611680981197119192191774651724175318705330712109638909510796006513526492598656929841724590466979051697750368473257330343936000000000000000000000E+000000000000000454");
+ return val;
+ }
+
+ static const e_float& A000142_235(void)
+ {
+ static const e_float val("+5.32748526199071971407810424657727561001025471011659822959865325364149929660354224837517253142329842281773081969487549732018404215459536812216155582388594493704041966252559366887311067428849761065335133144781654362437870061297451788307824168787413423994890071056233446262120238637450305813230101650670431551811998957527173457651437350370615306787257606843785128052787597400771489713365912154726308249600000000000000000000E+000000000000000456");
+ return val;
+ }
+
+ static const e_float& A000142_236(void)
+ {
+ static const e_float val("+1.25728652182980985252243260219223704396242011158751718218528216785939383399843597061654071741589842778498447344799061736756343394848450687683012717443708300514153904035604010585405411913208543611419091422168470429535337334466198622040646503833829568062794056769271093317860376318438272171922303989558221846227631753976412936005739214687465212401792795215133290220457872986582071572354355268515408746905600000000000000000E+000000000000000459");
+ return val;
+ }
+
+ static const e_float& A000142_237(void)
+ {
+ static const e_float val("+2.97976905673664935047816526719560179419093566446241572177911873782676338657629325036120150027567927385041320207173776316112533845790828129808740140341588672218544752564381505087410826234304248359063246670539274917998749482684890734236332214086176076308821914543172491163329091874698705047455860455252985775559487256924098658333601938809292553392248924659865897822485158978199509626479821986381518730166272000000000000000E+000000000000000461");
+ return val;
+ }
+
+ static const e_float& A000142_238(void)
+ {
+ static const e_float val("+7.09185035503322545413803333592553227017442688142054941783430259602769686005157793585965957065611667176398342093073587632347830552982170948944801534012981039880136511103227982108037766437644111094570527075883474304837023768790039947482470669525099061614996156612750528968723238661782918012944947883502106145831579671479354806833972614366116277073552440690480836817514678368114832911021976327588014577795727360000000000000E+000000000000000463");
+ return val;
+ }
+
+ static const e_float& A000142_239(void)
+ {
+ static const e_float val("+1.69495223485294088353898996728620221257168802465951131086239832045061954955232712667045863738681188455159203760244587444131131502162738856797807566629102468531352626153671487723821026178596942551602355971136150358856048680740819547448310490016498675725984081430447376423524854040166117405093842544157003368853747541483565798833319454833501790220579033325024919999386008129979445065734252342293535484093178839040000000000E+000000000000000466");
+ return val;
+ }
+
+ static const e_float& A000142_240(void)
+ {
+ static const e_float val("+4.06788536364705812049357592148688531017205125918282714606975596908148691892558510400910072972834852292382089024587009865914715605190573256314738159909845924475246302768811570537170462828632662123845654330726760861254516833777966913875945176039596821742361795433073703416459649696398681772225222105976808085248994099560557917199966691600404296529389679980059807998526419511950668157762205621504485161823629213696000000000E+000000000000000468");
+ return val;
+ }
+
+ static const e_float& A000142_241(void)
+ {
+ static const e_float val("+9.80360372638941007038951797078339359751464353463061342202811188548638347461066010066193275864531994024640834549254693776854464608509281547718518965382728677985343589672835884994580815417004715718468026937051493675623385569404900262441027874255428340399091926993707625233667755768320823071062785275404107485450075779940944580451919726756974354635829128751944137276448671023801110260206915547825809239994946405007360000000E+000000000000000470");
+ return val;
+ }
+
+ static const e_float& A000142_242(void)
+ {
+ static const e_float val("+2.37247210178623723703426334892958125059854373538060844813080307628770480085577974436018772759216742553963081960919635893998780435259246134547881589622620340072453148700826284168688557330915141203869262518766461469500859307795985863510728745569813658376580246332477245306547596895933639183197194036647794011478918338745708588469364573875187793821870649157970481220900578387759868682970073562573845836078777030011781120000E+000000000000000473");
+ return val;
+ }
+
+ static const e_float& A000142_243(void)
+ {
+ static const e_float val("+5.76510720734055648599325993789888243895446127697487852895785147537912266607954477879525617804896684406130289165034715222417036457679968106951352262782967426376061151343007870529913194314123793125402307920602501370887088117944245648331070851734647189855089998587919706094910660457118743215169181509054139447893771563152071869980555914516706338987145677453868269366788405482256480899617278757054445381671428182928628121600E+000000000000000475");
+ return val;
+ }
+
+ static const e_float& A000142_244(void)
+ {
+ static const e_float val("+1.40668615859109578258235542484732731510488855158187036106571575999250593052340892602604250744394790995095790556268470514269756895673912218096129952119044052035758920927693920409298819412646205522598163132627010334496449500778395938192781287823253914324641959655452408287158201151536973344501280288209210025286080261409105536275255643142076346712863545298743857725496370937670581339506616016721284673127828476634585261670E+000000000000000478");
+ return val;
+ }
+
+ static const e_float& A000142_245(void)
+ {
+ static const e_float val("+3.44638108854818466732677079087595192200697695137558238461100361198163952978235186876380414323767237937984686862857752759960904394401084934335518382691657927487609356272850105002782107560983203530365499674936175319516301276907070048572314155166972090095372801155858400303537592821265584694028136706112564561950896640452308563874376325698087049446515685981922451427466108797292924281791209240967147449163179767754733891092E+000000000000000480");
+ return val;
+ }
+
+ static const e_float& A000142_246(void)
+ {
+ static const e_float val("+8.47809747782853428162385614555484172813716330038393266614306888547483324326458559715895819236467405327442329682630071789503824810226668938465375221421478501619519016431211258306843984600018680684699129200342991286010101141191392319487892821710751341634617090843411664746702478340313338347309216297036908822399205735512679067130965761217294141638428587515529230511566627641340593733206374732779182724941422228676645372088E+000000000000000482");
+ return val;
+ }
+
+ static const e_float& A000142_247(void)
+ {
+ static const e_float val("+2.09409007702364796756109246795204590684987933519483136853733801471228381108635264249826267351407449115878255431609627732007444728125987227800947679691105189900021197058509180801790464196204614129120684912484718847644494981874273902913509526962555581383750421438322681192435512150057394571785376425368116479132603816671631729581348543020671652984691861116335719936356957027411126652101974558996458133060531290483131406906E+000000000000000485");
+ return val;
+ }
+
+ static const e_float& A000142_248(void)
+ {
+ static const e_float val("+5.19334339101864695955150932052107384898770075128318179397259827648646385149415455339569143031490473807378073470391876775378462925752448324946350245633940870952052568705102768388440351206587443040219298582962102742158347555048199279225503626867137841831701045167040249357240070132142338538027733534912928868248857465345646689361744386691265699402035815568512585442165253427979594097212896906311216169990117600398165889126E+000000000000000487");
+ return val;
+ }
+
+ static const e_float& A000142_249(void)
+ {
+ static const e_float val("+1.29314250436364309292832582080974738839793748706951226669917697084512949902204448379552716614841127978037140294127577317069237268512359632911641211162851276867061089607570589328721647450440273317014605347157563582797428541207001620527150403089917322616093560246593022089952777462903442295968905650193319288193965508871066025651074352286125159151106918076559633775099148103566918930206011329671492826327539282499143306392E+000000000000000490");
+ return val;
+ }
+
+ static const e_float& A000142_250(void)
+ {
+ static const e_float val("+3.23285626090910773232081455202436847099484371767378066674794242711282374755511120948881791537102819945092850735318943292673093171280899082279103027907128192167652724018926473321804118626100683292536513367893908956993571353017504051317876007724793306540233900616482555224881943657258605739922264125483298220484913772177665064127685880715312897877767295191399084437747870258917297325515028324178732065818848206247858265981E+000000000000000492");
+ return val;
+ }
+
+ static const e_float& A000142_251(void)
+ {
+ static const e_float val("+8.11446921488186040812524452558116486219705773136118947353733549205318760636332913581693296758128078062183055345650547664609463859915056696520548600046891762340808337287505448037728337751512715064266648553413711482053864096073935168807868779389231199415987090547371213614453678579719100407204882954963078533417133568165939310960491560595435373673195910930411701938747154349882416287042721093688617485205308997682124247612E+000000000000000494");
+ return val;
+ }
+
+ static const e_float& A000142_252(void)
+ {
+ static const e_float val("+2.04484624215022882284756162044645354527365854830301974733140854399740327680355894222586710783048275671670129947103938011481584892698594287523178247211816724109883700996451372905507541113381204196195195435460255293477573752210631662539582932406086262252828746817937545830842327002089213302615630504650695790421117659177816706362043873270049714165645369554463748888564282896170368904334765715609531606271737867415895310398E+000000000000000497");
+ return val;
+ }
+
+ static const e_float& A000142_253(void)
+ {
+ static const e_float val("+5.17346099264007892180433089972952746954235612720663996074846361631343029031300412383144378281112137449325428766172963169048409778527443547433640965445896311998005763521021973450934079016854446616373844451714445892498261593092898106225144818987398243499656729449381990952031087315285709655617545176766260349765427677719876267095970999373225776839082784972793284688067635727311033327966957260492114963867496804562215135308E+000000000000000499");
+ return val;
+ }
+
+ static const e_float& A000142_254(void)
+ {
+ static const e_float val("+1.31405909213058004613830004853129997726375845631048655003010975854361129373950304745318672083402482912128658906607932644938296083745970661048144805223257663247493463934339581256537256070281029440558956490735469256694558444645596118981186784022799153848912809280143025701815896178082570252526856474898630128840418630140848571842376633840799347317127027383089494310769179474737002465303607144164997200822344188358802644368E+000000000000000502");
+ return val;
+ }
+
+ static const e_float& A000142_255(void)
+ {
+ static const e_float val("+3.35085068493297911765266512375481494202258406359174070257677988428620879903573277100562613812676331425928080211850228244592655013552225185672769253319307041281108333032565932204170002979216625073425339051375446604571124033846270103402026299258137842314727663664364715539630535254110554143943484010991506828543067506859163858198060416294038335658673919826878210492461407660579356286524198217620742862096977680314946743139E+000000000000000504");
+ return val;
+ }
+
+ static const e_float& A000142_256(void)
+ {
+ static const e_float val("+8.57817775342842654119082271681232625157781520279485619859655650377269452553147589377440291360451408450375885342336584306157196834693696475322289288497426025679637332563368786442675207626794560187968867971521143307702077526646451464709187326100832876325702818980773671781454170250523018608495319068138257481070252817559459476987034665712738139286205234756808218860701203611083152093501947437109101726968262861606263662435E+000000000000000506");
+ return val;
+ }
+
+ static const e_float& A000142_257(void)
+ {
+ static const e_float val("+2.20459168263110562108604143822076784665549850711827804303931502146958249306158930470002154879636011971746602532980502166682399586516279994157828347143838488599666794468785778115767528360086201968307999068680933830079433924348138026430261142807914049215705624478058833647833721754384415782383297000511532172635054974112781085585667909088173701796554745332499712247200209328048370088030000491337039143830843555432809761246E+000000000000000509");
+ return val;
+ }
+
+ static const e_float& A000142_258(void)
+ {
+ static const e_float val("+5.68784654118825250240198691060958104437118614836515735104143275539152283209890040612605559589460910887106234535089695590040590933212002384927197135631103300587140329729467307538680223169022401078234637597196809281604939524818196108190073748444418246976520511153391790811411002126311792718548906261319753005398441833210975200811023205447488150635111242957849257597776540066364794827117401267649560991083576373016649184014E+000000000000000511");
+ return val;
+ }
+
+ static const e_float& A000142_259(void)
+ {
+ static const e_float val("+1.47315225416775739812211460984788149049213721242657575391973108364640441351361520518664839933670375919760514744588231157820513051701908617696144058128455754852069345399932032652518177800776801879262771137673973603935679336927912792021229100847104325966918812388728473820155449550714754314104166721681816028398196434801642577010055010210899431014493811926082957717824123877188481860223406928321236296690646280611312138660E+000000000000000514");
+ return val;
+ }
+
+ static const e_float& A000142_260(void)
+ {
+ static const e_float val("+3.83019586083616923511749798560449187527955675230909696019130081748065147513539953348528583827542977391377338335929401010333333934424962406009974551133984962615380298039823284896547262282019684886083204957952331370232766276012573259255195662202471247513988912210694031932404168831858361216670833476372721673835310730484270700226143026548338520637683911007815690066342722080690052836580858013635214371395680329589411560515E+000000000000000516");
+ return val;
+ }
+
+ static const e_float& A000142_261(void)
+ {
+ static const e_float val("+9.99681119678240170365666974242772379447964312352674306609929513362450035010339278239659603789887170991494853056775736636970001568849151879686033578459700752426142577883938773579988354556071377552677164940255584876307519980392816206656060678348449956011511060869911423343574880651150322775510875373332803568710161006563946527590233299291163538864355007730398951073154504630601037903476039415587909509342725660228364172945E+000000000000000518");
+ return val;
+ }
+
+ static const e_float& A000142_262(void)
+ {
+ static const e_float val("+2.61916453355698924635804747251606363415366649836400668331801532500961909172708890898790816192950438799771651500875242998886140411038477792477740797556441597135649355405591958677956948893690700918801417214346963237592570234862917846143887897727293888475015897947916792916016618730601384567183849347813194535002062183719753990228641124414284847182461012025364525181166480213217471930710722326884032291447794122979831413311E+000000000000000521");
+ return val;
+ }
+
+ static const e_float& A000142_263(void)
+ {
+ static const e_float val("+6.88840272325488171792166485271724735782414289069733757712638030477529821124224383063819846587459654043399443447301889087070549281031196594216458297573441400466757804716706851323026775590406543416447727273732513314868459717689473935358425171022782926689291811603021165369123707261481641411693523784748701627055423543182952994301326157209569148089872461626708701226467842960761951177769199719705004926507698543436956617009E+000000000000000523");
+ return val;
+ }
+
+ static const e_float& A000142_264(void)
+ {
+ static const e_float val("+1.81853831893928877353131952111735330246557372314409712036136440046067872776795237128848439499089348667457453070087698718986625010192235900873144990559388529723224060445210608749279068755867327461942200000265383515125273365470021118934624245150014692645973038263197587657448658717031153332687090279173657229542631815400299590495550105503326255095726329869451097123787510541641155110931068726002121300598032415467356546890E+000000000000000526");
+ return val;
+ }
+
+ static const e_float& A000142_265(void)
+ {
+ static const e_float val("+4.81912654518911524985799673096098625153377036633185736895761566122079862858507378391448364672586773968762250635732401605314556277009425137313834224982379603766543760179808113185589532203048417774146830000703266315081974418495555965176754249647538935511828551397473607292238945600132556331620789239810191658287974310810793914813207779583814576003674774154045407378036902935349061043967332123905621446584785900988494849260E+000000000000000528");
+ return val;
+ }
+
+ static const e_float& A000142_266(void)
+ {
+ static const e_float val("+1.28188766102030465646222713043562234290798291744427406014272576588473243520362962652125265002908081875690758669104818827013671969684507086525479903845312974601900640207828958107366815566010879127923056780187068839811805195319817886737016630406245356846146394671727979539735559529635259984211129937789510981104601166675671181340313269369294677216977489924976078362557816180802850237695310344958895304791553049662939629903E+000000000000000531");
+ return val;
+ }
+
+ static const e_float& A000142_267(void)
+ {
+ static const e_float val("+3.42264005492421343275414643826311165556431438957621174058107779491223560199369110281174457557764578608094325646509866268126504159057633921023031343266985642187074709354903318146669397561249047271554561603099473802297519871503913757587834403184675102779210873773513705371093943944126144157843716933897994319549285115024042054178636429216016788169329898099686129228029369202743610134646478621040250463793446642600048811841E+000000000000000533");
+ return val;
+ }
+
+ static const e_float& A000142_268(void)
+ {
+ static const e_float val("+9.17267534719689199978111245454513923691236256406424746475728849036479141334309215553547546254809070669692792732646441598579031146274458908341723999955521521061360221071140892633073985464147446687766225096306589790157353255630488870335396200534929275448285141713016730394531769770258066343021161382846624776392084108264432705198745630298924992293804126907158826331118709463352875160852562704387871242966437002168130815734E+000000000000000535");
+ return val;
+ }
+
+ static const e_float& A000142_269(void)
+ {
+ static const e_float val("+2.46744966839596394794111925027264245472942552973328256801971060390812889018929178983904289942543640010147361245081892790017759378347829446343923755988035289165505899468136900118296902089855663159009114550906472653552328025764601506120221577943895975095588703120801500476129046068199419846272692411985742064849470625123132397698462574550410822927033310138025724283070932845641923418269339367480337364357971553583227189433E+000000000000000538");
+ return val;
+ }
+
+ static const e_float& A000142_270(void)
+ {
+ static const e_float val("+6.66211410466910265944102197573613462776944893027986293365321863055194800351108783256541582844867828027397875361721110533047950321539139505128594141167695280746865928563969630319401635642610290529324609287447476164591285669564424066524598260448519132758089498426164051285548424384138433584936269512361503575093570687832457473785848951286109221902989937372669455564291518683233193229327216292196910883766523194674713411468E+000000000000000540");
+ return val;
+ }
+
+ static const e_float& A000142_271(void)
+ {
+ static const e_float val("+1.80543292236532682070851695542449248412552066010584285502002224887957790895150480262522768950959181395424824223026420954455994537137106805889849012256445421082400666640835769816557843259147388733446969116898266040604238416451958922028166128581548684977442254073490457898383623008101515501517729037849967468850357656402595975395965065798535599135710273027993422457923001563156195365147675615185362849500727785756847334508E+000000000000000543");
+ return val;
+ }
+
+ static const e_float& A000142_272(void)
+ {
+ static const e_float val("+4.91077754883368895232716611875461955682141619548789256565446051695245191234809306314061931546608973395555521886631864996120305141012930512020389313337531545344129813263073293901037333664880897354975755997963283630443528492749328267916611869741812423138642931079894045483603454582036122164128222982951911515272972825415061053077024978972016829649131942636142109085550564251784851393201677673304186950641979577258624749861E+000000000000000545");
+ return val;
+ }
+
+ static const e_float& A000142_273(void)
+ {
+ static const e_float val("+1.34064227083159708398531635042001113901224662136819467042366772112801937207102940623738907312224249736986657475050499143940843303496530029781566282541146111878947439020819009234983192090512484977908381387443976431111083278520566617141235040439514791516849520184811074417023743100895861350807004874345871843669521581338311667490027819259360594494213020339666795780355304040737264430344058004812043037525260424591604556712E+000000000000000548");
+ return val;
+ }
+
+ static const e_float& A000142_274(void)
+ {
+ static const e_float val("+3.67335982207857601011976680015083052089355574254885339696084955589077307947462057309044606035494444279343441481638367654397910651580492281601491614162740346548315982917044085303853946328004208839468965001596495421244368183146352530966984010804270528756167685306382343902645056096454660101211193355707688851654489132866973968922676224770648028914143675730687020438173533071620104539142718933184997922819213563380996485391E+000000000000000550");
+ return val;
+ }
+
+ static const e_float& A000142_275(void)
+ {
+ static const e_float val("+1.01017395107160840278293587004147839324572782920093468416423362786996259685552065759987266659760972176819446407450551104959425429184635377440410193894753595300786895302187123458559835240201157430853965375439036240842201250365246946015920602971174395407946113459255144573227390426525031527833078172819614434204984511538417841453735961811928207951389510825938930620497721594695528748264247706625874428775283729929774033483E+000000000000000553");
+ return val;
+ }
+
+ static const e_float& A000142_276(void)
+ {
+ static const e_float val("+2.78808010495763919168090300131448036535820880859457972829328481292109676732123701497564855980940283208021672084563521049688014184549593641735532135149519923030171831034036460745625145262955194509156944436211740024724475451008081571003940864200441331325931273147544199022107597577209087016819295756982135838405757251846033242412311254600921853945835049879591448512573711601359659345209323670287413423419783094606176332412E+000000000000000555");
+ return val;
+ }
+
+ static const e_float& A000142_277(void)
+ {
+ static const e_float val("+7.72298189073266056095610131364111061204223839980698584737239893179143804547982653148254651067204584486220031674240953307635799291202374387607424014364170186793575971964280996265381652378385888790364736088306519868486796999292385951680916193835222487772829626618697431291238045288869171036589449246840516272383947587613512081482102175244553535429963088166468312379829181135766256386229826566696135182872799172059108440781E+000000000000000557");
+ return val;
+ }
+
+ static const e_float& A000142_278(void)
+ {
+ static const e_float val("+2.14698896562367963594579616519222875014774227514634206556952690303801977664339177575214792996682874487169168805438985019522752202954260079754863875993239311928614120206070116961776099361191277083721396632549212523439329565803283294567294701886191851600846636199997885898964176590305629548171866890621663523722737429356556358652024404717985882849529738510278190841592512355743019275371891785541525580838638169832432146537E+000000000000000560");
+ return val;
+ }
+
+ static const e_float& A000142_279(void)
+ {
+ static const e_float val("+5.99009921409006618428877130088631821291220094765829436293898005947607517683506305434849272460745219819201980967174768204468478646242385622516070214021137680280833395374935626323355317217723663063582696604812302940395729488591160391842752218262475265966362114997994101658110052686952706439399508624834441231186437427904792240639148089163180613150187970443676152448043109472523023778287578081660856370539800493832485688838E+000000000000000562");
+ return val;
+ }
+
+ static const e_float& A000142_280(void)
+ {
+ static const e_float val("+1.67722777994521853160085596424816909961541626534432242162291441665330104951381765521757796289008661549376554670808935097251174020947867974304499659925918550478633350704981975370539488820962625657803155049347444823310804256805524909715970621113493074470581392199438348464270814752346757803031862414953643544732202479813341827378961464965690571682052631724229322685452070652306446657920521862865039783751144138273095992875E+000000000000000565");
+ return val;
+ }
+
+ static const e_float& A000142_281(void)
+ {
+ static const e_float val("+4.71301006164606407379840525953735516991931970561754600476038951079577594913382761116139407572114338953748118624973107623275798998863509007795644044391831126844959715480999350791215963586904978098426865688666319953503359961623524996301877445328915539262333712080421759184600989454094389426519533386019738360697488968275490534934881716553590506426567895145084396746120318532981115108756666434650761792340715028547399739978E+000000000000000567");
+ return val;
+ }
+
+ static const e_float& A000142_282(void)
+ {
+ static const e_float val("+1.32906883738419006881115028318953415791724815698414797334242984204440881765573938634751312935336243584956969452242416349763775317679509540198371620518496377770278639765641816923122901731507203823756376124203902226887947509177834048957129439582754182071978106806678936090057479026054617818278508414857566217716691889053688330851636644068112522812292146430913799882405929826300674460669379934571514825440081638050366726674E+000000000000000570");
+ return val;
+ }
+
+ static const e_float& A000142_283(void)
+ {
+ static const e_float val("+3.76126480979725789473555530142638166690581228426513876455907645298567695396574246336346215607001569345428223549846038269831484149033011998761391686067344749089888550536766341892437811900165386821230544431497043302092891450973270358548676314019194335263698042262901389134862665643734568425728178814046912396138238046021937976310131702712758439558786774399486053667208781408430908723694345214837386955995431035682537836487E+000000000000000572");
+ return val;
+ }
+
+ static const e_float& A000142_284(void)
+ {
+ static const e_float val("+1.06819920598242124210489770560509239340125068873129940913477771264793225492627085959522325232388445694101615488156274868632141498325375407648235238843125908741528348352441641097452338579646969857229474618545160297794381172076408781827824073181451191214890244002663994514300997042820617432906802783189323120503259605070230385272077403570423396834695443929454039241487293919994378077529194041013817895502702414133840745562E+000000000000000575");
+ return val;
+ }
+
+ static const e_float& A000142_285(void)
+ {
+ static const e_float val("+3.04436773704990053999895846097451332119356446288420331603411648104660692653987194984638626912307070228189604141245383375601603270227319911797470430702908839913355792804458677127739164951993864093104002662853706848713986340417765028209298608567135894962437195407592384365757841572038759683784387932089570893434289874450156598025420600175706680978882015198944011838238787671983977520958203016889381002182701880281446124853E+000000000000000577");
+ return val;
+ }
+
+ static const e_float& A000142_286(void)
+ {
+ static const e_float val("+8.70689172796271554439702119838710809861359436384882148385757313579329580990403377656066472969198220852622267843961796454220585352850134947740765431810319282152197567420751816585334011762702451306277447615761601587322000933594807980678594020502008659592570378865714219286067426896030852695623349485776172755222069040927447870352702916502521107599602563468979873857362932741874175709940460628303629666242527377604935917078E+000000000000000579");
+ return val;
+ }
+
+ static const e_float& A000142_287(void)
+ {
+ static const e_float val("+2.49887792592529936124194508393710002430210158242461176586712348997267589744245769387291077742159889384702590871217035582361307996267988730001599678929561633977680701849755771359990861375895603524901627465723579655561414267941709890454756483884076485303067698734459980935101351519160854723643901302417761580748733814746177538791225737036223557881085935715597223797063161696917888428752912200323141714211605357372616608201E+000000000000000582");
+ return val;
+ }
+
+ static const e_float& A000142_288(void)
+ {
+ static const e_float val("+7.19676842666486216037680184173884806999005255738288188569731565112130658463427815835398303897420481427943461709105062477200567029251807542404607075317137505855720421327296621516773680762579338151716687101283909408016873091672124484509698673586140277672834972355244745093091892375183261604094435750963153352556353386468991311718730122664323846697527494860920004535541905687123518674808387136930648136929423429233135831620E+000000000000000584");
+ return val;
+ }
+
+ static const e_float& A000142_289(void)
+ {
+ static const e_float val("+2.07986607530614516434889573226252709222712518908365286496652422317405760295930638776430109826354519132675660433931363055910963871453772379754931444766652739192303201763588723618347593740385428725846122572271049818916876323493243976023302916666394540247449307010665731331903556896427962603583291932028351318888786128689538489086713005449989591695585446014805881310771610743578696897019623882572957311572603371048376255338E+000000000000000587");
+ return val;
+ }
+
+ static const e_float& A000142_290(void)
+ {
+ static const e_float val("+6.03161161838782097661179762356132856745866304834259330840292024720476704858198852451647318496428105484759415258400952862141795227215939901289301189823292943657679285114407298493208021847117743304953755459586044474858941338130407530467578458332544166717602990330930620862520314999641091550391546602882218824777479773199661618351467715804969815917197793442937055801237671156378221001356909259461576203560549776040291140481E+000000000000000589");
+ return val;
+ }
+
+ static const e_float& A000142_291(void)
+ {
+ static const e_float val("+1.75519898095085590419403310845634661313047094706769465274524979193658721113735866063429369682460578696064989840194677282883262411119838511275186646238578246604384671968292523861523534357511263301741542838739538942183951929395948591366065331374770352514822470186300810670993411664895557641163940061438725678010246614001101530940277105299246216431904557891894683238160162306506062311394860594503318675236119984827724721880E+000000000000000592");
+ return val;
+ }
+
+ static const e_float& A000142_292(void)
+ {
+ static const e_float val("+5.12518102437649924024657667669253211034097516543766838601612939245483465652108728905213759472784889792509770333368457666019126240469928452923545007016648480084803242147414169675648720323932888841085305089119453711177139633836169886788910767614329429343281612943998367159300762061495028312198704979401078979789920112883216470345609147473798951981161309044332475055427673934997701949272992935949690531689470355696956187889E+000000000000000594");
+ return val;
+ }
+
+ static const e_float& A000142_293(void)
+ {
+ static const e_float val("+1.50167804014231427739224696627091190832990572347323683710272591198926655436067857569227631525525972709205362707676958096143603988457689036706598687055878004664847349949192351714965075054912336430437994391111999937374901912713997776829150854910998522797581512592591521577675123284018043295474220558964516141078446593074782425811263480209823092930480263549989415191240308462954326671136986930233259325785014814219208163052E+000000000000000597");
+ return val;
+ }
+
+ static const e_float& A000142_294(void)
+ {
+ static const e_float val("+4.41493343801840397553320608083648101048992282701131630108201418124844366982039501253529236685046359765063766360570256802662195726065605767917400139944281333714651208850625514041997320661442269105487703509869279815882211623379153463877703513438335657024889647022219073438364862455013047288694208443355677454770632983639860331885114631816879893215611974836968880662246506881085720413142741574885782417807943553804471999372E+000000000000000599");
+ return val;
+ }
+
+ static const e_float& A000142_295(void)
+ {
+ static const e_float val("+1.30240536421542917278229579384676189809452723396833830881919418346829088259701652869791124822088676130693811076368225756785347739189353701535633041283562993445822106610934526642389209595125469386118872535411437545685252428896850271843922536464309018822342445871554626664317634424228848950164791490789924849157336730173758797906108816385979568498605532576905819795362719529920287521877108764591305813253343348372319239815E+000000000000000602");
+ return val;
+ }
+
+ static const e_float& A000142_296(void)
+ {
+ static const e_float val("+3.85511987807767035143559554978641521835980061254628139410481478306614101248716892494581729473382481346853680786049948240084629308000486956545473802199346460599633435568366198861472060401571389382911862704817855135228347189534676804658010707934354695714133639779801694926380197895717392892487782812738177553505716721314326041802082096502499522755872376427641226594273649808564051064756241943190265207229896311182064949851E+000000000000000604");
+ return val;
+ }
+
+ static const e_float& A000142_297(void)
+ {
+ static const e_float val("+1.14497060378906809437637187828656531985286078192624557404912999057064388070868917070890773653594596960015543193456834627305134904476144626094005719253205898798091130363804761061857201939266702646724823223330902975162819115291799010983429180256503344627097691014601103393134918775028065689068871495383238733391197866230354834415218382661242358258494095799009444298499273993143523166232603857127508766547279204421073290106E+000000000000000607");
+ return val;
+ }
+
+ static const e_float& A000142_298(void)
+ {
+ static const e_float val("+3.41201239929142292124158819729396465316152513014021181066640737190051876451189372871254505487711898940846318716501367189369302015338910985760137043374553578418311568484138187964334461779014773887239973205526090865985200963569561052730618957164379966988751119223511288111542057949583635753425237056242051425505769641366457406557350780330502227610312405481048144009527836499567699035373159494239976124310892029174798404515E+000000000000000609");
+ return val;
+ }
+
+ static const e_float& A000142_299(void)
+ {
+ static const e_float val("+1.02019170738813545345123487099089543129529601391192333138925580419825511058905622488505097140825857783313049296233908789621421302586334384742280975968991519947075158976757318201336004071925417392284751988452301168929575088107298754766455068192149610129636584647829875145351075326925507090274145879816373376226225122768570764560647883318820166055483409238833395058848823113370742011576574688777752861168956716723264722950E+000000000000000612");
+ return val;
+ }
+
+ static const e_float& A000142_300(void)
+ {
+ static const e_float val("+3.06057512216440636035370461297268629388588804173576999416776741259476533176716867465515291422477573349939147888701726368864263907759003154226842927906974559841225476930271954604008012215776252176854255965356903506788725264321896264299365204576448830388909753943489625436053225980776521270822437639449120128678675368305712293681943649956460498166450227716500185176546469340112226034729724066333258583506870150169794168850E+000000000000000614");
+ return val;
+ }
+
+ static const e_float& A000142_301(void)
+ {
+ static const e_float val("+9.21233111771486314466465088504778574459652300562466768244497991191024364861917771071201027181657495783316835144992196370281434362354599494222797212999993425122088685560118583358064116769486519052331310455724279555434063045608907755541089265775110979470618359369903772562520210202137329025175537294741851587322812858600194003982650386368946099481015185426665557381404872713737800364536469439663108336355679152011080448240E+000000000000000616");
+ return val;
+ }
+
+ static const e_float& A000142_302(void)
+ {
+ static const e_float val("+2.78212399754988866968872456728443129486814994769864964009838393339689358188299166863502710208860563726561684213787643303824993177431089047255284758325998014386870783039155812174135363264384928753804055757628732425741087039773890142173408958264083515800126744529710939313881103481045473365603012263012039179371489483297258589202760416683421722043266585998852998329184271559548815710090013770778258717579415103907346295368E+000000000000000619");
+ return val;
+ }
+
+ static const e_float& A000142_303(void)
+ {
+ static const e_float val("+8.42983571257616266915683543887182682345049434152690840949810331819258755310546475596413211932847508091481903167776559210589729327616199813183512817727773983592218472608642110887630150691086334124026288945615059249995493730514887130785429143540173052874384035925024146121059743547567784297777127156926478713495613134390693525284364062550767817791097755576524584937428342825432911601572741725458123914265627764839259274966E+000000000000000621");
+ return val;
+ }
+
+ static const e_float& A000142_304(void)
+ {
+ static const e_float val("+2.56267005662315345142367797341703535432895027982418015648742340873054661614406128581309616427585642459810498563004074000019277715595324743207787896589243291012034415673027201709839565810090245573703991839466978011998630094076525687758770459636212608073812746921207340420802162038460606426524246655705649528902666392854770831686446675015433416608493717695263473820978216218931605126878113484539269669936750840511134819590E+000000000000000624");
+ return val;
+ }
+
+ static const e_float& A000142_305(void)
+ {
+ static const e_float val("+7.81614367270061802684221781892195783070329835346374947728664139662816717923938692172994330104136209502422020617162425700058797032565740466783753084597192037586704967802732965215010675720775248999797175110374282936595821786933403347664249901890448454625128878109682388283446594217304849600898952299902231063153132498207051036643662358797071920655905838970553595153983559467741395636978246127844772493307090063558961199749E+000000000000000626");
+ return val;
+ }
+
+ static const e_float& A000142_306(void)
+ {
+ static const e_float val("+2.39173996384638911621371865259011909619520929615990734004971226736821915684725239804936265011865680107741138308851702264217991891965116582835828443886740763501531720147636287355793266770557226193937935583774530578598321466801621424385260469978477227115289436701562810814734657830495283977875079403770082705324858544451357617212960681791904007720707186724989400117118969197128867064915343315120500382951969559449042127123E+000000000000000629");
+ return val;
+ }
+
+ static const e_float& A000142_307(void)
+ {
+ static const e_float val("+7.34264168900841458677611626345166562531929253921091553395261666082043281152106486201154333586427637930765294608174725951149235108332907909305993322732294143949702380853243402182285328985610684415389462242187808876296846903080977772862749642833925087243938570673797829201235399539620521812076493769574153905347315731465667884843789293101145303702571063245717458359555235435185621889290103977419936175662546547508559330268E+000000000000000631");
+ return val;
+ }
+
+ static const e_float& A000142_308(void)
+ {
+ static const e_float val("+2.26153364021459169272704380914311301259834210207696198445740593153269330594848797749955534744619712482675710739317815592953964413366535636066245943401546596336508333302798967872143881327568090799939954370593845133899428846148941154041726889992848926871133079767529731393980503058203120718119560081028839402846973245291425708531887102275152753540391887479680977174743012514037171541901352025045340342104064336632636273722E+000000000000000634");
+ return val;
+ }
+
+ static const e_float& A000142_309(void)
+ {
+ static const e_float val("+6.98813894826308833052656537025221920892887709541781253197338432843602231538082785047362602360874911571467946184492050182227750037302595115444699965110778982679810749905648810724924593302185400571814459005134981463749235134600228165988936090077903184031801216481666870007399754449847643018989440650379113754797147327950505439363531146030222008439810932312214219469955908668374860064475177757390101657101558800194846085802E+000000000000000636");
+ return val;
+ }
+
+ static const e_float& A000142_310(void)
+ {
+ static const e_float val("+2.16632307396155738246323526477818795476795189957952188491174914181516691776805663364682406731871222587155063317192535556490602511563804485787856989184341484630741332470751131324726623923677474177262482291591844253762262891726070731456570187924149987049858377109316729702293923879452769335886726601617525263987115671664656686202694655269368822616341389016786408035686331687196206619987305104790931513701483228060402286599E+000000000000000639");
+ return val;
+ }
+
+ static const e_float& A000142_311(void)
+ {
+ static const e_float val("+6.73726476002044345946066167346016453932833040769231306207553983104516911425865613064162284936119502246052246916468785580685773810963431950800235236363302017201605543984036018419899800402636944691286319926850635629200637593268079974829933284444106459725059552809975029374134103265098112634607719731030503570999929738877082294090380377887737038336821719842205728990984491547180202588160518875899797007611612839267851111322E+000000000000000641");
+ return val;
+ }
+
+ static const e_float& A000142_312(void)
+ {
+ static const e_float val("+2.10202660512637835935172644211957133627043908720000167536756842728609276364870071276018632900069284700768301037938261101173961429020590768649673393745350229366900929723019237747008737725622726743681331817177398316310598929099640952146939184746561215434218580476712209164729840218710611141997608556081517114151978078529649675756198677900973955961088376590768187445187161362720223207506081889280736666374823205851569546733E+000000000000000644");
+ return val;
+ }
+
+ static const e_float& A000142_313(void)
+ {
+ static const e_float val("+6.57934327404556426477090376383425828252647434293600524390048917740547035022043323093938320977216861113404782248746757246674499272834449105873477722422946217918399910033050214148137349081199134707722568587765256730052174648081876180219919648256736604309104156892109214685604399884564212874452514780535148567295691385797803485116901861830048482158206618729104426703435815065314298639494036313448705765753196634315412681273E+000000000000000646");
+ return val;
+ }
+
+ static const e_float& A000142_314(void)
+ {
+ static const e_float val("+2.06591378805030717913806378184395710071331294368190564658475360170531768996921603451496632786846094389609101626106481775455792771670017019244272004840805112426377571750377767242515127611496528298224886536558290613236382839497709120589054769552615293753058705264122293411279781563753162842578089641088036650130847095140510294326707184614635223397676878280938789984878845930508689772801127402422893610446503743175039581920E+000000000000000649");
+ return val;
+ }
+
+ static const e_float& A000142_315(void)
+ {
+ static const e_float val("+6.50762843235846761428490091280846486724693577259800278674197384537175072340303050872214393278565197327268670122235417592685747230760553610619456815248536104143089351013689966813922651976214064139408392590158615431694605944417783729855522524090738175322134921581985224245531311925822462954120982369427315447912168349692607427129127631536100953702682166584957188452368364681102372784323551317632114872906486791001374683047E+000000000000000651");
+ return val;
+ }
+
+ static const e_float& A000142_316(void)
+ {
+ static const e_float val("+2.05641058462527576611402868844747489805003170414096888061046373513747322859535764075619748276026602355416899758626391959288696124920334940955748353618537408909216234920326029513199558024483644268053052058490122476415495478436019658634345117612673263401794635219907330861587894568559898293502230428739031681540245198502863946972804331565407901370047564640846471550948403239228349799846242216371748299838449825956434399843E+000000000000000654");
+ return val;
+ }
+
+ static const e_float& A000142_317(void)
+ {
+ static const e_float val("+6.51882155326212417858147094237849542681860050212687135153517004038579013464728372119714602035004329466671572234845662510945166715997461762829722280970763586242215464697433513556842598937613152329728175025413688250237120666642182317870874022832174244983688993647106238831233625782334877590402070459102730430482577279254078711903789731062343047343050779911483314816506438268353868865512587825898442110487885948281897047502E+000000000000000656");
+ return val;
+ }
+
+ static const e_float& A000142_318(void)
+ {
+ static const e_float val("+2.07298525393735548878890775967636154572831495967634508978818407284268126281783622334069243447131376770401559970680920678480563015687192840579851685348702820425024517773783857311075946462160982440853559658081552863575404371992213977082937939260631409904813099979779783948332292998782491073747858405994668276893459574802797030385405134477825089055090148011851694111649047369336530299233002928635704591135147731553643261106E+000000000000000659");
+ return val;
+ }
+
+ static const e_float& A000142_319(void)
+ {
+ static const e_float val("+6.61282296006016400923661575336759333087332472136754083642430719236815322838889755245680886596349091897580976306472136964352996020042145161449726876262361997155828211698370504822332269214293533986322855309280153634805539946655162586894572026241414197596353788935497510795180014666116146525255668315122991803290136043620922526929442378984262034085737572157806904216160461108183531654553279342347897645721121263656122002927E+000000000000000661");
+ return val;
+ }
+
+ static const e_float& A000142_320(void)
+ {
+ static const e_float val("+2.11610334721925248295571704107762986587946391083761306765577830155780903308444721678617883710831709407225912418071083828592958726413486451663912600403955839089865027743478561543146326148573930875623313698969649163137772782929652027806263048397252543230833212459359203454457604693157166888081813860839357377052843533958695208617421561274963850907436023090498209349171347554618730129457049389551327246630758804369959040937E+000000000000000664");
+ return val;
+ }
+
+ static const e_float& A000142_321(void)
+ {
+ static const e_float val("+6.79269174457380047028785170185919186947307915378873794717504834800056699620107556588363406711769787197195178862008179089783397511787291509841159447296698243478466739056566182553499706936922318110750836973692573813672250633204183009258104385355180663770974611994543043088808911065034505710742622493294337180339627744007411619661923211692633961412869634120499252010840025650326123715557128540459760461684735762027568521406E+000000000000000666");
+ return val;
+ }
+
+ static const e_float& A000142_322(void)
+ {
+ static const e_float val("+2.18724674175276375143268824799865978197033148751997361899036556805618257277674633221453016961189871477496847593566633666910253998795507866168853342029536834400066289976214310782226905633688986431661769505529008768002464703891746928981109612084368173734253825062242859874596469362941110838859124442840776572069360133570386541531139274165028135574944022186800759147490488259405011836409395390028042868662484915372877063893E+000000000000000669");
+ return val;
+ }
+
+ static const e_float& A000142_323(void)
+ {
+ static const e_float val("+7.06480697586142691712758304103567109576417070468951478933888078482146971006889065305293244784643284872314817727220226744120120416109490407725396294755403975112214116623172223826592905196815426174267515502858698320647960993570342580608984047032509201161639854951044437394946596042299788009514971950375708327784033231432348529145579855553040877907069191663366452046394277077878188231602347109790578465779826276654392916374E+000000000000000671");
+ return val;
+ }
+
+ static const e_float& A000142_324(void)
+ {
+ static const e_float val("+2.28899746017910232114933690529555743502759130831940279174579737428215618606232057158915011310224424298630000943619353465094919014819474892103028399500750887936357373785907800519816101283768198080462675022926218255889939361916790996117310831238532981176371313004138397715962697117705131315082850911921729498202026766984080923443167873199185244441890418098930730463031745773232532987039160463572147422912663713636023304905E+000000000000000674");
+ return val;
+ }
+
+ static const e_float& A000142_325(void)
+ {
+ static const e_float val("+7.43924174558208254373534494221056166383967175203805907317384146641700760470254185766473786758229378970547503066762898761558486798163293399334842298377440385793161464804200351689402329172246643761503693824510209331642302926229570737381260201525232188823206767263449792576878765632541676774019265463745620869156586992698263001190295587897352044436143858821524874004853173763005732207877271506609479124466157069317075740942E+000000000000000676");
+ return val;
+ }
+
+ static const e_float& A000142_326(void)
+ {
+ static const e_float val("+2.42519280905975890925772245116064310241173299116440725785467231805194447913302864559870454483182777544398485999764704996268066696201233648183158589271045565768570637526169314650745159310152405866250204186790328242115390753950840060386290825697225693556365406127884632380062477596208586628330280541181072403345047359619633738388036361654536766486182897975817108925582134646739868699767990511154690194575967204597366691547E+000000000000000679");
+ return val;
+ }
+
+ static const e_float& A000142_327(void)
+ {
+ static const e_float val("+7.93038048562541163327275241529530294488636688110761173318477848002985844676500367110776386160007682570183049219230585337796578096578034029558928586916319000063225984710573658907936670944198367182638167690804373351717327765419246997463171000029928017929314878038182747882804301739602078274640017369662106758938304865956202324528878902610335226409818076380921946186653580294839370648241328971475836936263412759033389081359E+000000000000000681");
+ return val;
+ }
+
+ static const e_float& A000142_328(void)
+ {
+ static const e_float val("+2.60116479928513501571346279221685936592272833700329664848460734144979357053892120412334654660482519883020040143907631990797277615677595161695328576508552632020738122985068160121803228069697064435905319002583834459363283507057513015167920088009816389880815279996523941305559810970589481674081925697249171016931763996033634362445472280056189954262420329052942398349222374336707313572623155902644074515094399384962951618686E+000000000000000684");
+ return val;
+ }
+
+ static const e_float& A000142_329(void)
+ {
+ static const e_float val("+8.55783218964809420169729258639346731388577622874084597351435815336982084707305076156581013832987490415135932073456109249723043355579288081977631016713138159348228424620874246800732620349303341994128499518500815371305202738219217819902457089552295922707882271188563766895291778093239394707729535543949772645705503546950657052445603801384864949523362882584180490568941611567767061653930182919699005154660573976528110825476E+000000000000000686");
+ return val;
+ }
+
+ static const e_float& A000142_330(void)
+ {
+ static const e_float val("+2.82408462258387108656010655350984421358230615548447917125973819061204087953410675131671734564885871836994857584240516052408604307341165067052618235515335592584915380124888501444241764715270102858062404841105269072530716903612341880567810839552257654493601149492226043075446286770769000253550746729503424973082816170493716827307049254457005433342709751252779561887750731817363130345796960363500671701037989412254276572407E+000000000000000689");
+ return val;
+ }
+
+ static const e_float& A000142_331(void)
+ {
+ static const e_float val("+9.34772010075261329651395269211758434695743337465362605686973341092585531125789334685833441409772235780452978603836108133472480257299256371944166359555760811456069908213380939780440241207544040460186560024058440630076672950956851624679453878917972836373819804819268202579727209211245390839252971674656336660904121524334202698386333032252687984364369276646700349848454922315471961444587938803187223330435744954561655454667E+000000000000000691");
+ return val;
+ }
+
+ static const e_float& A000142_332(void)
+ {
+ static const e_float val("+3.10344307344986761444263229378303800318986788038500385088075149242738396333762059115696702548044382279110388896473587900312863445423353115485463231372512589403415209526842472007106160080904621432781937927987402289185455419717674739393578687800766981676108175199997043256469433458133469758631986595985903771420168346078955295864262566707892410808970599846704516149687034208736691199603195682658158145704667324914469610949E+000000000000000694");
+ return val;
+ }
+
+ static const e_float& A000142_333(void)
+ {
+ static const e_float val("+1.03344654345880591560939655382975165506222600416820628234329024697831885979142765685527001948498779298943759502525704770804183527325976587456659256047046692271337264772438543178366351306941238937116385330019804962298756654765985688218061703037655404898144022341599015404404321341558445429624451536463305955882916059244292113522799434713728172799387209748952603877845782391509318169467864162325166662519654219196518380446E+000000000000000697");
+ return val;
+ }
+
+ static const e_float& A000142_334(void)
+ {
+ static const e_float val("+3.45171145515241175813538448979137052790783485392180898302658942490758499170336837389660186507985922858472156738435853934485972981268761802105241915197135952186266464339944734215743613365183738049968727002266148574077847226918392198648326088145769052359801034620940711450710433280805207734945668131787441892648939637875935659166150111943852097149953280561501696952004913187641122686022666302166056652815645092116371390690E+000000000000000699");
+ return val;
+ }
+
+ static const e_float& A000142_335(void)
+ {
+ static const e_float val("+1.15632333747605793897535380408010912684912467606380600931390745734404097222062840525536162480175284157588172507376011068052800948725035203705256041591040543982399265553881485962274110477336552246739523545759159772316078821017661386547189239528832632540533346598015138335987995149069744591206798824148793034037394778688438445820660287501190452545234348988103068478921645917859776099817593211225628978693241105858984415881E+000000000000000702");
+ return val;
+ }
+
+ static const e_float& A000142_336(void)
+ {
+ static const e_float val("+3.88524641391955467495718878170916666621305891157438819129472905667597766666131144165801505933388954769496259624783397188657411187716118284449660299745896227780861532261041792833241011203850815549044799113750776834982024838619342258798555844816877645336192044569330864808919663700874341826454844049139944594365646456393153177957418566003999920551987412600026310089176730284008847695387113189718113368409290115686187637361E+000000000000000704");
+ return val;
+ }
+
+ static const e_float& A000142_337(void)
+ {
+ static const e_float val("+1.30932804149088992546057261943598916651380085320056882046632369209980447366486195583875107499552077757320239493552004852577547570260331861859535521014367028762150336371971084184802220775697724840028097301334011793388942370614718341215113319703287766478296719019864501440605926667194653195515282444560161328301222855804492620971650056743347973226019758046208866500052558105710981673345457144935004205153930768986245233791E+000000000000000707");
+ return val;
+ }
+
+ static const e_float& A000142_338(void)
+ {
+ static const e_float val("+4.42552878023920794805673545369364338281664688381792261317617407929733912098723341073497863348486022819742409488205776401712110787479921693085230061028560557216068136937262264544631506221858309959294968878508959861654625212677747993307083020597112650696642910287142014869248032135117927800841654662613345289658133252619185058884177191792516149503946782196185968770177646397303118055907645149880314213420285999173508890212E+000000000000000709");
+ return val;
+ }
+
+ static const e_float& A000142_339(void)
+ {
+ static const e_float val("+1.50025425650109149439123331880214510677484329361427576586672301288179796201467212623915775675136761735892676816501758200180405556955693453955892990688682028896247098421731907680630080609209967076200994449814537393100917947097756569731101143982421188586161946587341143040675082893804977524485320930625924053194107172637903734961736068017662974681837959164507043413090222128685757020952691705809426518349476953719819513782E+000000000000000712");
+ return val;
+ }
+
+ static const e_float& A000142_340(void)
+ {
+ static const e_float val("+5.10086447210371108093019328392729336303446719828853760394685824379811307084988522921313637295464989902035101176105977880613378893649357743450036168341518898247240134633888486114142274071313888059083381129369427136543121020132372337085743889540232041192950618396959886338295281838936923583250091164128141780859964386968872698869902631260054113918249061159323947604506755237531573871239151799752050162388221642647386346859E+000000000000000714");
+ return val;
+ }
+
+ static const e_float& A000142_341(void)
+ {
+ static const e_float val("+1.73939478498736547859719590981920703679475331461639132294587866113515655715981086316167950317753561556593969501052138457289162202734430990516462333404457944302308885910155973764922515458318035828147432965114974653561204267865138966946238666333219126046796160873363321241358691107077490941888281086967696347273247855956385590314636797259678452846122929855329466133136803535998266690092550763715449105374383580142758744279E+000000000000000717");
+ return val;
+ }
+
+ static const e_float& A000142_342(void)
+ {
+ static const e_float val("+5.94873016465678993680241001158168806583805633598805832447490502108223542548655315201294390086717180523551375693598313523928934733351753987566301180243246169513896389812733430276035002867447682532264220740693213315179318596098775266956136238859609411080042870186902558645446723586205019021257921317429521507674507667370838718876057846628100308733740420105226774175327868093114072080116523611906835940380391844088234905434E+000000000000000719");
+ return val;
+ }
+
+ static const e_float& A000142_343(void)
+ {
+ static const e_float val("+2.04041444647727894832322663397251900658245332324390400529489242223120675094188773114043975799743992919578121862904221538707624613539651617735241304823433436143266461705767566584680005983534555108566627714057772167106506278461879916565954729928846028000454704474107577615388226190068321524291467011878325877132356129908197680574487841393438405895672964096092783542137458755938126723479967598884044727550474402522264572564E+000000000000000722");
+ return val;
+ }
+
+ static const e_float& A000142_344(void)
+ {
+ static const e_float val("+7.01902569588183958223189962086546538264363943195902977821442993247535122324009379512311276751119335643348739208390522093154228670576401565009230088592611020332836628267840429051299220583358869573469199336358736254846381597908866912986884270955230336321564183390930066996935498093835026043562646520861441017335305086884200021176238174393428116281114996490559175384952858120427155928771088540161113862773631944676590129619E+000000000000000724");
+ return val;
+ }
+
+ static const e_float& A000142_345(void)
+ {
+ static const e_float val("+2.42156386507923465587000536919858555701205560402586527348397832670399617201783235931747390479136170796955315026894730122138208891348858539928184380564450802014828636752404948022698231101258810002846873771043764007922001651278559084980475073479554466030939643269870873113942746842373083985029113049697197150980680254975049007305802170165732700116984673789242915507808736051547368795426025546355584282656903020913423594719E+000000000000000727");
+ return val;
+ }
+
+ static const e_float& A000142_346(void)
+ {
+ static const e_float val("+8.37861097317415190931021857742710602726171238992949384625456501039582675518169996323845971057811150957465389993055766222598202764067050548151517956752999774971307083163321120158535879610355482609850183247811423467410125713423814434032443754239258452467051165713753220974241904074610870588200731151952302142393153682213669565278075508773435142404766971310780487657018226738353896032174048390390321617992884452360445637726E+000000000000000729");
+ return val;
+ }
+
+ static const e_float& A000142_347(void)
+ {
+ static const e_float val("+2.90737800769143071253064584636720579145981419930553436465033405860735188404804988724374551957060469382240490327590350879241576359131266540208576730993290921915043557857672428695011950224793352465618013586990563943191313622558063608609257982721022683006066754502672367678061940713889972094105653709727448843410424327728143339151492201544381994414454139044840829216985324678208801923164394791465441601443530904969074636291E+000000000000000732");
+ return val;
+ }
+
+ static const e_float& A000142_348(void)
+ {
+ static const e_float val("+1.01176754667661788796066475453578761542801534135832595889831625239535845564872136076082344081057043345019690634001442105976068572977680755992584702385665240826435158134470005185864158678228086658035068728272716252230577140650206135796021777986915893686111230566929983951965555368433710288748767490985152197506827666049393882024719286137444934056230040387604608567510892988016663069261209387429973677302348754929237973429E+000000000000000735");
+ return val;
+ }
+
+ static const e_float& A000142_349(void)
+ {
+ static const e_float val("+3.53106873790139642898271999332989877784377354134055759655512372085980101021403754905527380842889081274118720312665032949856479319692105838414120611325971690484258701889300318098665913787016022436542389861671779720284714220869219413928116005174336468964528194678585643992359788235833648907733198543538181169298828554512384648266270308619682819856242840952740083900613016528178154111721620762130608133785197154703040527268E+000000000000000737");
+ return val;
+ }
+
+ static const e_float& A000142_350(void)
+ {
+ static const e_float val("+1.23587405826548875014395199766546457224532073946919515879429330230093035357491314216934583295011178445941552109432761532449767761892237043444942213964090091669490545661255111334533069825455607852789836451585122902099649977304226794874840601811017764137584868137504975397325925882541777117706619490238363409254589994079334626893194608016888986949684994333459029365214555784862353939102567266745712846824819004146064184544E+000000000000000740");
+ return val;
+ }
+
+ static const e_float& A000142_351(void)
+ {
+ static const e_float val("+4.33791794451186551300527151180578064858107579553687500736796949107626554104794512901440387365489236345254847904108992978898684844241752022491747171013956221759911815271005440784211075087349183563292325945063781386369771420337836050010690512356672352122922887162642463644613999847721637683150234410736655566483610879218464540395113074139280344193394330110441193071903090804866862326250011106277452092355114704552685287749E+000000000000000742");
+ return val;
+ }
+
+ static const e_float& A000142_352(void)
+ {
+ static const e_float val("+1.52694711646817666057785557215563478830053868002898000259352526085884547044887668541307016352652211193529706462246365528572337065173096711917095004196912590059488958975393915156042298430746912614278898732662451048002159539958918289603763060349548667947268856281250147202904127946398016464468882512579302759402231029484899518219079802097026681156074804198875299961309887963313135538840003909409663136509000376002545221288E+000000000000000745");
+ return val;
+ }
+
+ static const e_float& A000142_353(void)
+ {
+ static const e_float val("+5.39012332113266361183983016970939080270090154050229940915514417083172451068453469950813767724862305513159863811729670315860349840061031393067345364815101442909996025183140520500829313460536601528404512526298452199447623176054981562301283603033906797853859062672813019626251571650784998119575155269404938740689875534081695299313351701402504184480944058822029808863423904510495368452105213800216110871876771327288984631145E+000000000000000747");
+ return val;
+ }
+
+ static const e_float& A000142_354(void)
+ {
+ static const e_float val("+1.90810365568096291859129988007712434415611914533781399084092103647443047678232528362588073774601256151658591789352303291814563843381605113145840259144545910790138592914831744257293576965029956941055197434309652078604458604323463473054654395474003006440266108186175808947693056364377889334329604965369348314204215939064920135956926502296486481306254196822998552337652062196715360432045245685276503248644377049860300559425E+000000000000000750");
+ return val;
+ }
+
+ static const e_float& A000142_355(void)
+ {
+ static const e_float val("+6.77376797766741836099911457427379142175422296594923966748526967948422819257725475687187661899834459338388000852200676685941701644004698151667732919963137983304992004847652692113392198225856347140745950891799264879045828045348295329344023103932710672862944684060924121764310350093541507136870097627061186515424966583680466482647089083152527008637202398721644860798664820798339529533760622182731586532687538527004066985960E+000000000000000752");
+ return val;
+ }
+
+ static const e_float& A000142_356(void)
+ {
+ static const e_float val("+2.41146140004960093651568478844146974614450337587792932162475600589638523655750269344638807636341067524466128303383440900195245785265672541993712919506877122056577153725764358392367622568404859582105558517480538296940314784143993137246472225000044999539208307525688987348094484633300776540725754755233782399491288103790246067822363713602299615074844053944905570444324676204208872514018781497052444805636763715613447847002E+000000000000000755");
+ return val;
+ }
+
+ static const e_float& A000142_357(void)
+ {
+ static const e_float val("+8.60891719817707534336099469473604699373587705188420767820037894105009529451028461560360543261737611062344078043078884013697027453398450974917555122639551325741980438800978759460752412569205348708116843907405521720076923779394055499969905843250160648354973657866709684832697310140883772250390944476184603166183898530531178462125838457560209625817193272583312886486239094049025674875047049944477227956123246464740008813797E+000000000000000757");
+ return val;
+ }
+
+ static const e_float& A000142_358(void)
+ {
+ static const e_float val("+3.08199235694739297292323610071550482375744398457454634879573566089593411543468189238609074487702064760319179939422240476903535828316645449020484733904959374615628997090750395886949363699775514837505830118851176775787538713023071868989226291883557512111080569516282067170105637030436390465639958122474087933493835673930161889441050167806555046042555191584826013362073595669551191605266843880122847608292122234376923155339E+000000000000000760");
+ return val;
+ }
+
+ static const e_float& A000142_359(void)
+ {
+ static const e_float val("+1.10643525614411407727944176015686623172892239046226213921766910226164034744105079936660657741085041248954585598252584331208369362365675716198354019471880415487010809955579392123414821568219409826664593012667572462507726397975282800967132238786197146847877924456345262114067923693926664177164744965968197568124287006940928118309337010242553261529277313778952538796984420845368877786290796952964102291376871882141315412767E+000000000000000763");
+ return val;
+ }
+
+ static const e_float& A000142_360(void)
+ {
+ static const e_float val("+3.98316692211881067820599033656471843422412060566414370118360876814190525078778287771978367867906148496236508153709303592350129704516432578314074470098769495753238915840085811644293357645589875375992534845603260865027815032711018083481676059630309728652360528042842943610644525298135991037793081877485511245247433224987341225913613236873191741505398329604229139669143915043327960030646869030670768248956738775708735485961E+000000000000000765");
+ return val;
+ }
+
+ static const e_float& A000142_361(void)
+ {
+ static const e_float val("+1.43792325888489065483236251149986335475490753864475587612728276529922779553438961885684190800314119607141379443489058596838396823330432160771380883705655787966919248618270978003589902110057945010733305079262777172275041226808677528136885057526541812043502150623466302643442673632627092764643302557772269559534323394220430182554814378511222218683448796987126719420560953330641393571063519720072147337873382698030853510432E+000000000000000768");
+ return val;
+ }
+
+ static const e_float& A000142_362(void)
+ {
+ static const e_float val("+5.20528219716330417049315229162950534421276528989401627158076361038320461983449042026176770697137112977851793585430392120554996500456164421992398799014473952440247679998140940372995445638409760938854564386931253363635649241047412651855523908246081359597477785256948015569262478550110075808008755259135615805514250687077957260848428050210624431634084645093398724302430651056921844727249941386661173363101645366871689707763E+000000000000000770");
+ return val;
+ }
+
+ static const e_float& A000142_363(void)
+ {
+ static const e_float val("+1.88951743757027941388901428186151043994923380023152790658381719056910327699992002255502167763060772010960201071511232339761463729665587685183240764042254044735809907839325161355397346766742743220804206872456044970999740674500210792623555178693327533533884436048272129651642279713689957518307178159066228537401672999409298485687979382226456668683172726168903736921782326333662629635991728723358005930805897268174423363918E+000000000000000773");
+ return val;
+ }
+
+ static const e_float& A000142_364(void)
+ {
+ static const e_float val("+6.87784347275581706655601198597589800141521103284276157996509457367153592827970888210027890657541210119895131900300885716731727975982739174066996381113804722838348064535143587333646342230943585323727313015740003694439056055180767285149740850443712222063339347215710551931977898157831445366638128499001071876142089717849846487904244951304302274006748723254809602395287667854531971875009892553023141588133466056154901044661E+000000000000000775");
+ return val;
+ }
+
+ static const e_float& A000142_365(void)
+ {
+ static const e_float val("+2.51041286755587322929294437488120277051655202698760797668725951939011061382209374196660180090002541693761723143609823286607080711233699798534453679106538723835997043555327409376780914914294408643160469250745101348470255460140980059079655410411954961053118861733734351455171932827608477558822916902135391234791862747015193968085049407226070330012463283988005504874279998766904169734378610781853446679668715110496538881301E+000000000000000778");
+ return val;
+ }
+
+ static const e_float& A000142_366(void)
+ {
+ static const e_float val("+9.18811109525449601921217641206520214009058041877464519467536984096780484658886309559776259129409302599167906705611953228981915403115341262636100465529931729239749179412498318319018148586317535633967317457727070935401134984115987016231538802107755157454415033945467726325929274149047027865291875861815531919338217654075609923191280830447417407845615619396100147839864795486869261227825715461583614847587497304417332305563E+000000000000000780");
+ return val;
+ }
+
+ static const e_float& A000142_367(void)
+ {
+ static const e_float val("+3.37203677195840003905086874322792918541324301369029478644586073163518437869811275608437887100493214053894621760959586835036362952943330243387448870849484944630987948844386882823079660531178535577666005506985835033292216539170567234956974740373546142785770317457986655561616043612700259226562118441286300214397125879045748841811200064774202188679340932318368754257230379943681018870612037574401186649064611510721160956142E+000000000000000783");
+ return val;
+ }
+
+ static const e_float& A000142_368(void)
+ {
+ static const e_float val("+1.24090953208069121437071969750787794023207342903802848141207674924174785136090549423905142452981502771833220808033127955293381566683145529566581184472610459624203565174734372878893315075473701092581090026570787292251535686414768742464166704457464980545163476824539089246674704049473695395374859586393358478898142323488835573786521623836906405433997463093159701566660779819274614944385229827379636686855777035945387231860E+000000000000000786");
+ return val;
+ }
+
+ static const e_float& A000142_369(void)
+ {
+ static const e_float val("+4.57895617337775058102795568380406959945635095315032509641056320470204957152174127374209975651501745228064584781642242155032577981060807004100684570703932596013311155494769835923116332628497957031624222198046205108408166682870496659692775139448045778211653229482549239320229657942557936008933231873791492787134145173673803267272264791958184636051450638813759298780978277533123329144781498063030859374497817262638478885564E+000000000000000788");
+ return val;
+ }
+
+ static const e_float& A000142_370(void)
+ {
+ static const e_float val("+1.69421378414976771498034360300750575179884985266562028567190838573975834146304427128457690991055645734383896369207629597362053852992498591517253291160455060524925127533064839291553043072544244101700962213277095890111021672662083764086326801595776937938311694908543218548484973438746436323305295793302852331239633714259307208890737973024528315339036736361090940548961962687255631783569154283321417968564192387176237187659E+000000000000000791");
+ return val;
+ }
+
+ static const e_float& A000142_371(void)
+ {
+ static const e_float val("+6.28553313919563822257707476715784633917373295338945125984278011109450344682789424646578033576816445674564255529760305806213219794602169774529009710205288274547472223147670553771661789799139145617310569811258025752311890405576330764760272433920332439751136388110695340814879251457749278759462647393153582148899041079902029744984637879921000049907826291899647389436648881569718393917041562391122460663373153756423839966213E+000000000000000793");
+ return val;
+ }
+
+ static const e_float& A000142_372(void)
+ {
+ static const e_float val("+2.33821832778077741879867181338271883817262865866087586866151420132715528221997665968527028490575717790937903057070833759911317763592007156124791612196367238131659667010933446003058185805279762169639531969787985579860023230874395044490821345418363667587422736377178666783135081542282731698520104830253132559390443281723555065134285291330612018565711380586668828870433383943935242537139461209497555366774813197389668467431E+000000000000000796");
+ return val;
+ }
+
+ static const e_float& A000142_373(void)
+ {
+ static const e_float val("+8.72155436262229977211904586391754126638390489680506699010744797095028920268051294062605816269847427360198378402874209924469215258198186692345472713492449798231090557950781753591407033053693512892755454247309186212877886651161493515950763618410496480101086806686876427101093854152714589235479991016844184446526353440828860392950884136663182829250103449588274731686716522110878454663530190311425881518070053226263463383519E+000000000000000798");
+ return val;
+ }
+
+ static const e_float& A000142_374(void)
+ {
+ static const e_float val("+3.26186133162074011477252315310516043362758043140509505430018554113540816180251183979414575284922937832714193522674954511751486506566121822937206794846176224538427868673592375843186230362081373821890539888493635643616329607534398574965585593285525683557806465700891783735809101453115256374069516640299724983000856186869993786963630667112030378139538690146014749650831979269468542044160291176473279687758199906622535305436E+000000000000000801");
+ return val;
+ }
+
+ static const e_float& A000142_375(void)
+ {
+ static const e_float val("+1.22319799935777754303969618241443516261034266177691064536256957792577806067594193992280465731846101687267822571003107941906807439962295683601452548067316084201910450752597140941194836385780515183208952458185113366356123602825399465612094597482072131334177424637834418900928413044918221140276068740112396868625321070076247670111361500167011391802327008804755531119061992226050703266560109191177479882909324964983450739539E+000000000000000804");
+ return val;
+ }
+
+ static const e_float& A000142_376(void)
+ {
+ static const e_float val("+4.59922447758524356182925764587827621141488840828118402656326161300092550814154169410974551151741342344127012866971685861569595974258231770341461580733108476599183294829765249938892584810534737088865661242776026257499024746623501990701475686532591213816507116638257415067490833048892511487438018462822612226031207223486691239618719240627962833176749553105880797007673090769950644282266010558827324359739061868337774780665E+000000000000000806");
+ return val;
+ }
+
+ static const e_float& A000142_377(void)
+ {
+ static const e_float val("+1.73390762804963682280963013249611013170341292992200637801434962810134891656936121867937405784206486063735883850848325569811737682295353377418731015936381895677892102150821499226962504473571595882502354288526561899077132329477060250494456333822786887608823182972623045480444044059432476830764132960484124809213765123254482597336257153716741988107634581520917060471892755220271392894414285980677901283621626324363341092311E+000000000000000809");
+ return val;
+ }
+
+ static const e_float& A000142_378(void)
+ {
+ static const e_float val("+6.55417083402762719022040190083529629783890087510518410889424159422309890463218540660803393864300517320921640956206670653888368439076435766642803240239523565662432146130105267077918266910100632435858899210630403978511560205423287746869044941850134435161351631636515111916078486544654762420288422590629991778828032165901944217931052041049284715046858718149066488583754614732625865140886001006962466852089747506093429328934E+000000000000000811");
+ return val;
+ }
+
+ static const e_float& A000142_379(void)
+ {
+ static const e_float val("+2.48403074609647070509353232041657729688094343166486477727091756421055448485559826910444486274569896064629301922402328177823691638409969155557622428050779431386061783383309896222531023158928139693190522800828923107855881317855426056063368032961200950926152268390239227416193746400424154957289312161848766884175824190876836858595868723557678907002759454178496199173242998983665202888395794381638774936942014304809409715666E+000000000000000814");
+ return val;
+ }
+
+ static const e_float& A000142_380(void)
+ {
+ static const e_float val("+9.43931683516658867935542281758299372814758504032648615362948674400010704245127342259689047843365605045591347305128847075730028225957882791118965226592961839267034776856577605645617888003926930834123986643149907809852349007850619013040798525252563613519378619882909064181536236321611788837699386215025314159868131925331980062664301149519179846610485925878285556858323396137927770975904018650227344760379654358275756919531E+000000000000000816");
+ return val;
+ }
+
+ static const e_float& A000142_381(void)
+ {
+ static const e_float val("+3.59637971419847028683441609349912061042422990036439122453283444946404078317393517400941527228322295522370303323254090735853140754089953343416325751331918460760740249982356067750980415329496160647801238911040114875553744971991085843968544238121226736750883254175388353453165306038534091547163466147924644694909758263551484403875098737966807521558595137759626797163021213928550480741819431105736618353704648310503063386341E+000000000000000819");
+ return val;
+ }
+
+ static const e_float& A000142_382(void)
+ {
+ static const e_float val("+1.37381705082381564957074694771666407318205582193919744777154275969526357917244323647159663401219116889545455869483062661095899768062362177185036437008792852010602775493260017880874518655867533367460073264017323882461530579300594792395983898962308613438837403094998351019109146906720022971016444068507214273455527656676667042280287717903320473235383342624177436516274103720706283643375022682391388211115175654612170213582E+000000000000000822");
+ return val;
+ }
+
+ static const e_float& A000142_383(void)
+ {
+ static const e_float val("+5.26171930465521393785596080975482340028727379802712622496500876963285950823045759568621510826669217686959095980120129991997296111678847138618689553743676623200608630139185868483749406451972652797372080601186350469827662118721278054876618333025641989470747253853843684403188032652737687978992980782382630667334670925071634771933501959569717412491518202250599581857329817250305066354126336873559016848571122757164611918021E+000000000000000824");
+ return val;
+ }
+
+ static const e_float& A000142_384(void)
+ {
+ static const e_float val("+2.02050021298760215213668895094585218571031313844241647038656336753901805116049571674350660157440979591792292856366129916926961706884677301229576788637571823309033713973447373497759772077557498674190878950855558580413822253588970773072621439881846523956766945479875974810824204538651272183933304620434930176256513635227507752422464752474771486396742989664230239433214649824117145479984513359446662469851311138751210976520E+000000000000000827");
+ return val;
+ }
+
+ static const e_float& A000142_385(void)
+ {
+ static const e_float val("+7.77892582000226828572625246114153091498470558300330341098826896502521949696790850946250041606147771428400327497009600180168802571506007609733870636254651519739779798797772387966375122498596369895634883960793900534593215676317537476329592543545109117233552740097522503021673187473807397908143222788674481178587577495625904846826489297027870222627460510207286421817876401822851010097940376433869650508927547884192162259602E+000000000000000829");
+ return val;
+ }
+
+ static const e_float& A000142_386(void)
+ {
+ static const e_float val("+3.00266536652087555829033345000063093318409635503927511664147182049973472582961268465252516059973039771362526413845705669545157792601318937357274065594295486619555002335940141755020797284458198779715065208866445606352981251058569465863222721808412119252151357677643686166365850364889655592543283996428349734934804913311599270875024868652757905934199756940012558821700291103620489897804985303473685096446033483298174632206E+000000000000000832");
+ return val;
+ }
+
+ static const e_float& A000142_387(void)
+ {
+ static const e_float val("+1.16203149684357884105835904515024417114224528940019947014024959453339733889606010896052723715209566391517297722158288094113976065736710428757265063384992353321767785904008834859193048549085322927749730235831314449658603744159666383289067193339855490150582575421248106546383584091212296714314250906617771347419769501451588917828634624168617309596535305935784860263998012657101129590450529312444316132324614958036393582664E+000000000000000835");
+ return val;
+ }
+
+ static const e_float& A000142_388(void)
+ {
+ static const e_float val("+4.50868220775308590330643309518294738403191172287277394414416842678958167491671322276684568015013117599087115161974157805162227135058436463578188445933770330888459009307554279253669028370451052959668953315025500064675382527339505567161580710158639301784260392634442653399968306273903711251539293517676952827988705665632165001175102341774235161234556987030845257824312289109552382810948053732283946593419506037181207100736E+000000000000000837");
+ return val;
+ }
+
+ static const e_float& A000142_389(void)
+ {
+ static const e_float val("+1.75387737881595041638620247402616653238841366019750906427208151802114727154260144365630296957840102746044887798007947386208106355537731784331915305468236658715610554620638614629677252036105459601311222839544919525158723803135067665625854896251710688394077292734798192172587671140548543676848785178376334650087606503930912185457114810950177477720242667954998805293657480463615876913458792901858455224840187848463489562186E+000000000000000840");
+ return val;
+ }
+
+ static const e_float& A000142_390(void)
+ {
+ static const e_float val("+6.84012177738220662390618964870204947631481327477028535066111792028247435901614563025958158135576400709575062412230994806211614786597153958894469691326122968990881163020490597055741282940811292445113769074225186148119022832226763895940834095381671684736901441665712949473091917448139320339710262195667705135341665365330557523282747762705692163108946405024495340645264173808101919962489292317247975376876732609007609292526E+000000000000000842");
+ return val;
+ }
+
+ static const e_float& A000142_391(void)
+ {
+ static const e_float val("+2.67448761495644278994732015264250134523909199043518157210849710683044747437531294143149639831010372677443849403182318969228741381559487197927737649308514080875434534741011823448794841629857215346039483708022047783914537927400664683312866131294233628732128463691293763243978939722222474252826712518506072707918591157844247991603554375217925635775598044364577678192298291958967850705333313296043958372358802450121975233378E+000000000000000845");
+ return val;
+ }
+
+ static const e_float& A000142_392(void)
+ {
+ static const e_float val("+1.04839914506292557365934949983586052733372406025059117626653086587753540995512267304114658813756066089557988966047469035937666621571318981587673158528937519703170337618476634791927577918904028415647477613544642731294498867541060555858643523467339582462994357766987155191639744371111209907108071307254380501504087733874945212708593315085426849224034433390914449851380930447915397476490658812049231681964650560447814291484E+000000000000000848");
+ return val;
+ }
+
+ static const e_float& A000142_393(void)
+ {
+ static const e_float val("+4.12020864009729750448124353435493187242153555678482332272746630289871416112363210505170609138061339731962896636566553311235029822775283597639555513018724452433459426840613174732275381221292831673494587021230445933987380549436367984524469047226644559079567826024259519903144195378467054934934720237509715370911064794128534685944771728285727517450455323226293787915927056660307512082608289131353480510121076702559910165532E+000000000000000850");
+ return val;
+ }
+
+ static const e_float& A000142_394(void)
+ {
+ static const e_float val("+1.62336220419833521676560995253584315773408500937322038915462172334209337948271104939037220000396167854393381274807222004626601750173461737469984872129377434258783014175201590844516500201189375679356867286364795697991027936477928985902640804607297956277349723453558250841838812979116019644364279773578827856138959528886642666262240060944576641875479397351159752438875260324161159760547665917753271320987704220808604605220E+000000000000000853");
+ return val;
+ }
+
+ static const e_float& A000142_395(void)
+ {
+ static const e_float val("+6.41228070658342410622415931251658047304963578702422053716075580720126884895670864509197019001564863024853856035488526918275076913185173863006440244911040865322192905992046283835840175794698033933459625781140943007064560349087819494315431178198826927295531407641555090825263311267508277595238905105636370031748890139102238531735848240731077735408143619537081022133557278280436581054163280375125421717901431672193988190618E+000000000000000855");
+ return val;
+ }
+
+ static const e_float& A000142_396(void)
+ {
+ static const e_float val("+2.53926315980703594606476708775656586732765577166159133271565929965170246418685662345642019524619685757842126990053456659636930457621328849750550336984772182667588390772850328398992709614700421437650011809331813430797565898238776519748910746566735463209030437426055815966804271261933277927714606421832002532572560495084486458567395903329506783221624873336684084764888682199052886097448659028549667000288966942188819323485E+000000000000000858");
+ return val;
+ }
+
+ static const e_float& A000142_397(void)
+ {
+ static const e_float val("+1.00808747444339327058771253383935664932907934134965175908811674196172587828218207951219881751274015245863324415051222293875861391675667553350968483782954556519032591136821580374400105717036067310747054688304729932026633661600794278340317566386993978893985083658144158938821295690987511337302698749467305005431306516548541124051256173621814192938985074714663581651660806833023995780687117634334217799114719876048961271423E+000000000000000861");
+ return val;
+ }
+
+ static const e_float& A000142_398(void)
+ {
+ static const e_float val("+4.01218814828470521693909588468063946432973577857161400117070463300766899556308467645855129370070580678536031171903864729625928338869156862336854565456159134945749712724549889890112420753803547896773277659452825129466001973171161227794463914220236035998060632959413752576508756850130295122464741022879873921616599935863193673723999571014820487897160597364361054973610011195435503207134728184650186840476585106674865860265E+000000000000000863");
+ return val;
+ }
+
+ static const e_float& A000142_399(void)
+ {
+ static const e_float val("+1.60086307116559738155869925798757514626756457565007398646711114857005992922967078590696196618658161690735876437589642027120745407208793588072404971617007494843354135377095406066154855880767615610812537786121677226656934787295293329889991101773874178363226192550806087278026993983201987753863431668129069694725023374409414275815875828834913374670967078348380060934470394466978765779646756545675424549350157457563271478246E+000000000000000866");
+ return val;
+ }
+
+ static const e_float& A000142_400(void)
+ {
+ static const e_float val("+6.40345228466238952623479703195030058507025830260029594586844459428023971691868314362784786474632646762943505750358568108482981628835174352289619886468029979373416541508381624264619423523070462443250151144486708906627739149181173319559964407095496713452904770203224349112107975932807951015453726672516278778900093497637657103263503315339653498683868313393520243737881577867915063118587026182701698197400629830253085912983E+000000000000000868");
+ return val;
+ }
+
+ static const e_float& A000142_401(void)
+ {
+ static const e_float val("+2.56778436614961820002015360981207053461317357934271867429324628230637612648439194059476699376327691351940345805893785811501675633162904915268137574473680021728740033144861031330112388832751255439743310608939170271557723398821650501143545727245294182094614812851492963993955298349055988357196944395679027790338937492552700498408664829451201052972231193670801617738890512725033940310553397499263380977157652561931487451106E+000000000000000871");
+ return val;
+ }
+
+ static const e_float& A000142_402(void)
+ {
+ static const e_float val("+1.03224931519214651640810175114445235491449577889577290706588500548716320284672556011909633149283731923480019013969301896223673604531487775937791304938419368734953493324234134594705180310766004686776810864793546449166204806326303501459705382352608261202035154766300171525570029936320507319593171647062969171716252872006185600360283261439382823294836939855662250331033986115463644004842465794703879152817376329896457955345E+000000000000000874");
+ return val;
+ }
+
+ static const e_float& A000142_403(void)
+ {
+ static const e_float val("+4.15996474022435046112465005711214299030541798894996481547551657211326770747230400727995821591613439651624476626296286641781404626261895737029298958901830056001862578096663562416661876652386998887710547785117992190139805369495003110882612690881011292644201673708189691248047220643371644497960481737663765762016499074184927969451941543600712777878192867618318868834066964045318485339515137152656632985854026609482725560039E+000000000000000876");
+ return val;
+ }
+
+ static const e_float& A000142_404(void)
+ {
+ static const e_float val("+1.68062575505063758629435862307330576808338886753578578545210869513376015381881081894110311923011829619256288557023699803279687469009805877759836779396339342624752481551052079216331398167564347550635061305187668844816481369275981256796575527115928562228257476178108635264211077139922144377176034622016161367854665625970710899658584383614687962262789918517800823008963053474308668077164115409673279726285026750231021126256E+000000000000000879");
+ return val;
+ }
+
+ static const e_float& A000142_405(void)
+ {
+ static const e_float val("+6.80653430795508222449215242344688836073772491351993243108104021529172862296618381671146763288197909957987968655945984203282734249489713804927338956555174337630247550281760920826142162578635607580071998286010058821506749545567724090026130884819510677024442778521339972820054862416684684727562940219165453539811395785181379143617266753639486247164299169997093333186300366570950105712514667409176782891454358338435635561336E+000000000000000881");
+ return val;
+ }
+
+ static const e_float& A000142_406(void)
+ {
+ static const e_float val("+2.76345292902976338314381388391943667445951631488909256701890232740844182092427062958485585895008351442943115274314069586532790105292823804800499616361400781077880505414394933855413718006926056677509231304120083881531740315500495980550609139236721334871923768079664028964942274141173981999390553728981174137163426688783639932308610301977631416348705463018819893273637948827805742919280954968125773853930469485404868037903E+000000000000000884");
+ return val;
+ }
+
+ static const e_float& A000142_407(void)
+ {
+ static const e_float val("+1.12472534211511369693953225075521072650502314015986067477669324725523582111617814624103633459268399037277847916645826321718845572854179288553803343859090117898697365703658738079153383228818905067746257140776874139783418308408701864084097919669345583292872973608423259788731505575457810673751955367695337873825514662334941452449604392904895986453923123448659696562370645172916937368147348672027189958549701080559781291426E+000000000000000887");
+ return val;
+ }
+
+ static const e_float& A000142_408(void)
+ {
+ static const e_float val("+4.58887939582966388351329158308125976414049441185223155308890844880136215015400683666342824513815068072093619499914971392612889937245051497299517642945087681026685252070927651362945803573581132676404729134369646490316346698307503605463119512250929979834921732322366899938024542747867867548907977900196978525208099822326561125994385923051975624732006343670531561974472232305501104462041182581870935030882780408683907669020E+000000000000000889");
+ return val;
+ }
+
+ static const e_float& A000142_409(void)
+ {
+ static const e_float val("+1.87685167289433252835693625748023524353346221444756270521336355555975711941298879619534215226150362841486290375465223299578671984333226062395502715964540861539914268097009409407444833661594683264649534215957185414539385799607768974634415880510630361752482988519848062074652037983877957827503362961180564216810112827331563500531703842528258030515390594561247408847559143012949951724974843675985212427631057187151718236629E+000000000000000892");
+ return val;
+ }
+
+ static const e_float& A000142_410(void)
+ {
+ static const e_float val("+7.69509185886676336626343865566896449848719507923500709137479057779500418959325406440090282427216487650093790539407415528272555135766226855821561135454617532313648499197738578570523818012538201385063090285424460199611481778391852796001105110093584483185180252931377054506073355733899627092763788140840313288921462592059410352179985754365857925113101437701114376274992486353094802072396859071539370953287334467322044770179E+000000000000000894");
+ return val;
+ }
+
+ static const e_float& A000142_411(void)
+ {
+ static const e_float val("+3.16268275399423974353427328747994440887823717756558791455503892747374672192282742046877106077585976424188547911696447782120020160799919237742661626671847805780909533170270555792485289203153200769260930107309453142040319010919051499156454200248463222589109083954795969401996149206632746735125916925885368761746721125336417654745974145044367607221484690895158008649021911891121963651755109078402681461801094466069360400544E+000000000000000897");
+ return val;
+ }
+
+ static const e_float& A000142_412(void)
+ {
+ static const e_float val("+1.30302529464562677433612059444173709645783371715702222079667603811918364943220489723313367703965422286765681739618936486233448306249566725949976590188801295981734727666151468986503939151699118716935503204211494694520611432498649217652459130502366847706712942589375939393622413473132691654871877773464771929839649103638604073755341347758279454175251692648805099563397027699142249024523104940301904762262050920020576485024E+000000000000000900");
+ return val;
+ }
+
+ static const e_float& A000142_413(void)
+ {
+ static const e_float val("+5.38149446688643857800817805504437420837085325185850177189027203743222847215500622557284208617377194044342265584626207688144141504810710578173403317479749352404564425261205566914261268696517360300943628233393473088370125216219421268904656208974775081028724452894122629695660567644038016534620855204409508070237750798027434824609559766241694145743789490639565061196829724397457488471280423403446866668142270299684980883149E+000000000000000902");
+ return val;
+ }
+
+ static const e_float& A000142_414(void)
+ {
+ static const e_float val("+2.22793870929098557129538571478837092226553324626941973356257262349694258747217257738715662367594158334357697952035249982891674582991634179363788973436616231895489672058139104702504165240358187164590662088624897858585231839514840405326527670515556883545891923498166768694003475004631738845333034054625536341078428830383358017388357743224061376337928849124779935335487505900547400227110095289027002800610899904069582085624E+000000000000000905");
+ return val;
+ }
+
+ static const e_float& A000142_415(void)
+ {
+ static const e_float val("+9.24594564355759012087585071637173932740196297201809189428467638751231173800951619615669998825515757087584446500946287429000449519415281844359724239761957362366282139041277284515392285747486476733051247667793326113128712133986587682105089832639561066715451482517392090080114421269221716208132091326695975815475479646090935772161684634379854711802404723867836731642273149487271710942506895449462061622535234601888765655338E+000000000000000907");
+ return val;
+ }
+
+ static const e_float& A000142_416(void)
+ {
+ static const e_float val("+3.84631338771995749028435389801064356019921659635952622802242537720512168301195873760118719511414554948435129744393655570464187000076757247253645283740974262744373369841171350358403190870954374320949319029802023663061544247738420475755717370378057403753627816727235109473327599247996233942582949991905525939237799532773829281219260807902019560109800365129020080363185630186705031752082868506976217634974657594385726512621E+000000000000000910");
+ return val;
+ }
+
+ static const e_float& A000142_417(void)
+ {
+ static const e_float val("+1.60391268267922227344857557547043836460307332068192243708535138229453574181598679357969506036259869413497449103412154372883565979032007772104770083319986267564403695223768453099454130593187974091835866035427443867496663951306921338390134143447649937365262799575257040650377608886414429554057090146624604316662162405166686810268431756895142156565786752258801373511448407787855998240618556167409082753784432216858847955763E+000000000000000913");
+ return val;
+ }
+
+ static const e_float& A000142_418(void)
+ {
+ static const e_float val("+6.70435501359914910301504590546643236404084648045043578701676877799115940079082479716312535231566254148419337252262805278653305792353792487397938948277542598419207446035352133955718265879525731703873920028086715366136055316462931194470760719611176738186798502224574429918578405145212315535958636812890846043647838853596750866922044743821694214444988624441789741277854344553238072645785564779769965910818926666469984455088E+000000000000000915");
+ return val;
+ }
+
+ static const e_float& A000142_419(void)
+ {
+ static const e_float val("+2.80912475069804347416330423439043516053311467530873259476002611797829578893135559001134952262026260488187702308698115411755735126996239052219736419328290348737647919888812544127445953403521281583923172491768333738411007177597968170483248741517083053300268572432096686135884351755843960209566668824601264492288444479657038613240336747661289875852450233641109901595420970367806752438584151642723615716633130273250923486682E+000000000000000918");
+ return val;
+ }
+
+ static const e_float& A000142_420(void)
+ {
+ static const e_float val("+1.17983239529317825914858777844398276742390816362966768979921096955088423135116934780476679950051029405038834969653208472937408753338420401932289296117881946469812126353301268533527300429478938265247732446542700170132623014591146631602964471437174882386112800421480608177071427737454463288018000906332531086761146681455956217560941434017741747858029098129266158670076807554478836024205343689943918600985914714765387864406E+000000000000000921");
+ return val;
+ }
+
+ static const e_float& A000142_421(void)
+ {
+ static const e_float val("+4.96709438418428047101555454724916745085465336888090097405467818180922261398842295425806822589714833795213495222240007671066490851554749892134937936656282994637909051947398340526149934808106330096692953599944767716258342891428727319048480424750506254845534889774433360425470710774683290442555783815659955875264427528929575675931563437214692758482302503124210528001023359804355899661904496934663897310150700949162282909151E+000000000000000923");
+ return val;
+ }
+
+ static const e_float& A000142_422(void)
+ {
+ static const e_float val("+2.09611383012576635876856401893914866426066372166774021105107419272349194310311448669690479132859659861580094983785283237190059139356104454480943809268951423737197619921802099702035272489020871300804426419176691976261020700182922928638458739244713639544815723484810878099548639946916348566758540770208501379361588417208280935243119770504600344079531656318416842816431857837438189657323697706428164664883595800546483387662E+000000000000000926");
+ return val;
+ }
+
+ static const e_float& A000142_423(void)
+ {
+ static const e_float val("+8.86656150143199169759102580011259884982260754265454109274604383522037091932617427872790726731996361214483801781411748093313950159476321842454392313207664522408345932269222881739609202628558285602402723753117407059584117561773763988140680467005138695274570510340750014361090746975456154437388627457981960834699519004791028356078396629234459455456418906226903245113506758652363542250479241298191136532457610236311624729809E+000000000000000928");
+ return val;
+ }
+
+ static const e_float& A000142_424(void)
+ {
+ static const e_float val("+3.75942207660716447977859493924774191232478559808552542332432258613343726979429789418063268134366457154941131955318581191565114867617960461200662340800049757501138675282150501857594301914508713095418754871321780593263665846192075930971648518010178806796417896384478006089102476717593409481452778042184351393912596058031396022977240170795410809113521616240206975928126865668602141914203198310433041889762026740196128885439E+000000000000000931");
+ return val;
+ }
+
+ static const e_float& A000142_425(void)
+ {
+ static const e_float val("+1.59775438255804490390590284918029031273803387918634830491283709910671083966257660502676888957105744290849981081010397006415173818737633196010281494840021146937983936994913963289477578313666203065552970820311756752137057984631632270662950620154325992888477605963403152587868552604977199029617430667928349342412853324663343309765327072588049593873246686902087964769453917909155910313536359281934042803148861364583354776312E+000000000000000934");
+ return val;
+ }
+
+ static const e_float& A000142_426(void)
+ {
+ static const e_float val("+6.80643366969727129063914613750803673226402432533384377892868604219458817696257633741403546957270470679020919405104291247328640467822317415003799168018490085955811571598333483613174483616218025059255655694528083764103867014530753473024169641857428729704914601404097430024320034097202867866170254645374768198678755163065842499600293329225091269900030886202894729917873690293004177935664890541039022341414149413125091347088E+000000000000000936");
+ return val;
+ }
+
+ static const e_float& A000142_427(void)
+ {
+ static const e_float val("+2.90634717696073484110291540071593168467673838691755129360254894001708915156302009607579314550754490979941932585979532362609329479760129536206622244743895266703131541072488397502825504504125096700302164981563491767272351215204631732981320437073122067583998534799549602620384654559505624578854698733575026020835828454629114747329325251579113972247313188408636049674932065755112783978528908261023662539783841799404414005206E+000000000000000939");
+ return val;
+ }
+
+ static const e_float& A000142_428(void)
+ {
+ static const e_float val("+1.24391659173919451199204779150641876104164402960071195366189094632731415686897260112043946627722922139415147146799239851196793017337335441496434320750387174148940299579025034131209315927765541387729326612109174476392566320107582381716005147067296244925951372894207229921524632151468407319749811057970111136917734578581261111856951207675860780121850044638896229260870924143188271542810372735718127567027484290145089194228E+000000000000000942");
+ return val;
+ }
+
+ static const e_float& A000142_429(void)
+ {
+ static const e_float val("+5.33640217856114445644588502556253648486865288698705428120951215974417773296789245880668531032931335978090981259768738961634242044377169044019703236019160977098953885194017396422887965330114172553358811165948358503724109513261528417561662080918700890732331389716149016363340671929799467401726689438691776777377081342113610169866320680929442746722736691500864823529136264574277684918656499036230767262547907604722432643240E+000000000000000944");
+ return val;
+ }
+
+ static const e_float& A000142_430(void)
+ {
+ static const e_float val("+2.29465293678129211627173056099189068849352074140443334092009022868999642517619375728687468344160474470579121941700557753502724079082182688928472391488239220152550170633427480461841825091949094197944288801357794156601367090702457219551514694795041383014902497577944077036236488929813770982742476458637464014272144977108852373042517892799660381090776777345371874117528593766939404515022294585579229922895600270030646036593E+000000000000000947");
+ return val;
+ }
+
+ static const e_float& A000142_431(void)
+ {
+ static const e_float val("+9.88995415752736902113115871787504886740707439545310769936558888565388459250939509390642988563331644968196015568729403917596740780844207389281716007314311038857491235430072440790538266146300595993139884733852092814951892160927590616267028334566628360794229764560938972026179267287497352935620073536727469901512944851339153727813252117966536242501247910358552777446548239135508833459746089663846480967680037163832084417716E+000000000000000949");
+ return val;
+ }
+
+ static const e_float& A000142_432(void)
+ {
+ static const e_float val("+4.27246019605182341712866056612202111071985613883574252612593439860247814396405868056757771059359270626260678725691102492401792017324697592169701315159782368786436213705791294421512530975201857469036430205024104096059217413520719146227356240532783451863107258290325635915309443468198856468187871767866266997453592175778514410415324914961543656760539097274894799856908839306539816054610310734781679778037776054775460468453E+000000000000000952");
+ return val;
+ }
+
+ static const e_float& A000142_433(void)
+ {
+ static const e_float val("+1.84997526489043953961671002513083514094169770811587651381252959459487303633643740868576114868702564181170873888224247379209975943501594057409480669464185765684526880534607630484514925912262404284092774278775437073593641140054471390316445252150695234656725442839711000351328989021730104850725348475486093609897405412112096739709835688178348403377313429120029448338041527419731740351646264548160467343890357031717774382840E+000000000000000955");
+ return val;
+ }
+
+ static const e_float& A000142_434(void)
+ {
+ static const e_float val("+8.02889264962450760193652150906782451168696805322290406994637844054174897770013835369620338530169128546281592674893233625771295594796918209157146105474566223070846661520197116302794778459218834592962640369885396899396402547836405833973372394334017318410188421924345741524767812354308655052148012383609646266954739488566499850340686886694032070657540282380927805787100229001635753126144788139016428272484149517655140821527E+000000000000000957");
+ return val;
+ }
+
+ static const e_float& A000142_435(void)
+ {
+ static const e_float val("+3.49256830258666080684238685644450366258383110315196327042667462163566080529956018385784847260623570917632492813578556627210513583736659420983358555881436307035818297761285745591715728629760193047938748560900147651237435108308836537778416991535297533508431963537090397563273998374124264947684385386870196126125311677526427434898198795711903950736030022835703595517388599615711552609872982840472146298530605040179986257364E+000000000000000960");
+ return val;
+ }
+
+ static const e_float& A000142_436(void)
+ {
+ static const e_float val("+1.52275977992778411178328066940980359688655036097425598590603013503314811111060824016202193405631876920087766866720250689463783922509183507548744330364306229867616777823920585077988057682575444168901294372552464375939521707222652730471389808309389724609676336102171413337587463291118179517190392028675405510990635891401522361615614674930390122520909089956366767645581429432450236937904620518445855786159343797518474008211E+000000000000000963");
+ return val;
+ }
+
+ static const e_float& A000142_437(void)
+ {
+ static const e_float val("+6.65446023828441656849293652532084171839422507745749865840935169009485724555335800950803585182611302140783541207567495512956735741365131927988012723692018224521485319090532956790807812072854691018098656408054269322855709860562992432159973462312033096544285588766489076285257214582186444490122013165311522083029078845424652720260236129445804835416372723109322774611190846619807535418643191665608389785516332395155731415881E+000000000000000965");
+ return val;
+ }
+
+ static const e_float& A000142_438(void)
+ {
+ static const e_float val("+2.91465358436857445699990619809052867265667058392638441238329604026154747355237080816451970309983750337663191048914563034675050254717927784458749572977103982340410569761653435074373821687910354665927211506727769963410800918926590685286068376492670496286397087879722215412942659986997662686673441766406446672366736534295997891473983424697262517912371252721883375279701590819475700513365717949536474726056153589078210360156E+000000000000000968");
+ return val;
+ }
+
+ static const e_float& A000142_439(void)
+ {
+ static const e_float val("+1.27953292353780418662295882096174208729627838634368275703626696167481934088949078478422414966082866398234140870473493172222347061821170297377391062536948648247440240125365857997650107720992645698342045851453491013937341603408773310840584017280282347869728321579198052566281827734291973919449640935452430089168997338555943074357078723442098245363530979944906801747788998369749832525367550179846512404738651425605334348108E+000000000000000971");
+ return val;
+ }
+
+ static const e_float& A000142_440(void)
+ {
+ static const e_float val("+5.62994486356633842114101881223166518410362489991220413095957463136920509991375945305058625850764612152230219830083369957778327072013149308460520675162574052288737056551609775189660473972367641072705001746395360461324303054998602567698569676033242330626804614948471431291640042030884685245578420115990692392343588289646149527171146383145232279599536311757589927690271592826899263111617220791324654580850066272663471131677E+000000000000000973");
+ return val;
+ }
+
+ static const e_float& A000142_441(void)
+ {
+ static const e_float val("+2.48280568483275524372318929619416434618969858086128202175317241243381944906196791879530854000187193959133526945066766151380242238757798845031089617746695157059333041939259910858640269021814129713062905770160353963444017647254383732355069227130659867806420835192275901199613258535620146193300083271151895345023522435733951941482475554967047435303395513485097158111409772436662575032223194368974172670154879226244590769070E+000000000000000976");
+ return val;
+ }
+
+ static const e_float& A000142_442(void)
+ {
+ static const e_float val("+1.09740011269607781772564966891782064101584677274068665361490220629574819648538982010752637468082739729937018909719510638910067069530947089503741611044039259420225204537152880599518998907641845333173804350410876451842255800086437609700940598391751661570438009154985948330229060272744104617438636805849137742500396916594406758135254195295434966404100816960412943885243119417004858164242651911086584320208456618000109119929E+000000000000000979");
+ return val;
+ }
+
+ static const e_float& A000142_443(void)
+ {
+ static const e_float val("+4.86148249924362473252462803330594543970020120324124187551401677389016451043027690307634183983606537003620993770057432130371597118022095606501575336925093919231597656099587261055869165160853374825959953272320182681661193194382918610975166850875459860757040380556587751102914737008256383455253161049911680199276758340513221938539176085158776901170166619134629341411627019017331521667594947966113568538523462817740483401285E+000000000000000981");
+ return val;
+ }
+
+ static const e_float& A000142_444(void)
+ {
+ static const e_float val("+2.15849822966416938124093484678783977522688933423911139272822344760723304263104294496589577688721302429607721233905499865884989120401810449286699449594741700138829359308216743908805909331418898422726219252910161110657569778306015863272974081788704178176125928967124961489694143231665834254132403506160786008478880703187870540711394181810496944119553978895775427586762396443695195620412156896954424431104417491076774630170E+000000000000000984");
+ return val;
+ }
+
+ static const e_float& A000142_445(void)
+ {
+ static const e_float val("+9.60531712200555374652216006820588699975965753736404569764059434185218703970814110509823620714809795811754359490879474403188201585788056499325812550696600565617790648921564510394186296524814097981131675675450216942426185513461770591564734663959733592883760383903706078629138937380912962430889195602415497737731019129186023906165704109056711401332015206086200652761092664174443620510834098191447188718414657835291647104258E+000000000000000986");
+ return val;
+ }
+
+ static const e_float& A000142_446(void)
+ {
+ static const e_float val("+4.28397143641447697094888339041982560189280726166436438114770507646607541970983093287381334838805168932042444332932245583821937907261473198699312397610683852265534629419017771635807088250067087699584727351250796756322078739003949683837871660126041182426157131221052911068595966071887181244176581238677311991028034531616966662149904032639293284994078781914445491131447328221801854747832007793385446168412937394540074608499E+000000000000000989");
+ return val;
+ }
+
+ static const e_float& A000142_447(void)
+ {
+ static const e_float val("+1.91493523207727120601415087551766204404608484596397087837302416918033571261029442699459456672945910512622972616820713775968406244545878519818592641731975681962693979350300943921205768447779988201714373126009106150075969196334765508675528632076340408544492237655810651247662396834133570016146931813688758459989531435632784097981007102589764098392353215515757134535756955715145429072280907483643294437280583015359413349999E+000000000000000992");
+ return val;
+ }
+
+ static const e_float& A000142_448(void)
+ {
+ static const e_float val("+8.57890983970617500294339592231912595732646010991858953511114827792790399249411903293578365894797679096550917323356797716338459975565535768787295034959251055192869027489348228767001842646054347143680391604520795552340341999579749478866368271702005030279325224698031717589527537816918393672338254525325637900753100831634872758954911819602143160797742405510591962720191161603851522243818465526721959079017011908810171807996E+000000000000000994");
+ return val;
+ }
+
+ static const e_float& A000142_449(void)
+ {
+ static const e_float val("+3.85193051802807257632158476912128755483958058935344670126490557678962889262985944578816686286764157914351361878187202174635968529028925560185495470696703723781598193342717354716383827348078401867512495830429837203000813557811307516010999353994200258595417025889416241197697864479796358758879876281871211417438142273404057868770755407001362279198186340074255791261365831560129333487474491021498159626478638347055767141790E+000000000000000997");
+ return val;
+ }
+
+ static const e_float& A000142_450(void)
+ {
+ static const e_float val("+1.73336873311263265934471314610457939967781126520905101556920750955533300168343675060467508829043871061458112845184240978586185838063016502083472961813516675701719187004222809622372722306635280840380623123693426741350366101015088382204949709297390116367937661650237308538964039015908361441495944326842045137847164023031826040946839933150613025639183853033415106067614624202058200069363520959674171831915387256175095213806E+000000000000001000");
+ return val;
+ }
+
+ static const e_float& A000142_451(void)
+ {
+ static const e_float val("+7.81749298633797329364465628893165309254692880609282008021712586809455183759229974522708464818987858487176088931780926813423698129664204424396463057778960207414753533389044871396900977602925116590116610287857354603490151115578048603744323188931229424819398854042570261510727815961746710101146708914057623571690709743873535444670248098509264745632719177180702128364941955151282482312829479528130514961938396525349679414263E+000000000000001002");
+ return val;
+ }
+
+ static const e_float& A000142_452(void)
+ {
+ static const e_float val("+3.53350682982476392872738464259710719783121182035395467625814089237873743059171948484264226098182512036203592197164978919667511554608220399827201302116090013751468597091848281871399241876522152698732707850111524280777548304241277968892434081396915700018368282027241758202848972814709512965718312429154045854404200804230838020990952140526187665025989068085677362020953763728379682005398924746714992762796155229458055095247E+000000000000001005");
+ return val;
+ }
+
+ static const e_float& A000142_453(void)
+ {
+ static const e_float val("+1.60067859391061805971350524309648956061753895462034146834493782424756805605804892663371694422476677952400227265315735450609382734237523841121722189858588776229415274482607271687743856570064535172525916656100520499192229381821298919908272638872802812108320831758340516465890584685063409373470395530406782772045102964316569623508901319658363012256773047842811844995492054968955995948445712910261891721546658318944498958147E+000000000000001008");
+ return val;
+ }
+
+ static const e_float& A000142_454(void)
+ {
+ static const e_float val("+7.26708081635420599109931380365806260520362685397635026628601772208395897450354212691707492678044117903897031784533438945766597613438358238692618741957993044081545346151037013462357108828092989683267661618696363066332721393468697096383557780482524766971776576182865944755143254470187878555555595708046793785084767457997226090730411991248968075645749637206365776279533929559060221605943536612588988415821828768008025269987E+000000000000001010");
+ return val;
+ }
+
+ static const e_float& A000142_455(void)
+ {
+ static const e_float val("+3.30652177144116372595018778066441848536765021855923937116013806354820133339911166774726909168510073646273149461962714720323801914114452998605141527590886835057103132498721841125372484516782310305886786036506845195181388234028257178854518790119548768972158342163204004863590180783935484742777796047161291172213569193388737871282337456018280474418816084928896428207187937949372400830704309158727989729198932089443651497844E+000000000000001013");
+ return val;
+ }
+
+ static const e_float& A000142_456(void)
+ {
+ static const e_float val("+1.50777392777717065903328562798297482932764849966301315324902295697797980802999492049275470580840593582700556154654997912467653672836190567363944536581444396786039028419417159553169852939652733499484374432647121409002713034716885273557660568294514238651304204026421026217797122437474581042706674997505548774529387552185264469304745879944335896334980134727576771262477699704913814778801164976379963316514713032786305083017E+000000000000001016");
+ return val;
+ }
+
+ static const e_float& A000142_457(void)
+ {
+ static const e_float val("+6.89052684994166991178211531988219497002735364345997011034803491338936772269707678665188900554441512672941541626773340459977177284861390892853226532177200893312198359876736419157986227934212992092643591157197344839142398568656165700158508797105930070636460212400744089815332849539258835365169504738600357899599301113486658624722688671345615046250859215705025844669523087651456133539121323942056432356472238559833414229387E+000000000000001018");
+ return val;
+ }
+
+ static const e_float& A000142_458(void)
+ {
+ static const e_float val("+3.15586129727328481959620881650604529627252796870466631053939999033233041699526116828656516453934212804207226065062189930669547196466517028926777751737158009136986848823545279974357692393869550378430764749996383936327218544444523890672597029074515972351498777279540793135422445088980546597247633170278963918016479909976889650122991411476291691182893520792901836858641574144366909160917566365461846019264285260403703717059E+000000000000001021");
+ return val;
+ }
+
+ static const e_float& A000142_459(void)
+ {
+ static const e_float val("+1.44854033544843773219465984677627479098909033763544183653758459556253966140082487624353341052355803677131116763863545178177322163178131316277390988047355526193876963610007283508230180808786123623699721020248340226774193311900036465818722036345202831309337938771309224049158902295842070888136663625158044438369564278679392349406453057867617886252948126043941943118116482532264411304861162961746987322842306934525300006130E+000000000000001024");
+ return val;
+ }
+
+ static const e_float& A000142_460(void)
+ {
+ static const e_float val("+6.66328554306281356809543529517086403854981555312303244807288913958768244244379443072025368840836696914803137113772307819615681950619404054875998545017835420491834032606033504137858831720416168669018716693142365043161289234740167742766121367187933024022954518348022430626130950560873526085428652675727004416499995681925204807269684066191042276763561379802132938343335819648416292002361349624036141685074611898816380028199E+000000000000001026");
+ return val;
+ }
+
+ static const e_float& A000142_461(void)
+ {
+ static const e_float val("+3.07177463535195705489199567107376832177146496998971795856160189334992160596658923256203695035625717277724246209449033904842829379235545269297835329253222128846735489031381445407552921423111853756417628395538630284897354337215217329415181950273637124074582032958438340518646368208562695525382608883510149036006498009367519416151324354514070489588001796088783284576277812857919910613088582176680661316819396085354351193000E+000000000000001029");
+ return val;
+ }
+
+ static const e_float& A000142_462(void)
+ {
+ static const e_float val("+1.41915988153260415936010200003608096465841681613524969685546007472766378195656422544366107106459081382308601748765453664037387173206821914415599922114988623527191795932498227778289449697477676435464944318738847191622577703793430406189814061026420351322456899226798513319614622112355965332726765304181688854635002080327793970261911851785500566189656829793017877474240349540358998703246924965626465528370560991433710251166E+000000000000001032");
+ return val;
+ }
+
+ static const e_float& A000142_463(void)
+ {
+ static const e_float val("+6.57071025149595725783727226016705486636846985870620609644078014598908331045889236380415075902905546800088826096784050464493102611947585463744227639392397326930898015167466794613480152099321641896202692195760862497212534768563582780658839102552326226622975443420077116669815700380208119490524923358361219396960059631917686082312651873766867621458111121941672772705732818371862163996033262590850535396355697390338078462898E+000000000000001034");
+ return val;
+ }
+
+ static const e_float& A000142_464(void)
+ {
+ static const e_float val("+3.04880955669412416763649432871751345799497001443967962874852198773893465605292605680512595218948173715241215308907799415524799611943679655177321624678072359695936679037704592700654790574085241839838049178833040198706616132613502410225701343584279369153060605746915782134794484976416567443603564438279605800189467669209806342193070469427826576356563560580936166535460027724544044094159433842154648423909043589116868406785E+000000000000001037");
+ return val;
+ }
+
+ static const e_float& A000142_465(void)
+ {
+ static const e_float val("+1.41769644386276773795096986285364375796766105671445102736806272429860461506461061641438356776810900777587165118642126728219031819553811039657454555475303647258610555752532635605804477616949637455524692868157363692398576501665278620754951124766689906656173181672315838692679435514033703861275657463800016697088102466182559949119777768283939358005802055670135317438988912891912980503784136736601911517117705268939343809155E+000000000000001040");
+ return val;
+ }
+
+ static const e_float& A000142_466(void)
+ {
+ static const e_float val("+6.60646542840049765885151956089797991212930052428934178753517229523149750620108547249102742579938797623556189452872310553500688279120759444803738228514914996225125189806802081923048865694985310542745068765613314806577366497760198372718072241412774965017767026592991808307886169495397059993544563781308077808430557492410729362898164400203157408307037579422830579265688334076314489147634077192564907669768506553257342150662E+000000000000001042");
+ return val;
+ }
+
+ static const e_float& A000142_467(void)
+ {
+ static const e_float val("+3.08521935506303240668365963493935661896438334484312261477892546187310933539590691565330980784831418490200740474491369028484821426349394660723345752716465303237133463639776572258063820279558140023461947113541418014671630154454012640059339736739765908663297201418927174479782841154350427016985311285870872336537070348955810612473442774894874509679386549590461880517076452013638866431945114048927811881781892560371178784359E+000000000000001045");
+ return val;
+ }
+
+ static const e_float& A000142_468(void)
+ {
+ static const e_float val("+1.44388265816949916632795270915161889767533140538658138371653711615661516896528443652574899007301103853413946542061960705330896427531516701218525812271305761914978460983415435816773867890833209530980191249137383630866322912284477915547770996794210445254423090264057917656538369660235999843949125681787568253499348923311319366637571218650801270529952905208336160081991779542382989490150313374898215960673925718253711671080E+000000000000001048");
+ return val;
+ }
+
+ static const e_float& A000142_469(void)
+ {
+ static const e_float val("+6.77180966681495109007809820592109263009730429126306668963055907477452514244718400730576276344242177072511409282270595708001904245122813328714886059552424023381248982012218393980669440408007752700297096958454329228763054458614201423919045974964846988243244293338431633809164953706506839268121399447583695108911946450330087829530209015472257958785479125427096590784541446053776220708804969728272632855560711618609907737365E+000000000000001050");
+ return val;
+ }
+
+ static const e_float& A000142_470(void)
+ {
+ static const e_float val("+3.18275054340302701233670615678291353614573301689364134412636276514402681695017648343370849881793823224080362362667179982760894995207722264495996447989639290989187021545742645170914636991763643769139635570473534737518635595548674669241951608233478084474324817869062867890307528242058214456017057740364336701188614831655141279879198237271961240629175188950735397668734479645274823733138335772288137442113534460746656636562E+000000000000001053");
+ return val;
+ }
+
+ static const e_float& A000142_471(void)
+ {
+ static const e_float val("+1.49907550594282572281058859984475227552464025095690507308351686238283663078353312369727670294324890738541850672816241771880381542742837186577614327003120106055907087148044785875500794023120676215264768353693034861371277365503425769212959207477968177787406989216328610776334845802009419008784034195711602586259837585709571542823102369755093744336341513995796372301973939912924441978308156148747712735235474731011675275821E+000000000000001056");
+ return val;
+ }
+
+ static const e_float& A000142_472(void)
+ {
+ static const e_float val("+7.07563638805013741166597819126723074047630198451659194495419959044698889729827634385114603789213484285917535175692661163275400881746191520646339623454726900583881451338771389332363747789129591736049706629431124545672429165176169630685167459296009799156560989101071042864300472185484457721460641403758764207146433404549177682125043185244042473267531946060158877265316996389003366137614497022089204110311440730375107301873E+000000000000001058");
+ return val;
+ }
+
+ static const e_float& A000142_473(void)
+ {
+ static const e_float val("+3.34677601154771499571800768446940014024529083867634798996333640628142574842208471064159207592297978067238994138102628730229264617065948589265718641894085823976175926483238867154208052704258296891151511235720921910103058995128328235314084208247012635001053347844806603274814123343734148502250883383977895469980263000351761043645145426620432089855542610486455148946494939291998592183091657091448193544177311465467425753786E+000000000000001061");
+ return val;
+ }
+
+ static const e_float& A000142_474(void)
+ {
+ static const e_float val("+1.58637182947361690797033564243849566647626785753258894724262145657739580475206815284411464398749241603871283221460646018128671428489259631311950636257796680564707389153055223031094616981818432726405816325731716985388849963690827583538875914709083988990499286878438329952261894464929986390066918724005522452770644662166734734687798932218084810591527197370579740600638601224407332694785445461346443739940045634631559807295E+000000000000001064");
+ return val;
+ }
+
+ static const e_float& A000142_475(void)
+ {
+ static const e_float val("+7.53526618999968031285909430158285441576227232327979749940245191874263007257232372600954455894058897618388595301938068586111189285323983248731765522224534232682360098477012309397699430663637555450427627547225655680597037327531431021809660594868148947704871612672582067273243998708417435352817863939026231650660562145291989989767044928035902850309754187510253767853033355815934830300230865941395607764715216764499909084649E+000000000000001066");
+ return val;
+ }
+
+ static const e_float& A000142_476(void)
+ {
+ static const e_float val("+3.58678670643984782892092888755343870190284162588118360971556711332149191454442609358054321005572035266352971363722520646988926099814216026396320388578878294756803406875057859273304928995891476394403550712479412103964189767904961166381398443157238899107518887632149064022064143385206699227941303234976486265714427581158987235129113385745089756747442993254880793498043877368384979222909892188104309296004443179901956724293E+000000000000001069");
+ return val;
+ }
+
+ static const e_float& A000142_477(void)
+ {
+ static const e_float val("+1.71089725897180741439528307936299026080765545554532458183432551305435164323769124663791911119657860822050367340495642348613717749611381044591044825352124946598995225079402598873366451131040234240130493689852679573590918519290666476363927057386002954874286509400535103538524596394743595531728001643083783948745781956212836911156587085000407813968530307782578138498566929504719635089328018573725755534194119396813233357488E+000000000000001072");
+ return val;
+ }
+
+ static const e_float& A000142_478(void)
+ {
+ static const e_float val("+8.17808889788523944080945311935509344666059307750665150116807595239980085467616415892925335151964574729400755887569170426373570843142401393145194265183157244743197175879544422614691636406372319667823759837495808361764590522209385757019571334305094124299089514934557794914147570766874386641659847853940487275004837750697360435328486266301949350769574871200723502023149923032559855726987928782409111453447890716767255448791E+000000000000001074");
+ return val;
+ }
+
+ static const e_float& A000142_479(void)
+ {
+ static const e_float val("+3.91730458208702969214772804417108976095042408412568606905950838119950460938988263212711235537791031295382962070145632634232940433865210267316548053022732320231991447246301778432437293838652341120887580962160492205285238860138295777612374669132140085539263877653653183763876686397332831201355067122037493404727317282584035648522344921558633739018626363305146557469088813132596170893227217886773964386201539653331515359971E+000000000000001077");
+ return val;
+ }
+
+ static const e_float& A000142_480(void)
+ {
+ static const e_float val("+1.88030619940177425223090946120212308525620356038032931314856402297576221250714366342101393058139695021783821793669903664431811408255300928311943065450911513711355894678224853647569901042553123738026038861837036258536914652866381973253939841183427241058846661273753528206660809470719758976650432218577996834269112295640337111290725562348144194728940654386470347585162630303646162028749064585651502905376739033599127372786E+000000000000001080");
+ return val;
+ }
+
+ static const e_float& A000142_481(void)
+ {
+ static const e_float val("+9.04427281912253415323067450838221204008233912542938399624459295051341624215936102105507700609651933054780182827552236625917012873707997465180446144818884380951621853402261546044811224014680525179905246925436144403562559480287297291351450636092285029493052440726754470674038493554162040677688578971360164772834430142030021505308389954894573576646204547598922371884632251760538039358283000656983728974862114751611802663101E+000000000000001082");
+ return val;
+ }
+
+ static const e_float& A000142_482(void)
+ {
+ static const e_float val("+4.35933949881706146185718511304022620331968745845696308618989380214746662872081201214854711693852231732404048122880178053692000205127254778216975041802702271618681733339890065193599009975076013136714329018060221602517153669498477294431399206596481384215651276430295654864886553893106103606645895064195599420506195328458470365558643958259184463943470591942680583248392745348579334970692406316666157365883539310276888883615E+000000000000001085");
+ return val;
+ }
+
+ static const e_float& A000142_483(void)
+ {
+ static const e_float val("+2.10556097792864068607702040959842925620340904243471317062971870643722638167215220186774825748130627926751155243351125999933236099076464057878798945190705197191823277203166901488508321817961714345033020915723087034015785222367764533210365816786100508576159566515832801299740205530370248042009967316006474520104492343645441186564825031839186096084696295908314721708973696003363818790844432250949754007721749486863737330786E+000000000000001088");
+ return val;
+ }
+
+ static const e_float& A000142_484(void)
+ {
+ static const e_float val("+1.01909151331746209206127787824563976000244997653840117458478385391561756872932166570399015662095223916547559137781944983967686271953008604013338689472301315440842466166332780320438027759893469742995982123209974124463640047625998034073817055324472646150861230193663075829074259476699200052332824180947133667730574294324393534297375315410166070504993007219624325307143268865628088294768705209459680939737326751642048868100E+000000000000001091");
+ return val;
+ }
+
+ static const e_float& A000142_485(void)
+ {
+ static const e_float val("+4.94259383958969114649719770949135283601188238621124569673620169149074520833721007866435225961161835995255661818242433172243278418972091729464692643940661379888085960906713984554124434635483328253530513297568374503648654230986090465258012718323692333831676966439265917771010158461991120253814197277593598288493285327473308641342270279739305441949216085015177977739644853998296228229628220265879452557726034745463937010287E+000000000000001093");
+ return val;
+ }
+
+ static const e_float& A000142_486(void)
+ {
+ static const e_float val("+2.40210060604058989719763808681279747830177483969866540861379402206450217125188409823087519817124652293694251643665822521710233311620436580519840624955161430625609777000662996493304475232844897531215829462618230008773245956259239966115394181105314474242195005689483236036710937012527684443353699876910488768207736669152027999692343355953302444787319017317376497181467399043171966919599315049217413943054852886295473386999E+000000000000001096");
+ return val;
+ }
+
+ static const e_float& A000142_487(void)
+ {
+ static const e_float val("+1.16982299514176727993524974827783237193296434693325005399491768874541255739966755583843622150939705667029100550465255568072883622759152614713162384353163616714671961399322879292239279438395465097702108948295078014272570780698249863498196966198288148955948967770778335949878226325100982323913251840055408030117167757877037635850171214349258290611424361433562354127374623334024747889844866428968880590267713355625895539469E+000000000000001099");
+ return val;
+ }
+
+ static const e_float& A000142_488(void)
+ {
+ static const e_float val("+5.70873621629182432608401877159582197503286601303426026349519832107761328011037767249156876096585763655102010686270447172195672079064664759800232435643438449567599171628695650946127683659369869676786291667679980709650145409807459333871201195047646166905030962721398279435405744466492793740696668979470391186971778658439943662948835526024380458183750883795784288141588161870040769702442948173368137280506441175454370232607E+000000000000001101");
+ return val;
+ }
+
+ static const e_float& A000142_489(void)
+ {
+ static const e_float val("+2.79157200976670209545508517931035694579107148037375326884915197900695289397397468184837712411230438427344883225586248667203683646662621067542313661029641401838555994926432173312656437309431866271948496625495510567018921105395847614263017384378298975616560140770763758643913409044114976139200671130961021290429199763977132451181980572225922044051854182176138516901236611154449936384494601656777019130167649734797187043745E+000000000000001104");
+ return val;
+ }
+
+ static const e_float& A000142_490(void)
+ {
+ static const e_float val("+1.36787028478568402677299173786207490343762502538313910173608446971340691804724759410570479081502914829398992780537261846929804986864684323095733693904524286900892437513951764923201654281621614473254763346492800177839271341643965330988878518345366498052114468977674241735517570431616338308208328854170900432310307884348794901079170480390701801585408549266307873281605939465680468828402354811820739373782148370050621651435E+000000000000001107");
+ return val;
+ }
+
+ static const e_float& A000142_491(void)
+ {
+ static const e_float val("+6.71624309829770857145538943290278777587873887463121298952417474629282796761198568705901052290179311812349054552437955668425342485505600026400052437071214248683381868193503165772920122522762127063680888031279648873190822287471869775155393525075749505435882042680380526921391270819236221093302894673979121122643611712152582964298727058718345845784355976897571657812685162776491101947455562126039830325270348496948552308546E+000000000000001109");
+ return val;
+ }
+
+ static const e_float& A000142_492(void)
+ {
+ static const e_float val("+3.30439160436247261715605160098817158573233952631855679084589397517607136006509695803303317726768221411675734839799474188865268502868755212988825799039037410352223879151203557560276700281198966515330996911389587245609884565436159929376453614337268756674453964998747219245324505243064220777905024179597727592340656962379070818434973712889426156125903140633605255643841100086033622158148136566011596520033011460498687735805E+000000000000001112");
+ return val;
+ }
+
+ static const e_float& A000142_493(void)
+ {
+ static const e_float val("+1.62906506095069900025793343928716859176604338647504849788702572976180318051209280031028535639296733155956137276021140775110577371914296320003491118926245443303646372421543353877216413238631090492058181477315066512085673090760026845182591631868273497040505804744382379087944981084830660843507176920541679703023943882452881913488442040454487094970070248332367391032413662342414575723967031327043717084376274650025853053752E+000000000000001115");
+ return val;
+ }
+
+ static const e_float& A000142_494(void)
+ {
+ static const e_float val("+8.04758140109645306127419119007861284332425432918673957956190710502330771172973843353280966058125861790423318143544435429046252217256623820817246127495652489920013079762424168153449081398837587030767416497936428569703225068354532615202002661429271075380098675437248952694448206559063464566925453987475897732938282779317236652632903679845166249152147026761894911700123491971528004076397134755595962396818796771127714085533E+000000000000001117");
+ return val;
+ }
+
+ static const e_float& A000142_495(void)
+ {
+ static const e_float val("+3.98355279354274426533072463908891335744550589294743609188314401698653731730622052459874078198772301586259542481054495537377894847542028791304536833110347982510406474482399963235957295292424605580229871166478532142003096408835493644524991317407489182313148844341438231583751862246736414960628099723800569377804449975762032143053287321523357293330312778247137981291561128525906362017816581704020001386425304401708218472339E+000000000000001120");
+ return val;
+ }
+
+ static const e_float& A000142_496(void)
+ {
+ static const e_float val("+1.97584218559720115560403942098810102529297092290192830157403943242532250938388538020097542786591061586784733070603029786539435844380846280487050269222732599325161611343270381765034818465042604367794016098573351942433535818782404847684395693434114634427321826793353362865540923674381261820471537463005082411391007187977967942954430511475585217491835138010580438720614319748849555560837024525193920687666950983247276362280E+000000000000001123");
+ return val;
+ }
+
+ static const e_float& A000142_497(void)
+ {
+ static const e_float val("+9.81993566241808974335207592231086209570606548682258365882297597915385287163791033959884787649357576086320123360897058039100996146572806014020639838036981018646053208376053797372223047771261743707936260009909559153894673019348552092991446596367549733103789479162966213441738390661674871247743541191135259584613305724250500676483519642033658530934420635912584780441453169151782291137360011890213785817704746386738963520532E+000000000000001125");
+ return val;
+ }
+
+ static const e_float& A000142_498(void)
+ {
+ static const e_float val("+4.89032795988420869218933380931080932366162061243764666209384203761861873007567934912022624249380072890987421433726734903472296080993257394982278639342416547285734497771274791091367077790088348366552257484934960458639547163635578942309740404991039767085687160623157174293985718549514085881376283513185359273137426250676749336888792781732761948405341476684467220659843678237587580986405285921326465337216963700596003833225E+000000000000001128");
+ return val;
+ }
+
+ static const e_float& A000142_499(void)
+ {
+ static const e_float val("+2.44027365198222013740247757084609385250714868560638568438482717677169074630776399521099289500440656372602723295429640716832675744415635440096157041031865857095581514387866120754592171817254085834909576484982545268861134034654153892212560462090528843775757893150955429972698873556207528854806765473079494277295575699087697919107507598084648212254265396865549143109261995440556202912216237674741906203271264886597405912779E+000000000000001131");
+ return val;
+ }
+
+ static const e_float& A000142_500(void)
+ {
+ static const e_float val("+1.22013682599111006870123878542304692625357434280319284219241358838584537315388199760549644750220328186301361647714820358416337872207817720048078520515932928547790757193933060377296085908627042917454788242491272634430567017327076946106280231045264421887878946575477714986349436778103764427403382736539747138647787849543848959553753799042324106127132698432774571554630997720278101456108118837370953101635632443298702956390E+000000000000001134");
+ return val;
+ }
+
+ static const e_float& A000142_501(void)
+ {
+ static const e_float val("+6.11288549821546144419320631496946510053040745744399613938399207781308531950094880800353720198603844213369821855051249995665852739761166777440873387784823972024431693541604632490253390402221485016448489094881275898497140756808655499992463957536774753658273522343143352081610678258299859781290947510064133164625417126214683287364306533202043771696934819148200603488701298578593288295101675375228475039194518540926501811512E+000000000000001136");
+ return val;
+ }
+
+ static const e_float& A000142_502(void)
+ {
+ static const e_float val("+3.06866852010416164498498957011467148046626454363688606197076402306216883038947630161777567539699129795111650571235727497824258075360105722275318440667981633956264710157885525510107201981915185478257141525630400501045564659917945060996216906683460926336453308216257962744968560485666529610208055650052194848641959397359771010256881879667425973391861279212396702951328051886453830724141041038364694469675648307545103909379E+000000000000001139");
+ return val;
+ }
+
+ static const e_float& A000142_503(void)
+ {
+ static const e_float val("+1.54354026561239330742744975376767975467453106544935368917129430360027092168590657971374116472468662286941160237331570931405601811906133178304485175655994761880001149209416419331583922596903338295563342187392091452025919023938726365681097104061780845947236014032777755260719185924290264393934651991976254008866905576871964818159211585472715264616106223443835541584518010098886276854242943642297441318246851098695187266418E+000000000000001142");
+ return val;
+ }
+
+ static const e_float& A000142_504(void)
+ {
+ static const e_float val("+7.77944293868646226943434675898910596355963656986474259342332329014536544529696916175725547021242057926183447596151117494284233132006911218654605285306213599875205792015458753431182969888392825009639244624456140918210631880651180883032729404471375463574069510725199886514024697058422932545430646039560320204689204107434702683522426390782484933665175366156931129585970770898386835345384435957179104243964129537423743822745E+000000000000001144");
+ return val;
+ }
+
+ static const e_float& A000142_505(void)
+ {
+ static const e_float val("+3.92861868403666344606434511328949851159761646778169500967877826152340954987496942668741401245727239252722641036056314334613537731663490165420575669079637867936978924967806670482747399793638376629867818535350351163696369099728846345931528349258044609104905102916225942689582472014503580935442476249977961703368048074254524855178825327345154891500913559909250220440915239303685351849419140158375447643201885416398990630486E+000000000000001147");
+ return val;
+ }
+
+ static const e_float& A000142_506(void)
+ {
+ static const e_float val("+1.98788105412255170370855862732448624686839393269753767489746180033084523223673452990383149030337983061877656364244495053314450092221726023702811288554296761176111336033710175264270184295581018574713116178887277688830362764462796251041353344724570572207081982075610327000928730839338811953333892982488848621904232325572789576720485615636648375099462261314080611543103111087664788035806084920137976507460154020697889259026E+000000000000001150");
+ return val;
+ }
+
+ static const e_float& A000142_507(void)
+ {
+ static const e_float val("+1.00785569444013371378023922405351452716227572387765160117301313276773853274402440666124256558381357412371971776671958992030426196756415094017325323297028457916288447369091058858984983437859576417379549902695849788236993921582637699277966145775357280108990564912334435789470866535544777660340283742121846251305445789065404315397286207127780726175427366486238870052353277321446047534153685054509954089282298088493829854326E+000000000000001153");
+ return val;
+ }
+
+ static const e_float& A000142_508(void)
+ {
+ static const e_float val("+5.11990692775587926600361525819185379798436067729847013395890671446011174633964398583911223316577295654849616625493551679514565079522588677608012642348904566214745312634982579003643715864326648200288113505694916924243929121639799512332068020538814982953672069754658933810512002000567470514528641409978978956631664608452253922218213932209126088971171021750093459865954648792945921473500720076910566773554074289548655659977E+000000000000001155");
+ return val;
+ }
+
+ static const e_float& A000142_509(void)
+ {
+ static const e_float val("+2.60603262622774254639584016641965358317403958474492129818508351766019687888687878879210812668137843488318454862376217804872913625476997636902478434955592424203305364131206132712854651374942263933946649774398712714440159922914657951777022622454256826323419083505121397309550609018288842491895078477679300288925517285702197246409070891494445179286326050070797571071770916235609474030011866519147478487739023813380265730928E+000000000000001158");
+ return val;
+ }
+
+ static const e_float& A000142_510(void)
+ {
+ static const e_float val("+1.32907663937614869866187848487402332741876018821990986207439259400670040823230818228397514460750300179042411979811871080485185948993268794820264001827352136343685735706915127683555872201220554606312791384943343484364481560686475555406281537451670981424943732587611912627870810599327309670866490023616443147352013815708120595668626154662167041436026285536106761246603167280160831755306051924765214028746902144823935522773E+000000000000001161");
+ return val;
+ }
+
+ static const e_float& A000142_511(void)
+ {
+ static const e_float val("+6.79158162721211985016219905770625920310986456180373939520014615537423908606709481147111298894434033914906725216838661221279300199355603541531549049337769416716234109462336302462970506948237034038258363977060485205102500775107890088126098656378038715081462473522696873528419842162562552418127764020680024482968790598268496243866679650323673581738094319089505549970142184801621850269613925335550243686896669960050310521373E+000000000000001163");
+ return val;
+ }
+
+ static const e_float& A000142_512(void)
+ {
+ static const e_float val("+3.47728979313260536328304591754560471199225065564351457034247483155161041206635254347320985033950225364432243311021394545295001702070069013264153113260937941358711864044716186861040899557497361427588282356254968425012480396855239725120562512065555822121708786443620799246550959187232026838081415178588172535280020786313470076859739980965720873849904291373826841584712798618430387338042329771801724767691095019545758986943E+000000000000001166");
+ return val;
+ }
+
+ static const e_float& A000142_513(void)
+ {
+ static const e_float val("+1.78384966387702655136420255570089521725202458634512297458568958858597614139003885480175665322416465611953740818553975401736335873161945403804510547102861163917019186254939403859713981472996146412352788848758798802031402443586737978986848568689630136748436607445577470013480642063050029767935765986615732510598650663378810149429046610235414808285000901474773169732957665691254788704415715172934284805825531745026974360302E+000000000000001169");
+ return val;
+ }
+
+ static const e_float& A000142_514(void)
+ {
+ static const e_float val("+9.16898727232791647401200113630260141667540637381393208937044448533191736674479971368102919757220633245442227807367433564924766388052399375555184212108706382533478617350388535838929864771200192559493334682620225842441408560035833211992401643064698902886964162270268195869290500204077153007189837171204865104477064409767084168065299576610032114584904633580334092427402401653049613940696775988882223901943233169438648211950E+000000000000001171");
+ return val;
+ }
+
+ static const e_float& A000142_515(void)
+ {
+ static const e_float val("+4.72202844524887698411618058519583972958783428251417502602577890994593744387357185254573003674968626121402747320794228285936254689846985678410919869235983787004741487935450095957048880357168099168139067361549416308857325408418454104176086846178319934986786543569188120872684607605099733798702766143170505528805688171030048346553629281954166539011225886293872057600112236851320551179458839634274345309500765082260903829154E+000000000000001174");
+ return val;
+ }
+
+ static const e_float& A000142_516(void)
+ {
+ static const e_float val("+2.43656667774842052380394918196105330046732248977731431342930191753210372103876307591359669896283811078643817617529821795543107419961044610060034652525767634094446607774692249513837222264298739170759758758559498815370379910743922317754860812628013086453181856481701070370305257524231462640130627329875980852863735096251504946821672709488349934129792557327637981721657914215281404408600761251285562179702394782446626375844E+000000000000001177");
+ return val;
+ }
+
+ static const e_float& A000142_517(void)
+ {
+ static const e_float val("+1.25970497239593341080664172707386455634160572721487150004294909136409762377704051024732949336378730327658853708262917868295786536119860063401037915355821866826828896219515892998653843910642448151282795278175260887546486413854607838279263040128682765696295019801039453381447818140027666184947534329545882100930551044762028057506804790805476915945102752138388836550097141649300486079246593566914635646906138102524905836311E+000000000000001180");
+ return val;
+ }
+
+ static const e_float& A000142_518(void)
+ {
+ static const e_float val("+6.52527175701093506797840414624261840184951766697303437022247629326602569116506984308116677562441823097272862208801914557772174257100875128417376401543157270162973682417092325733026911457127881423644879540947851397490799623766868602286582547866576726306808202569384368515899697965343310838028227827047669282820254411867305337885248816372370424595632256076854173329503193743376517890497354676617812650973795371079012232092E+000000000000001182");
+ return val;
+ }
+
+ static const e_float& A000142_519(void)
+ {
+ static const e_float val("+3.38661604188867530028079175189991895055989966915900483814546519620506733371467124855912555654907306187484615486368193655483758439435354191648618352400898623214583341174470917055440967046249370458871692481751934875297725004735004804586736342342753320953233457133510487259751943244013178324936650242237740357783712039759131470362444135697260250365133140903887315958012157552812412785168127077164644765855399797590007348456E+000000000000001185");
+ return val;
+ }
+
+ static const e_float& A000142_520(void)
+ {
+ static const e_float val("+1.76104034178211115614601171098795785429114782796268251583564190202663501353162904925074528940551799217492000052911460700851554388506384179657281543248467284071583337410724876868829302864049672638613280090511006135154817002462202498385102898018231726895681397709425453375071010486886852728967058125963624986047530260674748364588470950562575330189869233270021404298166321927462454648287426080125615278244807894746803821197E+000000000000001188");
+ return val;
+ }
+
+ static const e_float& A000142_521(void)
+ {
+ static const e_float val("+9.17502018068479912352072101424726042085688018368557590750369430955876842049978734659638295780274873923133320275668710251436598364118261576014436840324514550012949187909876608486600667921698794447175189271562341964156596582828075016586386098674987297126500082066106612084119964636680502717918372836270486177307632658115438979505933652431017470289218705336811516393446537242079388717577489877454455599655449131630847908436E+000000000000001190");
+ return val;
+ }
+
+ static const e_float& A000142_522(void)
+ {
+ static const e_float val("+4.78936053431746514247781636943706993968729145588387062371692842958967711550088899492331190397303484187875593183899066751249904346069732542679536030649396595106759476088955589630005548655126770701425448799755542505289743416236255158658093543508343369100033042838507651507910621540347222418753390620533193784554584247536259147302097366568991119490972164185815611557379092440365440910575449716031225823020144446711302608204E+000000000000001193");
+ return val;
+ }
+
+ static const e_float& A000142_523(void)
+ {
+ static const e_float val("+2.50483555944803426951589796121558757845645343142726433620395356867540113140696494434489212577789722230258935235179211910903699972994470119821397344029634419240835205994523773376492901946631301076845509722272148730266535806691561447978182923254863582039317281404539501738637255065601597325008023294538860349322047561461463534038996922715582355493778441869181564844509265346311125596230960201484331105439535545630011264091E+000000000000001196");
+ return val;
+ }
+
+ static const e_float& A000142_524(void)
+ {
+ static const e_float val("+1.31253383315076995722633053167696789111118159806788651217087166998591019285724963083672347390761814448655682063233907041313538785849102342786412208271528435682197647941130457249282280620034801764267047094470605934659664762706378198740567851785548516988602255455978698911045921654375236998304204206338362823044752922205806891836434387502965154278739903539451139978522855041467029812425023145577789499250316625910125902383E+000000000000001199");
+ return val;
+ }
+
+ static const e_float& A000142_525(void)
+ {
+ static const e_float val("+6.89080262404154227543823529130408142833370338985640418889707626742602851250056056189279823801499525855442330831978011966896078625707787299628664093425524287331537651690934900558731973255182709262401997245970681156963240004208485543387981221874129714190161841143888169282991088685469994241097072083276404820984952841580486182141280534390567059963384493582118484887244988967701906515231371514283394871064162286028160987513E+000000000000001201");
+ return val;
+ }
+
+ static const e_float& A000142_526(void)
+ {
+ static const e_float val("+3.62456218024585123688051176322594683130352798306446860335986211666609099757529485555561187319588750599962666017620434294587337357122296119604677313141825775136388804789431757693893017932226105072023450551380578288562664242213663395822078122705792229664025128441685177042853312648557216970817059915803388935838085194671335731806313561089438273540740243624194323050690864197011202827011701416513065702179749362450812679432E+000000000000001204");
+ return val;
+ }
+
+ static const e_float& A000142_527(void)
+ {
+ static const e_float val("+1.91014426898956360183602969922007398009695924707497495397064733548302995572218038887780745717423271566180324991285968873247526787203450055031664944025742183496876900124030536304681620450283157372956358440577564758072524055646600609598235170665952505032941242688768088301583695765789653343620590575628385969186670897591793930661927246694133970155970108389950408247714085431824903889835166646502385625048727914011578282061E+000000000000001207");
+ return val;
+ }
+
+ static const e_float& A000142_528(void)
+ {
+ static const e_float val("+1.00855617402648958176942368118819906149119448245558677569650179313503981662131124532748233738799487386943211595398991565074694143643421629056719090445591872886351003265488123168871895597749507092920957256624954192262292701381405121867868170111622922657392976139669550623236191364336936965431671823931787791730562233928467195389497586254502736242352217229893815554793037108003549253832967989353259610025728338598113332928E+000000000000001210");
+ return val;
+ }
+
+ static const e_float& A000142_529(void)
+ {
+ static const e_float val("+5.33526216060012988756025127348557303528841881219005404343449448568436062992673648778238156478249288276929589339660665379245132019873700417710043988457181007568796807274432171563332327712094892521551863887546007677067528390307633094681022619890485260857608843778851922796919452317342396547133543948599157418254674217481591463610442231286319474722043229146138284284855166301338775552776400663678743337036102911184019531189E+000000000000001212");
+ return val;
+ }
+
+ static const e_float& A000142_530(void)
+ {
+ static const e_float val("+2.82768894511806884040693317494735370870286197046072864302028207741271113386117033852466222933472122786772682350020152650999919970533061221386323313882305934011462307855449050928566133687410293036422487860399384068845790046863045540180941988541957188254532687202791519082367309728191470169980778292757553431674977335265243475713534382581749321602682911447453290670973238139709551042971492351749733968629134542927530351530E+000000000000001215");
+ return val;
+ }
+
+ static const e_float& A000142_531(void)
+ {
+ static const e_float val("+1.50150282985769455425608151589704481932121970631464690944376978310614961208028144975659564377673697199776294327860701057680957504353055508556137679671504450960086485471243446043068616988014865602340341053872072940557114514884277181836080195915779266963156856904682296632737041465669670660259793273454260872219412965025844285603886757150908889771024625978597697346286789452185771603817862438779108737342070442294518616663E+000000000000001218");
+ return val;
+ }
+
+ static const e_float& A000142_532(void)
+ {
+ static const e_float val("+7.98799505484293502864235366457227843878888883759392155824085524612471593626709731270508882489224069102809885824218929626862693923158255305518652455852403679107660102707015132949125042376239085004450614406599428043763849219184354607367946642271945700243994478732909818086161060597362647912582100214776667840207276973937491599412677548042835293581851010206139749882245719885628304932311028174304858482659814753006839040645E+000000000000001220");
+ return val;
+ }
+
+ static const e_float& A000142_533(void)
+ {
+ static const e_float val("+4.25760136423128437026637450321702440787447775043756019054237584618447359403036286767181234366756428831797669144308689491117815861043350077841441758969331160964382834742839065861883647586535432307372177478717495147326131633825261005727115560330947058230049057164640933039923845298394291337406259414475963958830478627108683022486957133106831211479126588439872486687236968699039886528921778016904489571257681263352645208664E+000000000000001223");
+ return val;
+ }
+
+ static const e_float& A000142_534(void)
+ {
+ static const e_float val("+2.27355912849950585372224398471789103380497111873365714174962870186250889921221377133674779151847932996179955323060840188256913669797148941567329899289622839954980433752676061170245867811209920852136742773635142408672154292462689377058279709216725729094846196525918258243319333389342551574174942527330164754015475586876036734008035109079047866929853598226891907890984541285287299406444229461026997431051601794630312541426E+000000000000001226");
+ return val;
+ }
+
+ static const e_float& A000142_535(void)
+ {
+ static const e_float val("+1.21635413374723563174140053182407170308565954852250657083605135549644226107853436766516006846238644152956276097837549500717448813341474683738521496119948219375914532057681692726081539278997307655893157383894801188639602546467538816726179644430948265065742715141366268160175843363298265092183594252121638143398279438978679652694298783357290608807471675051387170721676729587628705182447662761649443625612606960127217209663E+000000000000001229");
+ return val;
+ }
+
+ static const e_float& A000142_536(void)
+ {
+ static const e_float val("+6.51965815688518298613390685057702432853913518008063521968123526546093051938094421068525796695839132659845639884409265323845525639510304304838475219202922455854901891829173873011797050535425569035587323577676134371108269649066008057652322894149882700752380953157723197338542520427278700894104065191371980448614777792925722938441441478795077663208048178275435235068187270589689859777919472402441017833283573306281884243794E+000000000000001231");
+ return val;
+ }
+
+ static const e_float& A000142_537(void)
+ {
+ static const e_float val("+3.50105643024734326355390797875986206442551559170330111296882333755251968890756704113798352825665614238337108617927775478905047268417033411698261192711969358794082315912266369807335016137523530572110392761212084157285140801548446326959297394158487010304028571845697356970797333469448662380133883007766753500906135674801113217943054074112956705142721871733908721231616564306663454700742756680110826576473278865473371838918E+000000000000001234");
+ return val;
+ }
+
+ static const e_float& A000142_538(void)
+ {
+ static const e_float val("+1.88356835947307067579200249257280579066092738833637599877722695560325559263227106813223513820208100460225364436445143207650915430408363975493664521679039515031216285960799306956346238681987659447795391305532101276619405751233064123904101998057266011543567371652985178050288965406563380360512029058178513383487500993042998911253363091872770707366784366992842892022609711596984938628999603093899624698142624029624674049338E+000000000000001237");
+ return val;
+ }
+
+ static const e_float& A000142_539(void)
+ {
+ static const e_float val("+1.01524334575598509425188934349674232116623986231330666334092532907015476442879410572327473949092166148061471431243932188923843416990108182791085177185002298601825578132870826449470622649591348442361715913681802588097859699914621562784310976952866380221982813320959010969105752354137662014315983662358218713699763035250176413165562706519423411270696773809142318800186634550774881921030786067611897712298874351967699312593E+000000000000001240");
+ return val;
+ }
+
+ static const e_float& A000142_540(void)
+ {
+ static const e_float val("+5.48231406708231950896020245488240853429769525649185598204099677697883572791548817090568359325097697199531945728717233820188754451746584187071859956799012412449858121917502462827141362307793281588753265933881733975728442379538956439035279275545478453198707191933178659233171062712343374877306311776734381053978720390350952631094038615204886420861762578569368521521007826574184362373566244765104247646413921500625576288002E+000000000000001242");
+ return val;
+ }
+
+ static const e_float& A000142_541(void)
+ {
+ static const e_float val("+2.96593191029153485434746952809138301705505313376209408628417925634555012880227910045997482394877854184946782639236023496722116158394902045205876236628265715135373243957368832389483477008516165339515516870230018080869087327330575433518086088070103843180500590835849654645145544927377765808622714671213300150202487731179865373421874890825843553686213555006028370142865234176633740044099338417921397976709931531838436771809E+000000000000001245");
+ return val;
+ }
+
+ static const e_float& A000142_542(void)
+ {
+ static const e_float val("+1.60753509537801189105632848422552959524383879849905499476602515693928816981083527244930635458023796968241156190465924735223386957850036908501584920252520017603372298224893907155100044538615761614017410143664669799831045331413171884966802659733996283003831320233030512817668885350638749068273511351797608681409748350299487032394656190827607206097927746813267376617432956923735487103901841422513397703376782890256432730321E+000000000000001248");
+ return val;
+ }
+
+ static const e_float& A000142_543(void)
+ {
+ static const e_float val("+8.72891556790260456843586366934462570217404467584986862157951660218033476207283552939973350537069217537549478114229971312262991181125700413163606116971183695586311579361173915852193241844683585564114537080099157013082576149573523335369738442355599816710804068865355684599942047453968407440725166640261015140054933542126214585902983116193907129111747665196041855032660956095883694974186998924247749529335931094092429725641E+000000000000001250");
+ return val;
+ }
+
+ static const e_float& A000142_544(void)
+ {
+ static const e_float val("+4.74853006893901688522910983612347638198268030366232853013925703158610211056762252799345502692165654340426916094141104393871067202532381024761001727632323930398953499172478610223593123563507870546878308171573941415116921425367996694441137712641446300290677413462753492422368473814958813647754490652301992236189883846916660734731222815209485478236790729866646769137767560116160730065957727414790775743958746515186281770749E+000000000000001253");
+ return val;
+ }
+
+ static const e_float& A000142_545(void)
+ {
+ static const e_float val("+2.58794888757176420244986486068729462818056076549596904892589508221442565025935427775643298967230281615532669271306901894659731625380147658494745941559616542067429657049000842571858252342111789448048677953507798071238722176825558198470420053389588233658419190337200653370190818229152553438026197405504585768723486696569580100428516434289169585639050947777322489180083320263307597885946961441060972780457516850776523565058E+000000000000001256");
+ return val;
+ }
+
+ static const e_float& A000142_546(void)
+ {
+ static const e_float val("+1.41302009261418325453762621393526286698658617796079910071353871488907640504160743565501241236107733762080837422133568434484213467457560621538131284091550631968816592748754460044234605778793037038634578162615257746896342308546754776364849349150715175577496877924111556740124186753117294177162303783405503829723023736326990734833969973121886593758921817486418079092325492863765948445727040946819291138129804200523981866522E+000000000000001259");
+ return val;
+ }
+
+ static const e_float& A000142_547(void)
+ {
+ static const e_float val("+7.72921990659958240232081539022588788241662639344557108090305677044324793557759267303291789561509303678582180699070619336628647666992856599813578123980781956869426762335686896441963293609997912601331142549505459875522992427750748626715725939854412010408907922244890215368479301539551599149077801695228105948584939837708639319541815752976719667861302341650706892635020445964799737998126913979101522525570028976866180809873E+000000000000001261");
+ return val;
+ }
+
+ static const e_float& A000142_548(void)
+ {
+ static const e_float val("+4.23561250881657115647180683384378655956431126360817295233487511020289986869652078482203900679707098415863035023090699396472498921512085416697840811941468512364445865759956419250195884898278856105529466117128992011786599850407410247440217815040217781704081541390199838021926657243674276333694635328985002059824547031064334347108915032631242377987993683224587377163991204388710256422973548860547634344012375879322667083811E+000000000000001264");
+ return val;
+ }
+
+ static const e_float& A000142_549(void)
+ {
+ static const e_float val("+2.32535126734029756490302195178023882120080688372088695083184643550139202791438991086729941473159197030308806227676793968663401907910134893767114605755866213288080780302216074168357540809155092001935676898303816614470843317873668225844679580457079562155540766223219711074037734826777177707198354795612766130843676320054319556562794352914552065515408532090298470063031171209401930776212478324440651254862794357748144229012E+000000000000001267");
+ return val;
+ }
+
+ static const e_float& A000142_550(void)
+ {
+ static const e_float val("+1.27894319703716366069666207347913135166044378604648782295751553952576561535291445097701467810237558366669843425222236682764871049350574191571913033165726417308444429166218840792596647445035300601064622294067099137958963824830517524214573769251393759185547421422770841090720754154727447738959095137587021371964021976029875756109536894103003636033474692649664158534667144165171061926916863078442358190174536896761479325957E+000000000000001270");
+ return val;
+ }
+
+ static const e_float& A000142_551(void)
+ {
+ static const e_float val("+7.04697701567477177043860802487001374764904526111614790449591062278696854059455862488335087634408946600350837272974524122034439481921663795561240812743152559369528804705865812767207527422144506311866068840309716250153890674816151558422301468575179613112366292039467334409871355392548237041664614208104487759521761087924615416163548286507550034544445556499649513526015964350092551217311915562217393627861698301155751086021E+000000000000001272");
+ return val;
+ }
+
+ static const e_float& A000142_552(void)
+ {
+ static const e_float val("+3.88993131265247401728211162972824758870227298413611364328174266377840663440819636093560968374193738523393662174681937315363010594020758415149804928634220212771979900197637928647498555137023767484150069999850963370084947652498515660249110410653499146438026193205785968594248988176686626846998867042873677243256012120534387709722278654152167619068533947187806531466360812321251088271956177390344001282579657462237974599484E+000000000000001275");
+ return val;
+ }
+
+ static const e_float& A000142_553(void)
+ {
+ static const e_float val("+2.15113201589681813155700773123972091655235696022727084473480369306945886882773258759739215510929137403436695182599111335395744858493479403577842125534723777662904884809293774542066700990774143418734988709917582743656976051831679160117758057091385027980228484842799640632619690461707704646390373474709143515520574702655516403476420095746148693344899272794857011900897529213651851814391766096860232709266550576617599953514E+000000000000001278");
+ return val;
+ }
+
+ static const e_float& A000142_554(void)
+ {
+ static const e_float val("+1.19172713680683724488258228310680538777000575596590804798308124596048021333056385352895525393054742121503929131159907679809242651605387589582124537546236972825249306184348751096304952348888875453979183745294340839985964732714750254705237963628627305501046580602911000910471308515786068374100266904988865507598398385271156087525936733043366376113074197128350784593097231184363125905173038417660568920933669019446150374247E+000000000000001281");
+ return val;
+ }
+
+ static const e_float& A000142_555(void)
+ {
+ static const e_float val("+6.61408560927794670909833167124276990212353194561078966630610091508066518398462938708570165931453818774346806677937487622941296716409901122180791183381615199180133649323135568584492485536333258769584469786383591661922104266566863913614070698138881545530808522346156055053115762262612679476256481322688203567171111038254916285768948868390683387427561794062346854491689633073215348773710363218016157511181863057926134577071E+000000000000001283");
+ return val;
+ }
+
+ static const e_float& A000142_556(void)
+ {
+ static const e_float val("+3.67743159875853837025867240921098006558068376175959905446619210878484984229545393921965012257888323238536824512933243118355360974323905023932519897960178050744154309023663376132977821958201291875888965201229276964028689972211176335969423308165218139315129538424462766609532363818012649788798603615414641183347137737269733454887535570825219963409724357498664851097379435988707733918182961949216983576217115860206930824851E+000000000000001286");
+ return val;
+ }
+
+ static const e_float& A000142_557(void)
+ {
+ static const e_float val("+2.04832940050850587223408053193051589652844085530009667333766900459316136215856784414534511827643796043865011253703816416923936062698415098330413583163819174264493950126180500506068646830718119574870153617084707268963980314521625219134968782648026503598527152902425761001509526646633045932360822213785955139124355719659241534372357312949647519619216467126756322061240345845710207792427909805713859851952933534135260469442E+000000000000001289");
+ return val;
+ }
+
+ static const e_float& A000142_558(void)
+ {
+ static const e_float val("+1.14296780548374627670661693681722787026286999725745394372241930456298404008448085703310257599825238192476676279566729560643556322985715624868370779405411099239587624170408719282386304931540710722777545718333266656081901015503066872277312580717598789007978151319553574638842315868821239630257338795292562967631390491569856776179775380625903315947522788656730027710172112981906295948174773671588333797389736912047475341949E+000000000000001292");
+ return val;
+ }
+
+ static const e_float& A000142_559(void)
+ {
+ static const e_float val("+6.38919003265414168678998867680830379476944328466916754540832391250708078407224799081504339983023081495944620402778018243997479845490150343014192656876248044749294819112584740788539444567312572940326480565482960607497826676662143816030177326211377230554597865876304482231128545706710729533138523865685426989059472847875499378844944377698799536146652388591120854899862111568856194350296984824178785927408629338345387161493E+000000000000001294");
+ return val;
+ }
+
+ static const e_float& A000142_560(void)
+ {
+ static const e_float val("+3.57794641828631934460239365901265012507088823941473382542866139100396523908045887485642430390492925637728987425555690216638588713474484192087947887850698905059605098703047454841582088957695040846582829116670457940198782938930800536976899302678371249110574804890730510049431985595758008538557573364783839113873304794810279652153168851511327740242125337611027678743922782478559468836166311501540120119348832429473416810436E+000000000000001297");
+ return val;
+ }
+
+ static const e_float& A000142_561(void)
+ {
+ static const e_float val("+2.00722794065862515232194284270609672016476830231166567606547904035322449912413742879445403449066531282765961945736742211534248268259185631761338765084242085738438460372409622166127551905266917914932967134452126904451517228740179101244040508802566270751032465543699816137731343919220242790130798657643733742882923989888566884857927725697854862275832314399786527775340680970471862017089300752364007386954694992934586830655E+000000000000001300");
+ return val;
+ }
+
+ static const e_float& A000142_562(void)
+ {
+ static const e_float val("+1.12806210265014733560493187760082635673259978589915610994879922067851216850776523498248316738375390580914470613504049122882247526761662325049872385977344052185002414729294207657363684170760007868192327529562095320301752682551980654899150765947042244162080245635559296669405015282601776448053508845595778363500203282317374589290155381842194432599017760692680028609741462705405186453604187022828572151468538586029237798828E+000000000000001303");
+ return val;
+ }
+
+ static const e_float& A000142_563(void)
+ {
+ static const e_float val("+6.35098963792032949945576647089265238840453679461224889901173961242002350869871827295138023237053448970548469554027796561827053575668158890030781533052447013801563594925926389110957541881378844297922803991434596653298867602767651087082218812281847834632511782928198840248750236041048001402541254800704232186506144479446818937703574799771554655532469992699788561072844435031431199733791572938524861212767872239344608807402E+000000000000001305");
+ return val;
+ }
+
+ static const e_float& A000142_564(void)
+ {
+ static const e_float val("+3.58195815578706583769305228958345594706015875216130837904262114140489325890607710594457845105698145219389336828471677260870458216676841613977360784641580115784081867538222483458580053621097668184028461451169112512460561327960955213114371410126962178732736645571504145900295133127151072791033267707597186953189465486408005880864816187071156825720313075882680748445084261357727196649858447137328021724001079942990359367374E+000000000000001308");
+ return val;
+ }
+
+ static const e_float& A000142_565(void)
+ {
+ static const e_float val("+2.02380635801969219829657454361465261008898969497113923415908094489376469128193356485868682484719452048954975308086497652391808892422415511897208843322492765418006255159095703154097730295920182523976080719910548569540217150297939695409619846721733630983996204747899842433666750216840356126933796254792410628552047999820523322688621145695203606531976887873714622871472607667115866107170022632590332274060610167789553042567E+000000000000001311");
+ return val;
+ }
+
+ static const e_float& A000142_566(void)
+ {
+ static const e_float val("+1.14547439863914578423586119168589337731036816735366480653403981480987081526557439771001674286351209859708516024376957671253763833111087179733820205320530905226591540420048167985219315347490823308570461687469370490359762907068633867601844833244501235136941851887311310817455380622731641567844528680212504415760459167898416200641759568463485241297098918536522476545253495939587580216658232810046128067118305354968887022093E+000000000000001314");
+ return val;
+ }
+
+ static const e_float& A000142_567(void)
+ {
+ static const e_float val("+6.49483984028395659661733295685901544934978750889527945304800574997196752255580683501579493203611359904547285858217349996008840933739864309090760564167410232634774034181673112476193518020272968159594517767951330680339855683079154029302460204496322003226460300201055132334972008130888407689678477616804900037361803481984019857638776753187961318154550868102082442011587321977461579828452180032961546140560791362673589415266E+000000000000001316");
+ return val;
+ }
+
+ static const e_float& A000142_568(void)
+ {
+ static const e_float val("+3.68906902928128734687864511949592077523067930505251872933126726598407755281169828228897152139651252425782858367467454797733021650364242927563552000447089012136551651415190327886477918235515045914649686092196355826433038027988959488643797396153910897832629450514199315166264100618344615567737375286345183221221504377766923279138825195810762028711784893081982827062581598883198177342560838258722158207838529493998598787871E+000000000000001319");
+ return val;
+ }
+
+ static const e_float& A000142_569(void)
+ {
+ static const e_float val("+2.09908027766105250037394907299317892110625652457488315698949107434494012754985632262242479567461562630270446411088981779910089319057254225783661088254393647905697889655243296567405935476008061125435671386459726465240398637925717949038320718411575300866766157342579410329604273251838086258042566537930409252875035990949379345829991536416323594337005604163648228598608929764539762907917116969212908020260123282085202710299E+000000000000001322");
+ return val;
+ }
+
+ static const e_float& A000142_570(void)
+ {
+ static const e_float val("+1.19647575826679992521315097160611198503056621900768339948400991237661587270341810389478213353453090699254154454320719614548750911862634908696686820305004379306247797103488679043421383221324594841498332690282044085187027223617659230951842809494597921494056709685270263887874435753547709167084262926620333274138770514841146227123095175757304448772093194373279490301207089965787664857512756672451357571548270270788565544870E+000000000000001325");
+ return val;
+ }
+
+ static const e_float& A000142_571(void)
+ {
+ static const e_float val("+6.83187657970342757296709204787089943452453311053387221105369659967047663313651737323920598248217147892741221934171308999073367706735645328658081743941575005838674921460920357337936098193763436544955479661510471726417925446856834208735022442214154131731063812302893206799763028152757419344051141311002102995332379639742944956872873453574208402488652139871425889619892483704647566336397840599697251733540623246202709261209E+000000000000001327");
+ return val;
+ }
+
+ static const e_float& A000142_572(void)
+ {
+ static const e_float val("+3.90783340359036057173717665138215447654803293922537490472271445501151263415408793749282582197980208594647978946345988747469966328252789127992422757534580903339722055075646444397299448166832685703714534366383989827511053355602109167396432836946496163350168500637254914289464452103377243864797252829893202913330121153932964515331283615444447206223509024006455608862578500679058407944419564823026827991585236496827949697411E+000000000000001330");
+ return val;
+ }
+
+ static const e_float& A000142_573(void)
+ {
+ static const e_float val("+2.23918854025727660760540222124197451506202287417613982040611538272159673937029238818338919599442659524733291936256251552300290706088848170339658240067314857613660737558345412639652583799595128908228428191938026171163833572760008552918156015570342301599646550865147065887863131055235160734528825871528805269338159421203588667284825511649668249166070670755699063878257480889100467752152410643594372439178340512682415176617E+000000000000001333");
+ return val;
+ }
+
+ static const e_float& A000142_574(void)
+ {
+ static const e_float val("+1.28529422210767677276550087499289337164560112977710425691311022968219652839854783081726539850080086567196909571411088391020366865294998849774963829798638728270241263358490266855160583100967603993323117782172427022248040470764244909375021552937376481118197120196594415819633437225704982261619546050257534224600103507770859895021489843686909575021324565013771262666119794030343668489735483709423169780088367454279706311378E+000000000000001336");
+ return val;
+ }
+
+ static const e_float& A000142_575(void)
+ {
+ static const e_float val("+7.39044177711914144340163003120913688696220649621834947725038382067263003829165002719927604137960497761382230035613758248367109475446243386206042021342172687553887264311319034417173352830563722961607927247491455377926232706894408228906373929389914766429633441130417890962892264047803648004312389788980821791450595169682444396373566601199730056372616248829184760330188815674476093815979031329183226235508112862108311290423E+000000000000001338");
+ return val;
+ }
+
+ static const e_float& A000142_576(void)
+ {
+ static const e_float val("+4.25689446362062547139933889797646284689023094182176929889622108070743490205599041566678299983465246710556164500513524751059455057857036190454680204293091468031039064243319763824291851230404704425886166094555078297685510039171179139850071383328590905463468862091120705194625944091534901250483936518452953351875542817737087972311174362291044512470626959325610421950188757828498230038003922045609538311652673008574387303284E+000000000000001341");
+ return val;
+ }
+
+ static const e_float& A000142_577(void)
+ {
+ static const e_float val("+2.45622810550910089699741854413241906265566325343116088546311956356818993848630646983973379090459447351990906916796303781361305568383509881892350477877113777053909540068395503726616398159943514453736317836558280177764539292601770363693491188180596952452421533426576646897299169740815638021529231371147354084032188205834299760023547607041932683695551755530877213465258913267043478731928263020316703605823592325947421473995E+000000000000001344");
+ return val;
+ }
+
+ static const e_float& A000142_578(void)
+ {
+ static const e_float val("+1.41969984498426031846450791850853821821497336048321099179768310774241378444508513956736613114285560569450744197908263585626834618525668711733778576212971763137159714159532601153984278136447351354259591709530685942747903711123823270214837906768385038517499646320561301906638920110191438776443895732523170660570604782972225261293610516870237091176028914696847029382919651868351130707054536025743054684166036364397609611969E+000000000000001347");
+ return val;
+ }
+
+ static const e_float& A000142_579(void)
+ {
+ static const e_float val("+8.22006210245886724390950084816443628346469575719779164250858519382857581193704295809504989931713395697119808905888846160779372441263621840938577956273106508564154744983693760681568970410030164341163035998182671608510362487406936734543911480188949373016322952196049938039439347438008430515610156291309158124703801693409184262890004892678672757909207416094744300127104784317753046793845763589052286621321350549862159653300E+000000000000001349");
+ return val;
+ }
+
+ static const e_float& A000142_580(void)
+ {
+ static const e_float val("+4.76763601942614300146751049193537304440952353917471915265497941242057397092348491569512894160393769504329489165415530773252036015932900667744375214638401774967209752090542381195310002837817495317874560878945949532936010242696023306035468658509590636349467312273708964062874821514044889699053890648959311712328204982177326872476202837753630199587340301334951694073720774904296767140430542881650326240366383318920052598914E+000000000000001352");
+ return val;
+ }
+
+ static const e_float& A000142_581(void)
+ {
+ static const e_float val("+2.76999652728658908385262359581445173880193317626051182769254303861635347710654473601886991507188780082015433205106423379259432925257015287959481999704911431255948865964605123474475111648771964779685119870667596678635821951006389540806607290594072159719040508431024908120530271299660080915150310467045360104862687094645026912908673848734859145960244715075606934256831770219396421708590145414238839545652868708292550559969E+000000000000001355");
+ return val;
+ }
+
+ static const e_float& A000142_582(void)
+ {
+ static const e_float val("+1.61213797888079484680222693276401091198272510858361788371706004847471772367600903636298229057183870007732982125371938406728989962499582897592418523828258452990962239991400181862144514979585283501776739764728541266966048375485718712749445443125749996956481575906856496526148617896402167092617480691820399581030083889083405663312848179963688022948862424174003235737476090267688717434399464631087004615569969588226264425902E+000000000000001358");
+ return val;
+ }
+
+ static const e_float& A000142_583(void)
+ {
+ static const e_float val("+9.39876441687503395685698301801418361685928738304249226207046008260760432903113268199618675403381962145083285790918400911230011481372568292963799993918746780937309859149863060256302522330982202815358392828367395586412062029081740095329266933423122482256287587536973374747446442336024634149959912433312929557405389073356255017113904889188301173791867932934438864349485606260625222642548878799237236908772922699359121603009E+000000000000001360");
+ return val;
+ }
+
+ static const e_float& A000142_584(void)
+ {
+ static const e_float val("+5.48887841945501983080447808252028323224582383169681548104914868824284092815418148628577306435575065892728638901896346132158326705121579883090859196448548120067388957743520027189680673041293606444169301411766559022464644224983736215672291889119103529637671951121592450852508722324238386343576588861054750861524747218840052929994520455285967885494450872833712296780099594056205130023248545218754546354723386856425727016157E+000000000000001363");
+ return val;
+ }
+
+ static const e_float& A000142_585(void)
+ {
+ static const e_float val("+3.21099387538118660102061967827436569086380694154263705641375198262206194297019616947717724264811413547246253757609362487312621122496124231608152629922400650239422540279959215905963193729156759769839041325883437028141816871615485686168290755134675564838038091406131583748717602559679456010992304483717029253991977123021430964046794466342291213014253760607721693616358262522880001063600398952971409617513181311009050304452E+000000000000001366");
+ return val;
+ }
+
+ static const e_float& A000142_586(void)
+ {
+ static const e_float val("+1.88164241097337534819808313146877829484619086774398531505845866181652829858053495531362586419179488338686304701959086417565195977782728799722377441134526781040301608604056100520894431525285861225125678216967694098491104686766674612094618382508919880995090321563993108076748515099972161222441490427458179142839298594090558544931421557276582650826352703716124912459185941838407680623269833786441246035862724248251303478409E+000000000000001369");
+ return val;
+ }
+
+ static const e_float& A000142_587(void)
+ {
+ static const e_float val("+1.10452409524137132939227479817217285907471403936571937993931523448630211126677401876909838228058359654808860860049983727110770038958461805437035557945967220470657044250580931005765031305342800539148773113360036435814278451132037997299540990532735970144118018758063954441051378363683658637573154880917951156846668274731157865874744454121354016035069037081365323613542147859145308525859392432641011423051419133723515141826E+000000000000001372");
+ return val;
+ }
+
+ static const e_float& A000142_588(void)
+ {
+ static const e_float val("+6.49460168001926341682657581325237641135931855147042995404317357877945641424863123036229848780983154770276101857093904315411327829075755415969769080722287256367463420193415874313898384075415667170194785906557014242587957292656383424121301024332487504447413950297416052113382104778459912788930150699797552802258409455419208251343497390233561614286205938038428102847627829411774414132053227503929147167542344506294269033937E+000000000000001374");
+ return val;
+ }
+
+ static const e_float& A000142_589(void)
+ {
+ static const e_float val("+3.82532038953134615251085315400564970629063862681608324293142923790109982799244379468339380931999078159692623993828309641777272091325619940006193988545427194000435954493921949970886148220419827963244728898962081388884306845374609836807446303331835140119526816725178054694782059714512888632679858762180758600530203169241913660041319962847567790814575297504634152577252791523535129923779350999814267681682440914207324460989E+000000000000001377");
+ return val;
+ }
+
+ static const e_float& A000142_590(void)
+ {
+ static const e_float val("+2.25693902982349422998140336086333332671147678982148911332954325036164889851554183886320234749879456114218648156358702688648590533882115764603654453241802044460257213151413950482822827450047698498314390050387628019441741038771019803716393318965782732670520821867855052269921415231562604293281116669686647574312819869852729059424378778080064996580599425527734150020579146998885726655029817089890417932192640139382321431983E+000000000000001380");
+ return val;
+ }
+
+ static const e_float& A000142_591(void)
+ {
+ static const e_float val("+1.33385096662568508991900938627022999608648278278450006597776006096373449902268522676815258737178758563503221060407993288991317005524330416880759781865905008276012012972485644735348291022978189812503804519779088159490068953913672703996388451508777595008277805723902335891523556401853499137329139951784808716418876543082962874119807857845318412979134260486890882662162275876341464453122621900125236997925850322374951966302E+000000000000001383");
+ return val;
+ }
+
+ static const e_float& A000142_592(void)
+ {
+ static const e_float val("+7.89639772242405573232053556671976157683197807408424039058833956090530823421429654246746331724098250695939068677615320270828596672704036067934097908646157648993991116797115016833261882856030883690022522757092201904181208207168942407658619632931963362449004609885501828477819453898972714892988508514566067601199749135051140214789262518444285004836474822082394025360000673187941469562485921648741403027721033908459715640509E+000000000000001385");
+ return val;
+ }
+
+ static const e_float& A000142_593(void)
+ {
+ static const e_float val("+4.68256384939746504926607759106481861506136299793195455161888535961684778288907784968320574712390262662691867725825884920601357826913493388284920059827171485853436732260689204982124296533626314028183355994955675729179456466851182847741561442328654273932259733662102584287346936162090819931542185549137678087511451237085326147370032673437461007868029569494859657038480399200449291450554151537703651995438573107716611374822E+000000000000001388");
+ return val;
+ }
+
+ static const e_float& A000142_594(void)
+ {
+ static const e_float val("+2.78144292654209423926405008909250225734644962077158100366161790361240758303611224271182421379159816021638969429140575642837206549186615072641242515537339862596941418962849387759381832140974030532740913461003671383132597141309602611558487496743220638715762281795288935066684080080281947039336058216187780783981802034828683731537799408021851838673609564279946636280857357125066879121629166013395969285290512425983667156644E+000000000000001391");
+ return val;
+ }
+
+ static const e_float& A000142_595(void)
+ {
+ static const e_float val("+1.65495854129254607236210980301003884312113752435909069717866265264938251190648678441353540720600090532875186810338642507488137896766035968221539296744717218245180144282895385716832190123879548166980843509297184472963895299079213553877300060562216280035878557668196916364677027647767758488404954638631729566469172210723066820264990647773001844010797690746568248587110127489414793077369353777970601724747854893460281958203E+000000000000001394");
+ return val;
+ }
+
+ static const e_float& A000142_596(void)
+ {
+ static const e_float val("+9.86355290610357459127817442593983150500197964518018055518482940979031977096266123510467102694776539575936113389618309344629301864725574370600374208598514620741273659926056498872319853138322107075205827315411219458864815982512112781108708360950809029013836203702453621533475084780695840590893529646245108216156266375909478248779344260727090990304354236849546761579176359836912166741121348516704786279497215165023280470892E+000000000000001396");
+ return val;
+ }
+
+ static const e_float& A000142_597(void)
+ {
+ static const e_float val("+5.88854108494383403099307013228607940848618184817256779144534315764482090326470875735748860308781594126833859693602130678743693213241167899248423402533313228582540374975855729826774952323578297923897878907300498016942295141559731330321898891487632990321260213610364812055484625614075416832763437198808329605045291026417958514521268523654073321211699479399179416662768286822636563544449445064472757408859837453518898441122E+000000000000001399");
+ return val;
+ }
+
+ static const e_float& A000142_598(void)
+ {
+ static const e_float val("+3.52134756879641275053385593910707548627473674520719553928431520827160290015229583689977818464651393287846648096774074145888728541518218403750557194714921310692359144235561726436411421489499822158490931586565697814131492494652719335532495537109604528212113607738998157609179806117217099265992535444887381103817084033797939191683718577145135846084596288680709291164335435519936664999580768148554708930498182797204301267791E+000000000000001402");
+ return val;
+ }
+
+ static const e_float& A000142_599(void)
+ {
+ static const e_float val("+2.10928719370905123756977970752513821627856731037911012803130480975469013719122520630296713260326184579420142209967670413387348396369412823846583759634237865104723127397101474135410441472210393472936068020352852990664764004296978881983964826728653112399056051035659896407898703864213042460329528731487541281186433336244965575818547427709936371804673176919744865407436925876442062334748880120984270649368411495525376459407E+000000000000001405");
+ return val;
+ }
+
+ static const e_float& A000142_600(void)
+ {
+ static const e_float val("+1.26557231622543074254186782451508292976714038622746607681878288585281408231473512378178027956195710747652085325980602248032409037821647694307950255780542719062833876438260884481246264883326236083761640812211711794398858402578187329190378896037191867439433630621395937844739222318527825476197717238892524768711860001746979345491128456625961823082803906151846919244462155525865237400849328072590562389621046897315225875644E+000000000000001408");
+ return val;
+ }
+
+ static const e_float& A000142_601(void)
+ {
+ static const e_float val("+7.60608962051483876267662562533564840790051372122707112168088514397541263471155809392849948016736221593389032809143419510674778317308102642790781037241061741567631597393947915732290051948790678863407461281392387884337138999494905848434177165183523123310996120034589586446882726134352231111948280605744073859958278610499345866401682024322030556727651475972599984659217554710450076779104461716269279961622491852864507512621E+000000000000001410");
+ return val;
+ }
+
+ static const e_float& A000142_602(void)
+ {
+ static const e_float val("+4.57886595154993293513132862645206034155610926017869681525189285667319840609635797254495668706075205399220197751104338545426216547019477790960050184419119168423714221631156645270838611273171988675771291691398217506370957677695933320757374653440480920233219664260822931041023401132880043129392864924657932463694883723520606211573812578641862395150046188535505190764848967935690946221020885953194106536896740095424433522598E+000000000000001413");
+ return val;
+ }
+
+ static const e_float& A000142_603(void)
+ {
+ static const e_float val("+2.76105616878460955988419116175059238595833388388775417959689139257393863887610385744460888229763348855729779243915916142892008577852745107948910261204728858559499675643587457098315682597722709171490088889913125156341687479650647792416696916024609994900631457549276227417737110883126666007023897549568733275608014885282925545579008984921043024275477851686909630031203927665221640571275594229776046241748734277540933414127E+000000000000001416");
+ return val;
+ }
+
+ static const e_float& A000142_604(void)
+ {
+ static const e_float val("+1.66767792594590417417005146169735780111883366586820352447652240111465893788116672989654376490777062708860786663325213350306773181023058045201141797767656230569937804088726824087382672289024516339580013689507527594430379237708991266619684937278864436919981400359762841360313214973408506268242434119939514898467240990710887029529721426892309986662388622418893416538847172309793870905050458914784731930016235503634723782132E+000000000000001419");
+ return val;
+ }
+
+ static const e_float& A000142_605(void)
+ {
+ static const e_float val("+1.00894514519727202537288113432690146967689436785026313230829605267436865741810587158740897776920122938860775931311754076935597774518950117346690787649432019494812371473679728572866516734859832385445908282152054194630379438813939716304909387053712984336588747217656519022989495058912146292286672642563406513572680799380086652865481463269847541930745116563430517006002539247425291897555527643444762817659822479699007888190E+000000000000001422");
+ return val;
+ }
+
+ static const e_float& A000142_606(void)
+ {
+ static const e_float val("+6.11420757989546847375965967402102290624197986917259458178827407920667406395372158181969840528135945009496302143749229706229722513584837711120946173155558038138562971130499155151571091413250584255802204189841448419460099399212474680807750885545500685079727808138998505279316340057007606531257236213934243472250445644243325116364817667415276104100315406374388933056375387839397268899186497519275262675018524226975987802432E+000000000000001424");
+ return val;
+ }
+
+ static const e_float& A000142_607(void)
+ {
+ static const e_float val("+3.71132400099654936357211342213076090408888178058776491114548236607845115681990900016455693200578518620764255401255782431681441565745996490650414327105423729150107723476212987177003652487843104643271937943233759190612280335321972131250304787526118915843394779540372092704545018414603617164473142381858085787656020506055698345633444324121072595188891451669254082365219860418514142221806203994200084443736244205774424596076E+000000000000001427");
+ return val;
+ }
+
+ static const e_float& A000142_608(void)
+ {
+ static const e_float val("+2.25648499260590201305184496065550262968604012259736106597645327857569830334650467210005061465951739321424667283963515718462316471973565866315451910880097627323265495873537496203618220712608607623109338269486125587892266443875759055800185310815880300832784025960546232364363371196078999235999670568169716158894860467681864594145134149065612137874846002614906482078053675134456598470858172028473651341791636477110850154414E+000000000000001430");
+ return val;
+ }
+
+ static const e_float& A000142_609(void)
+ {
+ static const e_float val("+1.37419936049699432594857358103920110147879843466179288917966004665260026673802134530893082432764609246747622375933781072543550731431901612586110213725979455039868686986984335188003496413978642042473587006117050483026390264320337264982312854286871103207165471809972655509897293058412110534723799376015357140766970024818255537834386696780957791965781215592478047585534688156884068468752626765340453667151106614560507744038E+000000000000001433");
+ return val;
+ }
+
+ static const e_float& A000142_610(void)
+ {
+ static const e_float val("+8.38261609903166538828629884433912671902067045143693662399592628458086162710193020638447802839864116405160496493196064542515659461734599836775272303728474675743198990620604444646821328125269716459088880737314007946460980612354057316392108411149913729563709378040833198610373487656313874261815176193693678558678517151391358780789758850363842530991265415114116090271761597756992817659391023268576767369621750348819097238634E+000000000000001435");
+ return val;
+ }
+
+ static const e_float& A000142_611(void)
+ {
+ static const e_float val("+5.12177843650834755224292859389120642532162964582796827726151095987890645415927935610091607535156975123553063357342795435477067931119840500269691377578098026879094583269189315679207831484539796756503306130498858855287659154148329020315578239212597288763426429982949084350938200958007777173969072654346837599352573979500120215062542657572307786435663168634724931156046336229522611589887915217100404862838889463128468412805E+000000000000001438");
+ return val;
+ }
+
+ static const e_float& A000142_612(void)
+ {
+ static const e_float val("+3.13452840314310870197267229946141833229683734324671658568404470744589074994547896593376063811516068775614474774693790806511965573845342386165051123077795992450005884960743861195675192868538355614980023351865301619436047402338777360433133882398109540723216975149564839622774178986300759630469072464460264610803775275454073571618276106434252365298625859204451657867500357772467838293011404112865447776057400351434622668637E+000000000000001441");
+ return val;
+ }
+
+ static const e_float& A000142_613(void)
+ {
+ static const e_float val("+1.92146591112672563430924811956984943769796129141023726702431940566433102971657860611739527116459350159451673036887293764391834896767194882719176338446688943371853607480935986912948893228414011991982754314693429892714297057633670521945511069910041148463332005766683246688760571718602365653477541420714142206422714243853347099402003253244196699928057651692328866272777719314522784873615990721186519486723186415429423695874E+000000000000001444");
+ return val;
+ }
+
+ static const e_float& A000142_614(void)
+ {
+ static const e_float val("+1.17978006943180953946587834541588755474654823292588568195293211507789925224597926415608069649506040997903327244648798371336586626615057657989574271806267011230318114993294695964550620442246203363077411149221765954126578393387073700474543796924765265156485851540743513466898991035221852511235210432318483314743546545725955119032829997491936773755827398139089923891485519659116989912400218302808522964848036459073666149267E+000000000000001447");
+ return val;
+ }
+
+ static const e_float& A000142_615(void)
+ {
+ static const e_float val("+7.25564742700562866771515182430770846169127163249419694401053250772908040131277247455989628344462152137105462554590109983720007753682604596635881771608542119066456407208762380181986315719814150682926078567713860617878457119330503257918444351087306380712387986975572607821428794866614392944096544158758672385672811256214623982051904484575411158598338498555403031932635945903569487961261342562272416233815424223303046817991E+000000000000001449");
+ return val;
+ }
+
+ static const e_float& A000142_616(void)
+ {
+ static const e_float val("+4.46947881503546725931253352377354841240182332561642531751048802476111352720866784432889611060188685716456964933627507749971524776268484431527703171310861945344937146840597626192103570483405516820682464397711738140613129585507590006877761720269780730518830999976952726418000137637834466053563471201795342189574451733828208372943973162498453273696576515110128267670503742676598804584136987018359808400030301321554676839883E+000000000000001452");
+ return val;
+ }
+
+ static const e_float& A000142_617(void)
+ {
+ static const e_float val("+2.75766842887688329899583318416827937045192499190533442090397111127760704628774805995092890024136419087053947364048172281732430786957654894252592856698801820277826219600648735360527902988261203878361080533388142432758300954258183034243578981406454710730118726985779832199906084922543865555048661731507726130967436719772004566106431441261545669870787709822949141152700809231461462428412520990328001782818695915399235610208E+000000000000001455");
+ return val;
+ }
+
+ static const e_float& A000142_618(void)
+ {
+ static const e_float val("+1.70423908904591387877942490781599665093928964499749667211865414676956115460582830104967406034916306995799339470981770470110642226339830724648102385439859524931696603713200918452806244046745423996827147769633872023444629989731557115162531810509189011231213373277211936299541960482132108913020072950071774748937875892819098821853774630699635223980146804670582569232369100105043183780758937972022705101781954075716727607108E+000000000000001458");
+ return val;
+ }
+
+ static const e_float& A000142_619(void)
+ {
+ static const e_float val("+1.05492399611942069096446401793810192693142029025345044004144691685035835470100771834974824335613194030399791132537715920998487538104355218557175376587273045932720197698471368522287065064935417454036004469403366782512225963643833854285607190705187997952121078058594188569416473538439775417159425156094428569592545177655022170727486496403074203643710872091090610354836472965021730760289782604682054458003029572868654388800E+000000000000001461");
+ return val;
+ }
+
+ static const e_float& A000142_620(void)
+ {
+ static const e_float val("+6.54052877594040828397967691121623194697480579957139272825697088447222179914624785376843910880801802988478705021733838710190622736247002355054487334841092884782865225730522484838179803402599588215023227710300874051575800974591769896570764582372165587303150683963283969130382135938326607586388435967785457131473780101461137458510416277699060062591007406964761784199986132383134730713796652149028737639618783351785657210560E+000000000000001463");
+ return val;
+ }
+
+ static const e_float& A000142_621(void)
+ {
+ static const e_float val("+4.06166836985899354435137936186528003907135440153383488424757891925724973726981991719020068656977919655845275818496713839028376719209388462488836634936318681450159305178654463084509657913014344281529424408096842786028572405221489105770444805653114829715256574741199344829967306417700823311147218735994768878645217443007366361734968508451116298869015599725117067988191388209926667773267720984546846074203264461458893127758E+000000000000001466");
+ return val;
+ }
+
+ static const e_float& A000142_622(void)
+ {
+ static const e_float val("+2.52635772605229398458655796308020418430238243775404529800199408777800933658182798849230482704640266025935761559104956007875650319348239623668056386930390219861999087821123076038565007221894922143111301981836236212909772036047766223789216669116237424082889589489025992484239664591809912099533570053788746242517325249550581876999150412256594337896527703029022816288655043466574387354972522452388138258154430495027431525465E+000000000000001469");
+ return val;
+ }
+
+ static const e_float& A000142_623(void)
+ {
+ static const e_float val("+1.57392086333057915239742561099896720682038425872077022065524231668569981669047883683070590724990885734157979451322387592906530148953953285545199129057633106974025431712559676372025999499240536495158341134683975160642787978457758357420681984859415915203640214251663193317681311040697575238009414143510388909088293630470012509370470706835858272509536758987081214547832092079675843322147881487837810134830210198402089840365E+000000000000001472");
+ return val;
+ }
+
+ static const e_float& A000142_624(void)
+ {
+ static const e_float val("+9.82126618718281391095993581263355537055919777441760617688871205611876685614858794182360486123943126981145791776251698579736748129472668501802042565319630587517918693886372380561442236875260947729788048680428005002410996985576412150305055585522755310870714936930378326302331380893952869485178744255504826792710952254132878058471737210655755620459509376079386778778472254577177262330202780484107935241340511638029040603877E+000000000000001474");
+ return val;
+ }
+
+ static const e_float& A000142_625(void)
+ {
+ static const e_float val("+6.13829136698925869434995988289597210659949860901100386055544503507422928509286746363975303827464454363216119860157311612335467580920417813626276603324769117198699183678982737850901398047038092331117530425267503126506873115985257593940659740951722069294196835581486453938957113058720543428236715159690516745444345158833048786544835756659847262787193360049616736736545159110735788956376737802567459525837819773768150377423E+000000000000001477");
+ return val;
+ }
+
+ static const e_float& A000142_626(void)
+ {
+ static const e_float val("+3.84257039573527594266307488669287853873128612924088841670770859195646753246813503223848540195992748431373291032458477069322002705656181551330049153681305467366385688983043193894664275177445845799279574046217456957193302570606771253806852997835778015378167219074010520165787152774759060186076183689966263482648160069429488540377067183669064386504783043391060077197077269603320603886691837864407229663174475178378862136267E+000000000000001480");
+ return val;
+ }
+
+ static const e_float& A000142_627(void)
+ {
+ static const e_float val("+2.40929163812601801604974795395643484378451640303403703727573328715670514285752066521353034702887453266471053477351465122464895696446425832683940819358178528038723826992368082571954500536258545316148292926978345512160200711770445576136896829643032815642110846359404596143948544789773930736669767173608847203620396363532289314816421124160503370338498968206194668402567448041282018636955782340983332998810395936843546559439E+000000000000001483");
+ return val;
+ }
+
+ static const e_float& A000142_628(void)
+ {
+ static const e_float val("+1.51303514874313931407924171508464108189667630110537525940916050433441082971452297775409705793413320651343821583776720096907954497368355422925514834556936115608318563351207155855187426336770366458541127958142400981636606046991839821813971209015824608223245611513706086378399686127978028502628613785026356043873608916298277689704712465972796116572577352033490251756812357369925107704008231310137533123252928648337747239328E+000000000000001486");
+ return val;
+ }
+
+ static const e_float& A000142_629(void)
+ {
+ static const e_float val("+9.51699108559434628555843038788239240513009393395281038168361957226344411890434953007327049440569786896952637761955569409551033788446955610201488309363128167176323763479093010329128911658285605024223694856715702174494252035578672479209878904709536785724214896421211283320134025744981799281533980707815779515965000083516166668242641410968887573241511544290653683550349727856828927458211774940765083345260921198044430135373E+000000000000001488");
+ return val;
+ }
+
+ static const e_float& A000142_630(void)
+ {
+ static const e_float val("+5.99570438392443815990181114436590721523195917839027054046068033052596979490974020394616041147558965745080161790032008728017151286721582034426937634898770745321083970991828596507351214344719931165260927759730892369931378782414563661902223709967008175006255384745363108491684436219338533547366407845923941095057950052615185000992864088910399171142152272903111820636720328549802224298673418212682002507514380354767990985285E+000000000000001491");
+ return val;
+ }
+
+ static const e_float& A000142_631(void)
+ {
+ static const e_float val("+3.78328946625632047889804283209488745281136624156426071103068928856188694058804606869002721964109707385145582089510197507378822461921318263723397647621124340297603985695843844396138616251518276565279645416390193085426700011703589670660303160989182158428947147774324121458252879254402614668388203350778006830981566483200181735626497240102461876990698084201863558821770527314925203532462926892202343582241574003858602311715E+000000000000001494");
+ return val;
+ }
+
+ static const e_float& A000142_632(void)
+ {
+ static const e_float val("+2.39103894267399454266356306988396887017678346466861276937139563037111254645164511541209720281317335067412007880570444824663415795934273142673187313296550583068085718959773309658359605470959550789256735903158602029989674407396668671857311597745163124127094597393372844761615819688782452470421344517691700317180350017382514856915946255744755906258121189215577769175358973263032728632516569795871881143976674770438636661004E+000000000000001497");
+ return val;
+ }
+
+ static const e_float& A000142_633(void)
+ {
+ static const e_float val("+1.51352765071263854550603542323655229482190393313523188301209343402491424190389135805585752938073873097671800988401091574011942198826394899312127569316716519082098260101536505013741630263117395649599513826699395084983463899882091269285678241372688257572450880150005010734102813862999292413776711079698846300775161561003131904427793979886430488661390712773460727888002230075499717224382988680786900764137235129687657006415E+000000000000001500");
+ return val;
+ }
+
+ static const e_float& A000142_634(void)
+ {
+ static const e_float val("+9.59576530551812837850826458331974154917087093607737013829667237171795629367067121007413673627388355439239218266462920579235713540559343661638888789467982730980502969043741441787121935868164288418460917661274164838795161125252458647271200050302843553009338580151031768054211839891415513903344348245290685546914524296759856274072213832479969298113217118983741014809934138678668207202588148236188950844630070722219745420673E+000000000000001502");
+ return val;
+ }
+
+ static const e_float& A000142_635(void)
+ {
+ static const e_float val("+6.09331096900401152035274801040803588372350304440913003781838695604090224648087621839707682753391605703916903599203954567814678098255183225140694381312169034172619385342775815534822429276284323145722682714909094672634927314535311241017212031942305656160929998395905172714424518331048851328623661135759585322290722928442508734035855783624780504301892870554675544404308178060954311573643474129979983786340094908609538342128E+000000000000001505");
+ return val;
+ }
+
+ static const e_float& A000142_636(void)
+ {
+ static const e_float val("+3.87534577628655132694434773461951082204814793624420670405249410404201382876183727490054086231157061227691150689093715105130135270490296531189481626514539505733785929078005418680147065019716829520679626206682184211795813772044457949286946852315306397318351478979795689846373993658547069445004648482343096264976899782489435554846804278385360400736003865672773646241140001246766942160837249546667269688112300361875666385593E+000000000000001508");
+ return val;
+ }
+
+ static const e_float& A000142_637(void)
+ {
+ static const e_float val("+2.46859525949453319526354950695262839364467023538755967048143874427476280892129034411164452929247048002039262988952696521967896167302318890367699796089761665152421636822689451699253680417559620404672921893656551342913933372792319713695785144924850175091789892110129854432140233960494483236467961083252552320790285161445770448437414325331474575268834462433556812655606180794190542156453327961227050791327535330514799487623E+000000000000001511");
+ return val;
+ }
+
+ static const e_float& A000142_638(void)
+ {
+ static const e_float val("+1.57496377555751217857814458543577691514529961017726306976715791884729867209178323954322920968859616625301049786951820381015517754738879452054592469905267942367245004292875870184123848106403037818181324168152879756779089491841499977337910922462054411708561951166262847127705469266795480304866559171115128380664201933002401546103070339561480779021516387032609246474276743346693565895817223239262858404866967540868442073103E+000000000000001514");
+ return val;
+ }
+
+ static const e_float& A000142_639(void)
+ {
+ static const e_float val("+1.00640185258125028211143439009346144877784645090327110158121391014342385146664949006812346499101295023567370813862213223468915845278143969862884588269466215172669557743147681047655138939991541165817866143449690164581838185286718485518925079453252769081771086795241959314603794861482311914809731310342567035244425035188534587959861946979786217794748971313837308497062838998537188607427205649888966520709992258614934484713E+000000000000001517");
+ return val;
+ }
+
+ static const e_float& A000142_640(void)
+ {
+ static const e_float val("+6.44097185652000180551318009659815327217821728578093505011976902491791264938655673643599017594248288150831173208718164630201061409780121407122461364924583777105085169556145158704992889215945863461234343318078017053323764385834998307321120508500817722123334955489548539613464287113486796254782280386192429025564320225206621362943116460670631793886393416408558774381202169590638007087534116159289385732543950455135580702164E+000000000000001519");
+ return val;
+ }
+
+ static const e_float& A000142_641(void)
+ {
+ static const e_float val("+4.12866296002932115733394844191941624746623728018557936712677194497238200825678286805546970277913152704682782026788343527958880363669057821965497734916658201124359593685489046729900441987421298478651214066888008931180532971320233914992838245949024159881057706468800613892230608039745036399315441727549347005386729264357444293646537651289874979881178179917886174378350590707598962543109368458104496254560672241741907230087E+000000000000001522");
+ return val;
+ }
+
+ static const e_float& A000142_642(void)
+ {
+ static const e_float val("+2.65060162033882418300839489971226523087332433387914195369538758867226924930085460129161154918420244036406346061198116544949601193475535121701849545816494565121838859146083968000596083755924473623294079430942101733817902167587590173425402153899273510643639047552969994118812050361516313368360513589086680777458280187717479236521077172128099737083716391507282923950901079234278533952676214550103086595427951579198304441716E+000000000000001525");
+ return val;
+ }
+
+ static const e_float& A000142_643(void)
+ {
+ static const e_float val("+1.70433684187786394967439792051498654345154754668428827622613421951626912730044950863050622612544216915409280517350388938402593567404769083254289257960006005373342386430931991424383281855059436539778093074095771414844911093758820481512533584957232867343859907576559706218396148382454989495855810237782735739905674160702339149083052621678368130944829639739182920100429393947641097331570805955716284680860172865424509756023E+000000000000001528");
+ return val;
+ }
+
+ static const e_float& A000142_644(void)
+ {
+ static const e_float val("+1.09759292616934438359031226081165133398279662006468164988963043736847731798148948355804600962478475693523576653173650476331270257408671289615762282126243867460432496861520202477302833514658277131617091939717676791160122744380680390094071628712457966569445780479304450804647119558301013235331141793132081816499254159492306412009485888360869076328470287992033800544676529702280866681531599035481287334473951325333384282879E+000000000000001531");
+ return val;
+ }
+
+ static const e_float& A000142_645(void)
+ {
+ static const e_float val("+7.07947437379227127415751408223515110418903819941719664178811632102667870098060716894939676207986168223227069412970045572336693160285929818021666719714272945119789604756805305978603276169545887498930243011179015302982791701255388516106762005195353884372925284091513707689973921151041535367885864565701927716420189328725376357461183979927605542318633357548618013513163616579711590095878813778854303307356986048400328624569E+000000000000001533");
+ return val;
+ }
+
+ static const e_float& A000142_646(void)
+ {
+ static const e_float val("+4.57334044546980724310575409712390761330611867682350903059512314338323444083347223114131030830359064672204686840778649439729503781544710662441996700935420322547384084672896227662177716405526643324308936985221643885726883439010980981404968255356198609304909733523117855167723153063572831847654268509443445304807442306356593126919924851033233180337837148976407236729503696310493687201937713701139879936552612987266612291472E+000000000000001536");
+ return val;
+ }
+
+ static const e_float& A000142_647(void)
+ {
+ static const e_float val("+2.95895126821896528628942290083916822580905878390481034279504467376895268321925653354842776947242314842916432385983786187504988946659427798599971865505216948688157502783363859297428982514375738230827882229438403594065293585040104694969014461215460500220276597589457252293516880032131622205432311725609909112210415172212715753117191378618501867678580635387735482163988891512889415619653700764637502318949540602761498152582E+000000000000001539");
+ return val;
+ }
+
+ static const e_float& A000142_648(void)
+ {
+ static const e_float val("+1.91740042180588950551554603974378101032427009197031710213118894860228133872607823373938119461813020018209848186117493449503232837435309213492781768847380582749926061803619780824733980669315478373576467684676085528954310243105987842339921370867618404142739235237968299486198938260821291189120137998195221104712349031593839808019940013344789210255720251731252592442264801700352341321535598095485101502679302310589450802873E+000000000000001542");
+ return val;
+ }
+
+ static const e_float& A000142_649(void)
+ {
+ static const e_float val("+1.24439287375202228907958937979371387570045128968873579928314162764288058883322477369685839530716649991818191472790253248727598111495515679556815367981949998204702014110549237755252353454385745464451127527354779508291347347775786109678608969693084344288637763669441426366543110931273017981738969560828698496958314521504402035404941068660768197455962443373582932495029856303528669517676603163969830875238867199572553571065E+000000000000001545");
+ return val;
+ }
+
+ static const e_float& A000142_650(void)
+ {
+ static const e_float val("+8.08855367938814487901733096865914019205293338297678269534042057967872382741596102902957956949658224946818244573136646116729387724720851917119299891882674988330563091718570045409140297453507345518932328927806066803893757760542609712910958303005048237876145463851369271382530221053274616881303302145386540230229044389778613230132116946294993283463755881928289061217694065972936351864897920565803900689052636797221598211921E+000000000000001547");
+ return val;
+ }
+
+ static const e_float& A000142_651(void)
+ {
+ static const e_float val("+5.26564844528168231624028246059710026502645963231788553466661379737084921164779062989825629974227504440378677217111956621990831408793274598044664229615621417403196572708789099561350333642233281932824946132001749489334836302113238923105033855256286402857370696967241395670027173905681775589728449696646637689879107897745877212816008132038040627534905079135316178852718836948381565064048546288338339348573266554991260435961E+000000000000001550");
+ return val;
+ }
+
+ static const e_float& A000142_652(void)
+ {
+ static const e_float val("+3.43320278632365687018866416430930937279725168027126136860263219588579368599435949069366310743196332895126897545556995717538022078533215037925121077709385164146884165406130492914000417534736099820201864878065140667046313268977831777864482073627098734663005694422641389976857717386504517684502949202213607773801178349330311942756037302088802489152758111596226148611972681690344780421759652179996597255269769793854301804246E+000000000000001553");
+ return val;
+ }
+
+ static const e_float& A000142_653(void)
+ {
+ static const e_float val("+2.24188141946934793623319769929397902043660534721713367369751882391342327695431674742296200915307205380517864097248718203552328417282189419765104063744228512187915360010203211872842272650182673182591817765376536855581242564642524150945506794078495473734942718457984827654888089453387450047980425829045485876292169462112693698619692358263988025416751046872335675043618161143795141615409052873537778007691159675386859078173E+000000000000001556");
+ return val;
+ }
+
+ static const e_float& A000142_654(void)
+ {
+ static const e_float val("+1.46619044833295355029651129533826227936553989708000542259817731083937882312812315281461715398610912318858683119600661705123222784902551880526378057688725446970896645446672900564838846313219468261415048818556255103550132637276210794718361443327336039822652537871522077286296810502515392331379198492195747763095078828221701678897278802304648168622555184654507531478526277388042022616477520579293706817030018427703005837125E+000000000000001559");
+ return val;
+ }
+
+ static const e_float& A000142_655(void)
+ {
+ static const e_float val("+9.60354743658084575444214898446561792984428632587403551801806138599793129148920665093574235860901475688524374433384334168557109241111714817447776277861151677659373027675707498699694443351587517112268569761543470928253368774159180705405267453794051060838374123058469606225244108791475819770533750123882147848272766324852145996777176155095445504477736459487024331184347116891675248137927759794373779651546620701454688233169E+000000000000001561");
+ return val;
+ }
+
+ static const e_float& A000142_656(void)
+ {
+ static const e_float val("+6.29992711839703481491404973380944536197785182977336729981984826921464292721691956301384698724751368051671989628300123214573463662169284920245741238276915500544548706155264119146999554838641411225648181763572516928934209915848422542745855449688897495909973424726356061683760135367208137769470140081266688988466934709103007773885827557742612250937395117423487961256931708680938962778480610425109199451414583180154275480959E+000000000000001564");
+ return val;
+ }
+
+ static const e_float& A000142_657(void)
+ {
+ static const e_float val("+4.13905211678685187339853067511280560281944865216110231598164031287402040318151615290009747062161648809948497185793180951974765626045220192601451993547933483857768499944008526279578707528987407175250855418667143622309775914712413610584027030445605654812852540045215932526230408936255746514541882033392214665422776103880676107442988705436896248865868592147231590545804132603376898545461761049296744039579381149361358990990E+000000000000001567");
+ return val;
+ }
+
+ static const e_float& A000142_658(void)
+ {
+ static const e_float val("+2.72349629284574853269623318422422608665519721312200532391591932587110542529343762860826413566902364916946111148251913066399395781937754886731755411754540232378411672963157610291962789554073713921315062865482980503479832551880768155764289786033208520866856971349752083602259609080056281206568558377972077249848186676353484878697486568177477731753741533632878386579139119253021999242913838770437257578043232796279774216071E+000000000000001570");
+ return val;
+ }
+
+ static const e_float& A000142_659(void)
+ {
+ static const e_float val("+1.79478405698534828304681766840376499110577496344740150846059083574905847526837539725284606540588658480267487246698010710757201820296980470356226816346242013137373292482720865182403478316134577474146626428353284151793209651689426214648666968995884415251258744119486623093889082383757089315128679971083598907649955019716946535061643648428957825225715670664066856755652679587741497501080219749718152743930490412748371208391E+000000000000001573");
+ return val;
+ }
+
+ static const e_float& A000142_660(void)
+ {
+ static const e_float val("+1.18455747761032986681089966114648489412981147587528499558398995159437859367712776218687840316788514596976541582820687069099753201396007110435109698788519728670666373038595771020386295688648821132936773442713167540183518370115021301668120199537283714065830771118861171241966794373279678947984928780915175279048970313013184713140684807963112164648972342638284125458730768527909388350712945034813980810994123672413924997538E+000000000000001576");
+ return val;
+ }
+
+ static const e_float& A000142_661(void)
+ {
+ static const e_float val("+7.82992492700428041962004676017826515019805385553563382081017358003884250420581450805526624493972081486014939862444741526749368661227606999976075108992115406513104725785118046444753414501968707688712072456334037440613056426460290804026274518941445349975141397095672341909400510807378677846180379241849308594513693769017150953859926580636171408329707184839058069282210379969481056998212566680120413160671157474656044233727E+000000000000001578");
+ return val;
+ }
+
+ static const e_float& A000142_662(void)
+ {
+ static const e_float val("+5.18341030167683363778847095523801152943111165236458958937633490998571373778424920433258625415009517943741890188938418890708082053732675833984161722152780399111675328469748146746426760400303284489927391966093132785685843354316712512265393731539236821683543604877335090344023138154484684734171411058104242289568065275089353931455271396381145472314266156363456441864823271539796459732816719142239713512364306248222301282727E+000000000000001581");
+ return val;
+ }
+
+ static const e_float& A000142_663(void)
+ {
+ static const e_float val("+3.43660103001174070185375624332280164401282702551772289775651004532052820815095722247250468650151310396700873195266171724539458401624764077931499221787293404611040742775443021292880942145401077616821860873519747036909714143911980395631956044010514012776189410033673164898087340596423345978755645531523112637983627277384241656554844935800699448144358461668971620956377829030885052802857484791304930058697535042571385750448E+000000000000001584");
+ return val;
+ }
+
+ static const e_float& A000142_664(void)
+ {
+ static const e_float val("+2.28190308392779582603089414556634029162451714494376800411032267009283073021223559572174311183700470103409379801656738025094200378678843347746515483266762820661731053202894166138472945584546315537569715620017112032508050191557554982699618813222981304483389768262358981492329994156025101729893748632931346791621128512183136459952417037371664433567854018548197156315034878476507675061097369901426473558975163268267400138298E+000000000000001587");
+ return val;
+ }
+
+ static const e_float& A000142_665(void)
+ {
+ static const e_float val("+1.51746555081198422431054460680161629393030390138760572273336457561173243559113667115495916937160812618767237568101730786687643251821430826251432796372397275740051150379924620482084508813723299832483860887311379501617853377385774063495246510793282567481454195894468722692399446113756692650379342840899345616428050460601785745868357329852156848322622922334551108949498194186877603915629750984448604916718483573397821091968E+000000000000001590");
+ return val;
+ }
+
+ static const e_float& A000142_666(void)
+ {
+ static const e_float val("+1.01063205684078149339082270812987645175758239832414541134042080735741380210369702298920280680149101204098980220355752703933970405713072930283454242384016585642874066153029797241068282869939717688434251350949378748077490349338925526287834176188326189942648494465716169313138031111761957305152642332038964180541081606760789306748325981681536460982866866274811038560365797328460484207809414155642770874534510059882948847251E+000000000000001593");
+ return val;
+ }
+
+ static const e_float& A000142_667(void)
+ {
+ static const e_float val("+6.74091581912801256091678746322627593322307459682204989364060678507395006003165914333798272136594505031340198069772870535239582606106196444990639796701390626237970021240708747597925446742497916981856456510832356249676860630090633260339853955176135686917465458086326849318630667515452255225368124354699891084209014317094464676011334297815848194755721998052989627197639868180831429666088792418137281733145182099419268811161E+000000000000001595");
+ return val;
+ }
+
+ static const e_float& A000142_668(void)
+ {
+ static const e_float val("+4.50293176717751239069241402543515232339301383067712932895192533242939864010114830774977245787245129360935252310608277517540041180878939225253747384196528938326963974188793443395414198423988608543880112949236013974784142900900543017907022442057658638860866926001666335344845285900322106490545907068939527244251621563819102403575571310940986594096822294699397070968023431944795395016947313335315704197740981642412071565856E+000000000000001598");
+ return val;
+ }
+
+ static const e_float& A000142_669(void)
+ {
+ static const e_float val("+3.01246135224175578937322498301611690434992625272299952106883804739526769022766821788459777431666991542465683795796937659234287550008010341694757000027477859740738898732302813631532098745648379115855795563038893349130591600702463278979798013736573629397919973495114778345701496267315489242175211829120543726404334826194979507992057207019520031450774115153896640477607675971068119266337752621326206108288716718773675877558E+000000000000001601");
+ return val;
+ }
+
+ static const e_float& A000142_670(void)
+ {
+ static const e_float val("+2.01834910600197637888006073862079832591445058932440967911612149175482935245253770598268050879216884333452008143183948231686972658505366928935487190018410166026295062150642885133126506159584414007623383027236058543917496372470650396916464669203504331696606382241726901491620002499101377792257391925510764296690904333550636270354678328703078421072018657153110749119997142900615639908446294256288558092553440201578362837964E+000000000000001604");
+ return val;
+ }
+
+ static const e_float& A000142_671(void)
+ {
+ static const e_float val("+1.35431225012732615022852075561455567668859634543667889468691752096749049549565280071437862139954529387746297464076429263461958653857101209315711904502353221403643986703081375924327885633081141799115290011275395282968640065927806416330947793035551406568422882484198750900877021676897024498604709982017722843079596807812476937407989158559765620539324518949737312659518082886313094378567463445969622480103358375259081464274E+000000000000001607");
+ return val;
+ }
+
+ static const e_float& A000142_672(void)
+ {
+ static const e_float val("+9.10097832085563172953565947772981414734736744133448217229608574090153612973078682080062433580494437485655118958593604650464362153919720126601583998255813647832487590644706846211483391454305272890054748875770656301549261243034859117743969169198905452139801770293815606053893585668748004630623651079159097505494890548499845019381687145521624970024260767342234741071961516996023994223973354356915863066294568281741027439918E+000000000000001609");
+ return val;
+ }
+
+ static const e_float& A000142_673(void)
+ {
+ static const e_float val("+6.12495840993584015397749882851216492116477828801810650195526570362673381530881953039882017799672756427845895059133495929762515729587971645202866030826162584991264148503887707500328322448747448655006845993393651690942652816562460186241691250870863369290086591407737902874270383155067407116409717176274072621198061339140395698043875448936053604826327496421323980741430100938324148112734067482204375843616244453611711467065E+000000000000001612");
+ return val;
+ }
+
+ static const e_float& A000142_674(void)
+ {
+ static const e_float val("+4.12822196829675626378083421041719915686506056612420378231784908424441859151814436348880479996979437832368133269855976256659935601742292888866731704776833582284112036091620314855221289330455780393474614199547321239695347998363098165526899903086961910901518362608815346537258238246515432396460149376808724946687493342580626700481572052582900129652944732587972363019723888032430475827982761483005749318597348761734293528802E+000000000000001615");
+ return val;
+ }
+
+ static const e_float& A000142_675(void)
+ {
+ static const e_float val("+2.78654982860031047805206309203160943088391588213383755306454813186498254927474744535494323997961120536848489957152783973245456531176047699985043900724362668041775624361843712527274370298057651765595364584694441836794359898895091261730657434583699289858524894760950358912649310816397916867610600829345889339014058006241923022825061135493457587515737694496881345038313624421890571183888364001028880790053210414170648131941E+000000000000001618");
+ return val;
+ }
+
+ static const e_float& A000142_676(void)
+ {
+ static const e_float val("+1.88370768413380988316319465021336797527752713632247418587163453714072820330972927305994163022621717482909579211035281965913928615075008245189889676889669163596240322068606349668437474321486972593542466459253442681672987291653081692929924425778580719944362828858402442624950934111884991802504766160637821193173503212219539963429741327593577329160638681479891789245900010109198026120308534064695523414075970239979358137192E+000000000000001621");
+ return val;
+ }
+
+ static const e_float& A000142_677(void)
+ {
+ static const e_float val("+1.27527010215858929090148277819445011926288587129031502383509658164427299364068671786158048366314902735929785125870885890923729672405780581993555311254306023754654698040446498725532170115646680445828249792914580695492612396449136306113558836252099147402333635137138453657091782393746139450295726690751804947778461674672628555241934878780851851841752387361886741319474306843927063683448877561798869351329431852466025458879E+000000000000001624");
+ return val;
+ }
+
+ static const e_float& A000142_678(void)
+ {
+ static const e_float val("+8.64633129263523539231205323615837180860236620734833586160195482354817089688385594710151567923615040549603943153404606340462887178911192345916305010304194841056558852714227261359108113384084493422715533595960857115439912047925144155449928909789232219387822046229798715795082284629598825473005026963297237545937970154280421604540318478134175555487081186313592106146035800401825491773783389868996334202013547959719652611201E+000000000000001626");
+ return val;
+ }
+
+ static const e_float& A000142_679(void)
+ {
+ static const e_float val("+5.87085894769932483137988414735153445804100665478952005002772732518920803898413818808192914620134612533181077401161727705174300394480699602877171101996548297077403460992960310462834408987793371034023847311657421981383700280541172881550501729746888676964331169390033328024860871263497602496170413308078824293691881734756406269482876246653105202175728125506929040073158308472839508914398921721048510923167199064649644123005E+000000000000001629");
+ return val;
+ }
+
+ static const e_float& A000142_680(void)
+ {
+ static const e_float val("+3.99218408443554088533832122019904343146788452525687363401885458112866146650921396789571181941691536522563132632789974839518524268246875729956476349357652842012634353475213011114727398111699492303136216171927046947340916190767997559454341176227884300335745195185222663056905392459178369697395881049493600519710479579634356263248355847724111537479495125344711747249747649761530866061791266770312987427753695363961758003644E+000000000000001632");
+ return val;
+ }
+
+ static const e_float& A000142_681(void)
+ {
+ static const e_float val("+2.71867736150060334291539675095554857682962936169993094476683996974861845869277471213697974902291936371865493322929972865712115026676122372100360393912561585410603994716620060569129358114067354258435763213082318971139163925913006337988406341011189208528642477921136633541752572264700469763926594994705141953922836593730996615272130332300119957023536180359748699877078149487602519788079852670583144438300266542857957200481E+000000000000001635");
+ return val;
+ }
+
+ static const e_float& A000142_682(void)
+ {
+ static const e_float val("+1.85413796054341147986830058415168412939780722467935290433098485936855778882847235367742018883363100605612266446238241494415662448193115457772445788648367001250031924396734881308146222233793935604253190511322141538316909797472670322508093124569631040216534169942215184075475254284525720378997937786388906812575374556924539691615592886628681810690051675005348613316167297950544918495470459521337704506920781782229126810728E+000000000000001638");
+ return val;
+ }
+
+ static const e_float& A000142_683(void)
+ {
+ static const e_float val("+1.26637622705115004075004929897560026037870233445599803365806265894872496976984661756167798897336997713633177982780718940685897452115897857658580473646834661853771804362969923933463869785681258017704929119233022670670449391673833830273027604081058000467892838070532970723549598676331067018855591508103623352988980822379460609373449941567389676701305294028653102894942264500222179332406323853073652178226893957262493611727E+000000000000001641");
+ return val;
+ }
+
+ static const e_float& A000142_684(void)
+ {
+ static const e_float val("+8.66201339302986627873033720499310578099032396767902655022114858720927879322575086412187744457785064361250937402220117554291538572472741346384690439744349087079799141842714279704892869334059804841101715175553875067385873839049023399067508811914436723200387012402445519749079254946104498408972245915428783734444628825075510568114397600320945388636928211155987223801405089181519706633659255155023780899071954667675456304215E+000000000000001643");
+ return val;
+ }
+
+ static const e_float& A000142_685(void)
+ {
+ static const e_float val("+5.93347917422545840093028098542027745997837191786013318690148678223835597335963934192348604953582769087456892120520780524689703922143827822273512951224879124649662412162259281597851615493830966316154674895254404421159323579748581028361243536161389155392265103495675181028119289638081581410145988452068716858094570745176724739158362356219847591216295824641851248303962486089340999044056589781191289915864288947357687568388E+000000000000001646");
+ return val;
+ }
+
+ static const e_float& A000142_686(void)
+ {
+ static const e_float val("+4.07036671351866446303817275599831033754516313565205136621441993261551219772471258855951142998157779593995427994677255439937136890590665886079629884540267079509668414743309867176126208228768042892882106978144521432915295975707526585455813065806712960599093860998033174185289832691723964847360148078119139764652875531191233171062636576366815447574378935704309956336518265457287925344222820589897224882282902217887373671914E+000000000000001649");
+ return val;
+ }
+
+ static const e_float& A000142_687(void)
+ {
+ static const e_float val("+2.79634193218732248610722468337083920189352707419295928858930649370685687983687754834038435239734394581074859032343274487236813043835787463736705730679163483623142200928653878749998705053163645467410007493985286224412808335311070764208143576209211803931577482505648790665294115059214363850136421729667849018316525489928377188520031327964002212483598328828860940003188048369156804711481077745259393494128353823688625712605E+000000000000001652");
+ return val;
+ }
+
+ static const e_float& A000142_688(void)
+ {
+ static const e_float val("+1.92388324934487787044177058215913737090274662704475599054944286767031753332777175325818443444937263471779503014252172847218927374159021775050853542707264476732721834238913868579999109076576588081578085155861876922396012134694016685775202780431937721104925307963886367977722351160739482328893858150011480124601769537070723505701781553639233522188715650234256326722193377277979881641498981488738462723960307430697774490272E+000000000000001655");
+ return val;
+ }
+
+ static const e_float& A000142_689(void)
+ {
+ static const e_float val("+1.32555555879862085273437993110764564855199242603383687748856613582484878046283473799488907533561774532056077576819747091733840960795566003010038090925305224468845343790611655451619386153761269188207300672388833199530852360804177496499114715717605089841293537187117707536650699949749503324607868265357909805850619211041728495428527490457431896788025083011402609111591236944528138450992798245740800816808651819750766623797E+000000000000001658");
+ return val;
+ }
+
+ static const e_float& A000142_690(void)
+ {
+ static const e_float val("+9.14633335571048388386722152464275497500874773963347445467110633719145658519355969216473461981576244271186935280056254932963502629489405420769262827384606048835032872155220422616173764460952757398630374639482949076762881289548824725843891538451475119904925406591112182002889829653271572939794291030969577660369272556187926618456839684156280087837373072778678002869979534917244155311850307895611525635979697556280289704203E+000000000000001660");
+ return val;
+ }
+
+ static const e_float& A000142_691(void)
+ {
+ static const e_float val("+6.32011634879594436375225007352814368773104468808673084817773447899929650036874974728583162229269184791390172278518872158677780316977179145751560613722762779745007714659257312027776071242518355362453588875882717812043150971078237885558129053069969307854303455954458517763996872290410656901397855102399978163315167336325857293353676221751989540695624793290066499983155858627815711320488562755867564214461971011389680185604E+000000000000001663");
+ return val;
+ }
+
+ static const e_float& A000142_692(void)
+ {
+ static const e_float val("+4.37352051336679349971655705088147543190988292415601774693899225946751317825517482512179548262654275875641999216735059533805023979348207968860079944696151843583545338544206059923221041299822701910817883502110840725933860471986140616806225304724418761035177991520485294292685835624964174575767315730860784889014095796737493247000743945452376762161372356956726017988343854170448472233778085427060354436407683939881658688438E+000000000000001666");
+ return val;
+ }
+
+ static const e_float& A000142_693(void)
+ {
+ static const e_float val("+3.03084971576318789530357403626086247431354886644012029862872163581098663253083615380940426946019413181819905457197396256926881617688308122420035401674433227603396919611134799526792181620777132424196793266962812623072165307086395447446714136174022201397378348123696308944831284088100172981006749801486523928086768387139082820171515554198497096177831043371011130465922290940120791258008213200952825624430524970337989471088E+000000000000001669");
+ return val;
+ }
+
+ static const e_float& A000142_694(void)
+ {
+ static const e_float val("+2.10340970273965239934068038116503855717360291330944348724833281525282472297640029074372656300537472748183014387294993002307255842675685836959504568762056659956757462210127550871593774044819329902392574527272191960412082723117958440528019610504771407769780573597845238407712911157141520048818684362231647606092217260674523477199031794613756984747414744099481724543350069912443829133057699961461260983354784329414564692935E+000000000000001672");
+ return val;
+ }
+
+ static const e_float& A000142_695(void)
+ {
+ static const e_float val("+1.46186974340405841754177286490970179723565402475006322363759130660071318246859820206688996128873543559987194999170020136603542810659601656686855675289629378669946436236038647855757672961149434282162839296454173412486397492566981116166973629300816128399997498650502440693360473254213356433928985631750995086234090996168793816653327097256561104399453247149139798557628298589148461247475101473215576383431575108943122461590E+000000000000001675");
+ return val;
+ }
+
+ static const e_float& A000142_696(void)
+ {
+ static const e_float val("+1.01746134140922465860907391397715245087601520122604400365176354939409637499814434863855541305695986317751087719422334015076065796219082753054051550001582047554282719620282898907607340380960006260385336150332104695090532654826618856852213645993368025366398259060749698722578889384932496078014573999698692580018927333333480496390715659690566528662019460015801299796109295818047329028242670625358041162868376275824413233266E+000000000000001678");
+ return val;
+ }
+
+ static const e_float& A000142_697(void)
+ {
+ static const e_float val("+7.09170554962229587050524518042075258260582595254552670545279193927685173373706611001073122900701024634725081404373668085080178599647006788786739303511026871453350555753371805386023162455291243634885792967814769724781012604141533432259929112573775136803795865653425400096374859012979497663761580777899887282731923513334359059843288148043248704774275636310135059578881791851789883326851414258745546905192582642496160235867E+000000000000001680");
+ return val;
+ }
+
+ static const e_float& A000142_698(void)
+ {
+ static const e_float val("+4.95001047363636251761266113593368530265886651487677764040604877361524251014847214478749039784689315195038106820252820323385964662553610738573144033850696756274438687915853520159444167393793288057150283491534709267897146797690790335717430520576495045489049514226090929267269651591059689369305583382974121323346882612307382623770615127334187595932444394144474271586059490712549338562142287152604391739824422684462319844635E+000000000000001683");
+ return val;
+ }
+
+ static const e_float& A000142_699(void)
+ {
+ static const e_float val("+3.46005732107181739981125013401764602655854769389886757064382809275705451459378202920645578809497831321331636667356721406046789299124973906262627679661637032635832642853181610591451473008261508351948048160582761778260105611585862444666483933882970036796845610444037559557821486462150722869144602784698910805019470946002860454015659974006597129556778631506987515838655584008071987654937458719670469826137271456439161571400E+000000000000001686");
+ return val;
+ }
+
+ static const e_float& A000142_700(void)
+ {
+ static const e_float val("+2.42204012475027217986787509381235221859098338572920729945067966492993816021564742044451905166648481924932145667149704984232752509387481734383839375763145922845082849997227127414016031105783055846363633712407933244782073928110103711266538753718079025757791927310826291690475040523505506008401221949289237563513629662202002317810961981804617990689745042054891261087058908805650391358456221103769328878296090019507413099980E+000000000000001689");
+ return val;
+ }
+
+ static const e_float& A000142_701(void)
+ {
+ static const e_float val("+1.69785012744994079808738044076245890523227935339617431691492644511588665031116884173160785521820585829377434112671943193947159509080624695803071402409965291914403077848056216317225237805153922148300907232397961204592233823605182701597843666356373397056212141044889230475023003406977359711889256586451755532023054393203603624785484349245037211473511274480478774022028295072760924342277810993742299543685559103674696583086E+000000000000001692");
+ return val;
+ }
+
+ static const e_float& A000142_702(void)
+ {
+ static const e_float val("+1.19189078946985844025734106941524615147306010608411437047427836447135242851844052689558871436318051252222958747095704122150905975374598536453756124491795634923910960649335463854692116939218053348107236877143368765623748144170838256521686253782174124733460923013512239793466148391698106517746258123689132383480184184028929744599410013170016122454404914685296099363463863141078168888279023317607094279667262490779637001326E+000000000000001695");
+ return val;
+ }
+
+ static const e_float& A000142_703(void)
+ {
+ static const e_float val("+8.37899224997310483500910771798918044485561254577132402443417690223360757248463690407598866197315900303127399992082799978720869006883427711269905555177323313515094053364828310898485582082702915037193875246317882422334949453520992943347454364088684096876230288784991045748067023193637688819756194609534600655865694813723376104533852392585213340854466550237631578525150957881779527284601533922777872786060855310180848119324E+000000000000001697");
+ return val;
+ }
+
+ static const e_float& A000142_704(void)
+ {
+ static const e_float val("+5.89881054398106580384641183346438303317835123222301211320166053917245973102918438046949601802910393813401689594426291185019491780845933108734013510844835612714626213568839130872533849786222852186184488173407789225323804415278779032116607872318433604200866123304633696206639184328320932929108361005112358861729449148861256777591832084379990191961544451367292631281706274348772787208359479881635622441386842138367317076004E+000000000000001700");
+ return val;
+ }
+
+ static const e_float& A000142_705(void)
+ {
+ static const e_float val("+4.15866143350665139171172034259239003839073761871722353980717068011658411037557498823099469271051827638448191164070535285438741705496382841657479525145609106963811480566031587265136364099287110791260064162252491403853282112771539217642208549984495690961610616929766755825680624951466257715021394508604212997519261649947186028202241619487893085332888838213941305053602923415884814981893433316553113821177723707548958538583E+000000000000001703");
+ return val;
+ }
+
+ static const e_float& A000142_706(void)
+ {
+ static const e_float val("+2.93601497205569588254847456187022736710386075881435981910386250016230838192515594169108225305362590312744422961833797911519751644080446286210180544752800029516450905279618300609186273054096700218629605298550258931120417171616706687655399236289053957818897095552415329612930521215735177946805104523074574376248598724862713335910782583358452518245019519779042561367843663931614679377216763921486498357751472937529564728240E+000000000000001706");
+ return val;
+ }
+
+ static const e_float& A000142_707(void)
+ {
+ static const e_float val("+2.07576258524337698896177151524225074854242955648175239210643078761475202602108525077559515290891351351110307034016495123444464412364875524350597645140229620868130790032690138530694695049246367054571130946075033064302134940333011628172367260056361148177960246555557638036341878499524770808391208897813724084007759298477938328488923286434425930399228800483783090887065470399651578319692252092490954338930291366833402262865E+000000000000001709");
+ return val;
+ }
+
+ static const e_float& A000142_708(void)
+ {
+ static const e_float val("+1.46963991035231090818493423279151352996804012598908069361135299763124443442292835754912136825951076756586097380083678547398680803954331871240223132759282571574636599343144618079731844094866427874636360709821123409525911537755772232746036020119903692909995854561334807729730049977663537732340975899652116651477493583322380336570157686795573558722653990742518428348042353042953317450342114481483595671962646287718048802109E+000000000000001712");
+ return val;
+ }
+
+ static const e_float& A000142_709(void)
+ {
+ static const e_float val("+1.04197469643978843390311837104918309274734044932625821177044927532055230400585620550232705009599313420419543042479328090105664690003621296709318201126331343246417348934289534218529877463260297363117179743263176497353871280268842513016939538265011718273187060883986378680378605434163448252229751912853350705897542950575567658628241799938061653134361679436445565698762028307453902072292559167371869331421516217992096600695E+000000000000001715");
+ return val;
+ }
+
+ static const e_float& A000142_710(void)
+ {
+ static const e_float val("+7.39802034472249788071214043444919995850611719021643330357018985477592135844157905906652205568155125284978755601603229439750219299025711206636159227996952537049563177433455692951562129989148111278131976177168553131212486089908781842420270721681583199739628132276303288630688098582560482590831238581258790011872554949086530376260516779560237737253967923998763516461210400982922704713277170088340272253092765147743885864935E+000000000000001717");
+ return val;
+ }
+
+ static const e_float& A000142_711(void)
+ {
+ static const e_float val("+5.25999246509769599318633184889338117049784932224388407883840498674568008585196271099629718158958294077619895232739896131662405921607280667918309211105833253842239419155186997688560674422284307118751835061966841276292077609925143889960812483115605655014875602048451638216419238092200503122081010631274999698441386568800523097521227430267329031187571193963120860203920595098858043051140067932809933571948956020045902849969E+000000000000001720");
+ return val;
+ }
+
+ static const e_float& A000142_712(void)
+ {
+ static const e_float val("+3.74511463514955954714866827641208739339446871743764546413294435056292422112659745022936359329178305383265365405710806045743633016184383835557836158307353276735674466438493142354255200188666426668551306564120390988719959258266702449652098487978311226370591428658497566410090497521646758222921679569467799785290267236985972445435113930350338270205550690101742052465191463710386926652411728368160672703227656686272682829178E+000000000000001723");
+ return val;
+ }
+
+ static const e_float& A000142_713(void)
+ {
+ static const e_float val("+2.67026673486163595711700048108181831149025619553304121592678932195136496966326398201353624201704131738268205534271804710615210340539465674752737180873142886312535894570645610498583957734519162214677081580217838774957330951144158846601946221928535904402231688633508764850394524732934138612943157533030541246911960539970998353595236232339791186656557642042542083407681513625505878703169562326498559637401319217312422857204E+000000000000001726");
+ return val;
+ }
+
+ static const e_float& A000142_714(void)
+ {
+ static const e_float val("+1.90657044869120807338153834349241827440404292361059142817172757587327458833957048315766487680016750061123498751470068563379260183145178491773454347143424020827150628723440965895988945822446681821279436248275536885319534299116929416473789602456974635743193425684325258103181690659314974969641414478583806450295139825539292824466998669890610907272782156418375047553084600728611197394063067501119971581104541921161069920043E+000000000000001729");
+ return val;
+ }
+
+ static const e_float& A000142_715(void)
+ {
+ static const e_float val("+1.36319787081421377246779991559707906619889069038157287114278521674939133066279289545773038691211976293703301607301099022816171030948802621618019858207548174891412699537260290615632096263049377502214796917517008873003467023868604532778759565756736864556383299364292559543774908821410207103293611352187421611961024975260594369493904048971786798700039241839138159000455489520957006136755093263300779680489747473630164992831E+000000000000001732");
+ return val;
+ }
+
+ static const e_float& A000142_716(void)
+ {
+ static const e_float val("+9.76049675502977061086944739567508611398405734313206175738234215192564192754559713147734957029077750262915639508275869003363784581593426770785022184766044932222514928686783680807925809243433542915857945929421783530704823890899208454695918490818235950223704423448334726333428347161297082859582257281661938741640938822865855685576352990637993478692280971568229218443261304970052163939166467765233582512306591911191981348670E+000000000000001734");
+ return val;
+ }
+
+ static const e_float& A000142_717(void)
+ {
+ static const e_float val("+6.99827617335634552799339378269903674372656911502568828004313932293068526205019314326925964189848746938510513527433798075411833545002486994652860906477254216403543203868423899139282805227541850270670147231395418791515358729774732462016973557916675176310396071612455998781068124914650008410320478470951610077756553135994818526558245094287441324222365456614420349623818355663527401544382357387672478661323826400324650626997E+000000000000001737");
+ return val;
+ }
+
+ static const e_float& A000142_718(void)
+ {
+ static const e_float val("+5.02476229246985608909925673597790838199567662458844418507097403386423201815203867686732842288311400301850548712697467018145696485311785662160754130850668527377744020377528359582005054153375048494341165712141910692308027567978257907728187014584172776590864379417743407124806913688718706038610103542143256035829205151644279702068819977698382870791658397849153811029901579366412674308866532604348839678830507355433099150184E+000000000000001740");
+ return val;
+ }
+
+ static const e_float& A000142_719(void)
+ {
+ static const e_float val("+3.61280408828582652806236559316811612665489149307909136906603033034838282105131580866760913605295896817030544524429478786046755772939173891093582220081630671184597950651442890539461633936276659867431298147030033787769471821376367435656566463486020226368831488801357509722736170942188749641760664446801001089761198504032237105787481563965137284099202388053541590130499235564450712828075036942526815729079134788556398288982E+000000000000001743");
+ return val;
+ }
+
+ static const e_float& A000142_720(void)
+ {
+ static const e_float val("+2.60121894356579510020490322708104361119152187501694578572754183785083563115694738224067857795813045708261992057589224725953664156516205201587379198458774083252910524469038881188412376434119195104550534665861624327194019711390984553672727853709934562985558671936977407000370043078375899742067678401696720784628062922903210716166986726054898844551425719398549944893959449606404513236214026598619307324936977047760606768067E+000000000000001746");
+ return val;
+ }
+
+ static const e_float& A000142_721(void)
+ {
+ static const e_float val("+1.87547885831093826724773522672543244366908727188721791150955766509045249006415906259552925470781205955656896273521831027412591856848183950344500402088776114025348488142177033336845323408999939670380935494086231139906888211912899863198036782524862819912587802466560710447266801059509023714030796127623335685716833367413214926356397429485582066921577943686354510268544763166217654043310313177604520581279560451435397479776E+000000000000001749");
+ return val;
+ }
+
+ static const e_float& A000142_722(void)
+ {
+ static const e_float val("+1.35409573570049742895286483369576222432908101030257133210990063419530669782632284319397212189904030699984279109482762001791891320644388812148729290308096354326301608438651818069202323501297956442015035426730258883012773289001113701228982556982950955976888393380856832942926630364965515121530234804144048365087553691272341176829318944088590252317379275341547956413889319006009146219270046114230463859683842645936356980399E+000000000000001752");
+ return val;
+ }
+
+ static const e_float& A000142_723(void)
+ {
+ static const e_float val("+9.79011216911459641132921274762036088189925570448759073115458158523206742528431415629241844133006141960886337961560369272955374248258931111835312768927536641779160629011452644640332798914384225075768706135259771724182350879478052059885543886986735411712903084143594902177359537538700674328663597633961469679583013187899026708475975965760507524254652160719391724872419776413446127165322433405886253705514182330119860968281E+000000000000001754");
+ return val;
+ }
+
+ static const e_float& A000142_724(void)
+ {
+ static const e_float val("+7.08804121043896780180235002927714127849506113004901568935591706770801681590584344915571095152296446779681708684169707353619690955739466124968766444703536528648112295404291714719600946414014178954856543241928074728308022036742109691357133774178396438080141832919962709176408305178019288213952444686988104048018101548038895336936606599210607447560368164360839608807631918123334996067693441785861647682792268007006779341036E+000000000000001757");
+ return val;
+ }
+
+ static const e_float& A000142_725(void)
+ {
+ static const e_float val("+5.13882987756825165630670377122592742690891931928553637478303987408831219153173650063789043985414923915269238796023037831374275942911112940602355672410063983269881414168111493171710686150160279742270993850397854178023315976638029526233921986279337417608102828866972964152896021254063983955115522398066375434813123622328199119279039784427690399481266919161608716385533140639417872149077745294749694570024394305079915022251E+000000000000001760");
+ return val;
+ }
+
+ static const e_float& A000142_726(void)
+ {
+ static const e_float val("+3.73079049111455070247866693791002331193587542580129940809248694858811465105204069946310845933411234762485467365912725465577724334553467994877310218169706451853933906686048944042661958145016363092888741535388842133244927399039209436045827362038798965183482653757422371975002511430450452351413869260996188565674327749810272560596582883494503230023399783311327928095897060104217375180230443083988278257837710265488018306154E+000000000000001763");
+ return val;
+ }
+
+ static const e_float& A000142_727(void)
+ {
+ static const e_float val("+2.71228468704027836070199086386058694777738143455754466968323801162355935131483358850967984993589967672326934775018551413475005591220371232275804528609376590497809950160757582319015243571426895968530115096227688230869062219101505260005316492202206847688391889281646064425826825809937478859477882952744229087245236274112068151553715756300503848227011642467335403725717162695766031756027532122059478293448015363009789308574E+000000000000001766");
+ return val;
+ }
+
+ static const e_float& A000142_728(void)
+ {
+ static const e_float val("+1.97454325216532264659104934889050729798193368435789251952939727246195120775719885243504693075333496465454008516213505429009804070408430257096785696827626157882405643717031519928243097319998780265089923790053757032072677295505895829283870406323206585117149295397038334902001929189634484609699898789597798775514532007553585614331105070586766801509264475716220173912322094442517671118388043384859300197630155184271126616642E+000000000000001769");
+ return val;
+ }
+
+ static const e_float& A000142_729(void)
+ {
+ static const e_float val("+1.43944203082852020936487497534117982022882965589690364673693061162476243045499796342514921251918118923315972208319645457748147167327745657423556772987339469096273714269715978027689217946279110813250554442949188876380981748423798059547941526209617600550401836344440946143559406379243539280471226217616795307350093833506563912847375596457752998300253802797124506782082806848595382245304883627562429844072383129333651303532E+000000000000001772");
+ return val;
+ }
+
+ static const e_float& A000142_730(void)
+ {
+ static const e_float val("+1.05079268250481975283635873199906126876704564880473966211795934648607657423214851330035892513900226814020659712073341184156147432149254329919196444280757812440279811416892663960213129100783750893672904743352907879758116676349372583469997314133020848401793340531441890684798366656847783674743995138860260574365568498459791656378584185414159688759185276041900889950920448999474629039072565048120573786172839684413565451578E+000000000000001775");
+ return val;
+ }
+
+ static const e_float& A000142_731(void)
+ {
+ static const e_float val("+7.68129450911023239323378233091313787468710369276264693008228282281321975763700563222562374276610658010491022495256124056181437729011049151709326007692339608938445421457485373549157973726729219032748933673909756601031832904113913585165680366312382401817109319284840220905876060261557298662378604465068504798612305723741077008127450395377507324829644367866295505541228482186159538275620450501761394376923458093063163451037E+000000000000001777");
+ return val;
+ }
+
+ static const e_float& A000142_732(void)
+ {
+ static const e_float val("+5.62270758066869011184712866622841692427095990310225755282023102629927686259028812278915657970479001663679428466527482809124812417636087979051226637630792593742942048506879293437983636767965788331972219449301941831955301685811384744341278028140663918130124021716503041703101276111459942620861138468430145512584207789778468369949293689416335361775299677278128310056179248960268782017754169767289340683907971324122235646159E+000000000000001780");
+ return val;
+ }
+
+ static const e_float& A000142_733(void)
+ {
+ static const e_float val("+4.12144465663014985198394531234542960549061360897395478621722934227736994027868119400445177292361108219477021065964644899088487502127252488644549125383370971213576521555542522090042005750918922847335636856338323362823236135699745017602156794627106651989380907918196729568373235389700137941091214497359296660724224309907617315172832274342173820181294663444868051271179389487877017219013806439423086721304542980581598728635E+000000000000001783");
+ return val;
+ }
+
+ static const e_float& A000142_734(void)
+ {
+ static const e_float val("+3.02514037796652999135621585926154533043011038898688281308344633723158953616455199639926760132593053433096133462418049355930949826561403326665099058031394292870765166821768211214090832221174489369944357452552329348312255323603612842919983087256296282560205586411956399503185954776039901248760951441061723748971580643472191109336858889367155584013070282968533149633045671884101730638756133926536545653437534547746893466818E+000000000000001786");
+ return val;
+ }
+
+ static const e_float& A000142_735(void)
+ {
+ static const e_float val("+2.22347817780539954364681865655723581786613113590535886761633305786521830908094571735346168697455894273325658094877266276609248122522631445098847807653074805260012397613999635242356761682563249686909102727625962071009507662848655439546187569133377767681751106012787953634841676760389327417839299309180366955494111772952060465362591283684859354249606657981871864980288568834814772019485758436004361055276587892593966698111E+000000000000001789");
+ return val;
+ }
+
+ static const e_float& A000142_736(void)
+ {
+ static const e_float val("+1.63647993886477406412405853122612556194947251602634412656562113058880067548357604797214780161327538185167684357829667979584406618176656743592751986432663056671369124643903731538374576598366551769565099607532708084262997639856610403505994050882166037013768814025411933875243474095646544979529724291556750079243666264892716502506867184792056484727710500274657692625492386662423672206341518208899209736683568688949159489810E+000000000000001792");
+ return val;
+ }
+
+ static const e_float& A000142_737(void)
+ {
+ static const e_float val("+1.20608571494333848525943113751365453915676124431141562127886277324394609783139554735547292978898395642468583371720465300953707677596196020027858214000872672766799044862557050143782062952996148654169478410751605858101829260574321867383917615500156369279147615936728595266054440408491503649913406802877324808402582037225932062347561115191745629244322638702422719464987888970206246416073698919958717575935790123755530543990E+000000000000001795");
+ return val;
+ }
+
+ static const e_float& A000142_738(void)
+ {
+ static const e_float val("+8.90091257628183802121460179485077049897689798301824728503800726654032220199569913948339022184270159841418145283297033921038362660659926627805593619326440325018976951085671030061111624593111577067770750671346851232791499943038495381293312002391154005280109405613057033063481770214667296936360942205234657086011055434727378620125001030115082743823101073623879669651610620600122098550623898029295335710406131113315815414645E+000000000000001797");
+ return val;
+ }
+
+ static const e_float& A000142_739(void)
+ {
+ static const e_float val("+6.57777439387227829767759072639471939874392760945048474364308736997329810727482166407822537394175648122808009364356508067647350006227685777948333684682239400189023966852310891215161490574309455453082584746125323061032918457905448086775757569767062809902000850748049147433913028188639132435970736289668411586562169966263532800272375761255046147685271693408047075872540248623490230828911060643649253089990130892740387591423E+000000000000001800");
+ return val;
+ }
+
+ static const e_float& A000142_740(void)
+ {
+ static const e_float val("+4.86755305146548594028141713753209235507050643099335871029588465378024059938336803141788677671689979610877926929623815970059039004608487475681766926664857156139877735470710059499219503024988997035281112712132739065164359658850031584214060601627626479327480629553556369101095640859592958002618344854354624574056005775035014272201558063328734149287101053121954836145679783981382770813394184876300447286592696860627886817653E+000000000000001803");
+ return val;
+ }
+
+ static const e_float& A000142_741(void)
+ {
+ static const e_float val("+3.60685681113592508174853009891128043510724526536607880432925052845115828414307571128065410154722274891660543854851247633813747902414889219480189292658659152699649401983796154088921651741516846803143304519690359647286790507207873403902618905806071221181663146499185269503911869876958381879940193537076776809375500279300945575701354524926592004621741880363368533583948719930204633172725090993338631439365188373725264131881E+000000000000001806");
+ return val;
+ }
+
+ static const e_float& A000142_742(void)
+ {
+ static const e_float val("+2.67628775386285641065740933339217008284957598690163047281230389211075944683416217777024534334803927969612123540299625744289800943591847800854300455152725091303139856271976746333979865592205500327932331953610246858286798556348242065695743228108104846116794054702395469971902607448703119354915623604510968392556621207241301617170405057495531267429332475229619451919289950188211837814162017517057264528008969773304145985856E+000000000000001809");
+ return val;
+ }
+
+ static const e_float& A000142_743(void)
+ {
+ static const e_float val("+1.98848180112010231311845513471038237155723495826791144129954179183829426899778249808329229010759318481421807790442621928007322101088742916034745238178474742838232913210078722526147040135008686743653722641532413415707091327366743854811937218484321900664777982643879834189123637334386417680702308338151649515669569556980287101557610957719179731699994029095607252776032432989841395495922379015173547544310664541564980467491E+000000000000001812");
+ return val;
+ }
+
+ static const e_float& A000142_744(void)
+ {
+ static const e_float val("+1.47943046003335612096013062022452448443858280895132611232685909312769093613435017857396946384004932950177824996089310714437447643210024729529850457204785208671645287428298569559453397860446462937278369645300115581286075947560857427980081290552335494094594819087046596636707986176783494754442517403584827239658159750393333603558862552543069720384795557647131796065368130144441998248966249987289119372967134418924345467813E+000000000000001815");
+ return val;
+ }
+
+ static const e_float& A000142_745(void)
+ {
+ static const e_float val("+1.10217569272485031011529731206727074090674419266873795368351002438012974742009088303760725056083675047882479622086536482255898494191468423499738590617564980460375739134082434321792781406032614888272385385748586108058126580932838783845160561461489943100473140219849714494347449701703703592059675465670696293545329014043033534651352601644586941686672690447113188068699256957609288695479856240530393932860515142098637373521E+000000000000001818");
+ return val;
+ }
+
+ static const e_float& A000142_746(void)
+ {
+ static const e_float val("+8.22223066772738331346011794802183972716431167730878513447898478187576791575387798746055008918384215857203297980765562157629002766668354439308049886007034754234403013940254960040574149289003307066511994977684452366113624293758977327484897788502714975529529626040078870127831974774709628796765178973903394349848154444761030168499090408268618584982578270735464382992496456903765293668279727554356738739139442960055834806465E+000000000000001820");
+ return val;
+ }
+
+ static const e_float& A000142_747(void)
+ {
+ static const e_float val("+6.14200630879235533515470810717231427619174082294966249545580163206119863306814685663303091662033009245330863591631874931748865066701260766163113264847254961413099051413370455150308889518885470378684460248330285917486877347437956063631218648011528086720558630651938915985490485156708092711183588693505835579336571370236489535868820534976658082981985968239391894095394853307112674370204956483104483838137163891161708600429E+000000000000001823");
+ return val;
+ }
+
+ static const e_float& A000142_748(void)
+ {
+ static const e_float val("+4.59422071897668179069572166416489107859142213556634754660093962078177657753497384876150712563200690915507485966540642448948151069892543053090008722105746711136998090457201100452431049360126331843255976265751053866280184255883591135596151548712623008866977855727650309157146882897217653347965324342742365013343755384936894172829877760162540246070525504243065136783355350273720280428913307449362153910926598590588958033121E+000000000000001826");
+ return val;
+ }
+
+ static const e_float& A000142_749(void)
+ {
+ static const e_float val("+3.44107131851353466123109552645950341786497517953919431240410377596555065657369541272236883709837317495715106988938941194262165151349514746764416532857204286641611569752443624238870855970734622550598726223047539345843858007656809760561517509985754633641366413940010081558703015290016022357626027932714031394994472783317733735449578442361742644306823602678055787450733157355016490041256067279572253279284022344351129566808E+000000000000001829");
+ return val;
+ }
+
+ static const e_float& A000142_750(void)
+ {
+ static const e_float val("+2.58080348888515099592332164484462756339873138465439573430307783197416299243027155954177662782377988121786330241704205895696623863512136060073312399642903214981208677314332718179153141978050966912949044667285654509382893505742607320421138132489315975231024810455007561169027261467512016768219520949535523546245854587488300301587183831771306983230117702008541840588049868016262367530942050459679189959463016758263347175106E+000000000000001832");
+ return val;
+ }
+
+ static const e_float& A000142_751(void)
+ {
+ static const e_float val("+1.93818342015274839793841455527831530011244726987545119646161145181259640731513394121587424749565869079461534011519858627668164521497614181115057612131820314450887716663063871352544009625516276151624732545131526536546553022812698097636274737499476297398499632651710678437939473362101524592932860233101178183230636795203713526491975057660251544405818394208414922281625450880213038015737479895219071659556725585455773728504E+000000000000001835");
+ return val;
+ }
+
+ static const e_float& A000142_752(void)
+ {
+ static const e_float val("+1.45751393195486679524968774556929310568456034694633929973913181176307249830098072379433743411673533547755073576662933688006459720166205864198523324323128876467067562930624031257113095238388239666021798873938907955483007873155148969422478602599606175643671723754086430185330483968300346493885510895292085993789438869993192571921965243360509161393175432444728021555782339061920204587834584881204741887986657640262741843835E+000000000000001838");
+ return val;
+ }
+
+ static const e_float& A000142_753(void)
+ {
+ static const e_float val("+1.09750799076201469682301487241367770858047394125059349270356625425759359122063848501713608788990170761459570403227189067068864169285153015741488063215316043979701874886759895536606160714506344468514414552075997690478704928485827173975126387757503450259684807986827081929553854428130160909895789704154940753323447469104874006657239828250463398529061100630880200231504101313625914054639442415547170641653953203117844608408E+000000000000001841");
+ return val;
+ }
+
+ static const e_float& A000142_754(void)
+ {
+ static const e_float val("+8.27521025034559081404553213799912992269677351702947493498488955710225567780361417702920610268985887541405160840333005565699235836410053738690819996643482971606952136646169612346010451787377837292598685722653022586209435160783136891772452963691576014958023452220676197748836062388101413260614254369328253280058793917050750010195588305008494024909120698756836709745540923904739391971981395813225666638070807151508548347396E+000000000000001843");
+ return val;
+ }
+
+ static const e_float& A000142_755(void)
+ {
+ static const e_float val("+6.24778373901092106460437676418934309163606400535725357591359161561220303674172870365705060753084345093760896434451419202102923056489590572711569097465829643563248863167858057321237891099470267155912007720603032052588123546391268353288201987587139891293307706426610529300371227103016567011763762048842831226444389407373316257697669170281412988806386127561411715857883397548078240938845953838985378311743459399388954002284E+000000000000001846");
+ return val;
+ }
+
+ static const e_float& A000142_756(void)
+ {
+ static const e_float val("+4.72332450669225632484090883372714337727686438805008370339067526140282549577674689996473025929331764890883237704445272916789809830706130472969946237684167210533816140554900691334855845671199521969869477836775892231756621401071798875085880702615877757817740626058517560151080647689880524660893404108925180407191958391974227090819437892732748219537627912436427257188559848546347150149767541102272946003678055305938049225727E+000000000000001849");
+ return val;
+ }
+
+ static const e_float& A000142_757(void)
+ {
+ static const e_float val("+3.57555665156603803790456798713144753659858634175391336346674117288193890030299740327330080628504146022398610942265071598009886041844540768038249301926914578374098818400059823340485875173098038131191194722439350419439762400611351748440011691880219462668029653926297793034368050301239557168296306910456361568244312502724489907750314484798690402189984329714375433691739805349584792663374028614420620124784287866595103263875E+000000000000001852");
+ return val;
+ }
+
+ static const e_float& A000142_758(void)
+ {
+ static const e_float val("+2.71027194188705683273166253424563723274172844704946632950778980904450968642967203168116201116406142684978147094236924271291493619718161902172992970860601250407566904347245346092088293381208312903442925599609027617935339899663404625317528862445206352702366477676133727120050982128339584333568600638125922068729188877065163350074738379477407324860008121923496578738338772454985272838837513689730830054586490202879088274017E+000000000000001855");
+ return val;
+ }
+
+ static const e_float& A000142_759(void)
+ {
+ static const e_float val("+2.05709640389227613604333186349243865965097189131054494409641246506478285200012107204600196647352262297898413644525825521910243657366084883749301664883196349059343280399559217683895014676337109493713180530103251962012922983844524110616004406595911621701096156556185498884118695435409744509178567884337574850165454357692458982706726430023352159568746164539933903262399128293333822084677672890505700011431146063985227999979E+000000000000001858");
+ return val;
+ }
+
+ static const e_float& A000142_760(void)
+ {
+ static const e_float val("+1.56339326695812986339293221625425338133473863739601415751327347344923496752009201475496149451987719346402794369839627396651785179598224511649469265311229225285100893103665005439760211154016203215222017202878471491129821467721838324068163349012892832492833078982700979151930208530911405826975711592096556886125745311846268826857112086817747641272247085050349766479423337502933704784355031396784332008687671008628773279984E+000000000000001861");
+ return val;
+ }
+
+ static const e_float& A000142_761(void)
+ {
+ static const e_float val("+1.18974227615513682604202141656948682319573610305836677386760111329486781028279002322852569732962654422612526515447956448852008521674248853365246110901845440441961779651889069139657520688206330646783955091390516804749794136936318964615872308598811445527045973105835445134618888692023579834328516521585479790341692182315010577238262298068305955008180031723316172290841159839732549340894178892952876658611317637566496466068E+000000000000001864");
+ return val;
+ }
+
+ static const e_float& A000142_762(void)
+ {
+ static const e_float val("+9.06583614430214261444020319425948959275150910530475481687112048330689271435485997700136581365175426700307452047713428140252304935157776262643175365072062256167748760947394706844190307644132239528493737796395738052193431323454750510372946991522943214916090315066466091925795931833219678337583295894481356002403694429240380598555558711280491377162331841731669232856209637978762025977613643164300920138618240398256703071438E+000000000000001866");
+ return val;
+ }
+
+ static const e_float& A000142_763(void)
+ {
+ static const e_float val("+6.91723297810253481481787503721999055926940144734752792527266492876315914105275816245204211581628850572334585912405345671012508665525383288396742803549983501455992304602862161322117204732472898760240721938649948133823588099795974639414558554532005672980976910395713628139382295988746614571576054767489274629834018849510410396697891296707014920774859195241263624669287953777795425820919209734361602065765717423869864443507E+000000000000001869");
+ return val;
+ }
+
+ static const e_float& A000142_764(void)
+ {
+ static const e_float val("+5.28476599527033659852085652843607278728182270577351133490831600557505358376430723611336017648364441837263623637077684092653556620461392832335111501912187395112378120716586691250097544415609294652823911561128560374241221308244124624512722735662452334157466359542325211898488074135402413532684105842361805817193190401025953543077188950684159399471992425164325409247335996686235705327182276237052263978245008111836576434839E+000000000000001872");
+ return val;
+ }
+
+ static const e_float& A000142_765(void)
+ {
+ static const e_float val("+4.04284598638180749786845524425359568227059436991673617120486174426491599157969503562672053500998798005506672082364428330879970814652965516736360298962823357260969262348188818806324621477941110409410292344263348686294534300806755337752232892781776035630461765049878787102343376713582846352503340969406781450152790656784854460454049547273381940596074205250708938074212037464970314575294441321344981943357431205554980972652E+000000000000001875");
+ return val;
+ }
+
+ static const e_float& A000142_766(void)
+ {
+ static const e_float val("+3.09682002556846454336723671709825429261927528735621990714292409610692564955004639729006792981765079272218110815091152101454057644024171585820051989005522691661902454958712635205644660052102890573608283935705725093701613274417974588718210395870840443292933712028207150920395026562604460306017559182565594590817037643097198516707801953211410566496592841222043046564846420698167260964675542052150256168611792303455115425052E+000000000000001878");
+ return val;
+ }
+
+ static const e_float& A000142_767(void)
+ {
+ static const e_float val("+2.37526095961101230476267056201436104243898414540222066877862278171401197320488558672148210217013815801791290995174913661815262212966539606323979875567235904504679182953332591202729454259962917069957553778686291146869137381478586509546867373632934620005680157125634884755942985373517621054715467893027811051156667872255551262314884098113151904502886709217307016715237204675494289159906140753999246481325244696750073531015E+000000000000001881");
+ return val;
+ }
+
+ static const e_float& A000142_768(void)
+ {
+ static const e_float val("+1.82420041698125745005773099162702928059313982366890547362198229635636119542135213060209825446666610535775711484294333692274121379558302417656816544435637174659593612508159430043696220871651520309727401302031071600795497508975554439331994142950093788164362360672487591492564212766861532970021479341845358887288320925892263369457830987350900662658216992678891788837302173190779614074807916099071421297657787927104056471819E+000000000000001884");
+ return val;
+ }
+
+ static const e_float& A000142_769(void)
+ {
+ static const e_float val("+1.40281012065858697909439513256118551677612452440138830921530438589804175927901978843301355768486623502011522131422342609358799340880334559178091922671004987313227488018774601703602393850300019118180371601261894061011737584402201363846303495928622123098394655357142957857781879617716518853946517613879080984324718792011150531113072029272842609584168867370067785615885371183709523223527287480185922977898838915943019426829E+000000000000001887");
+ return val;
+ }
+
+ static const e_float& A000142_770(void)
+ {
+ static const e_float val("+1.08016379290711197390268425207211284791761588378906899809578437714149215464484523709342043941734700096548872041195203809206275492477857610567130780456673840231185165774456443311773843264731014720998886132971658426979037939989695050161653691865039034785763884625000077550492047305641719517538818562686892357930033469848585908957065462540088809379810027874952194924231735811456332882116011359743160692982105965276124958658E+000000000000001890");
+ return val;
+ }
+
+ static const e_float& A000142_771(void)
+ {
+ static const e_float val("+8.32806284331383331878969558347599005744481846401372197531849754776090451231175677799027158790774537744391803437615021368980384047004282177472578317320955308182437628121059177933776331571076123498901412085211486472008382517320548836746349964279450958198239550458750597914293684726497657480224291118315940079640558052532597358058974716184084720318335314915881422865826683106328326521114447583619768942892036992278923431255E+000000000000001892");
+ return val;
+ }
+
+ static const e_float& A000142_772(void)
+ {
+ static const e_float val("+6.42926451503827932210564499044346432434739985421859336494588010687141828350467623260848966586477943138670472253838796496852856484287305841008830460971777497916841848909457685364875327972870767341151890129783267556390471303371463701968182172423736139729040932954155461589834724608856191574733152743339905741482510816555165160421528480894113404085754863115060458452418199358085468074300353534554461623912652558039328888929E+000000000000001895");
+ return val;
+ }
+
+ static const e_float& A000142_773(void)
+ {
+ static const e_float val("+4.96982147012458991598766357761279792272054008731097267110316532261160633314911472780636251171347450046192275052217389692067258062354087415099825946331184005889718749207010790787048628523029103154710411070322465821089834317506141441621404819283548036010548641173562171808942242122645836087268727070601747138165980861197142669005841515731149661358288509187941734383719268103800066821434173282210598835284480427364401231142E+000000000000001898");
+ return val;
+ }
+
+ static const e_float& A000142_774(void)
+ {
+ static const e_float val("+3.84664181787643259497445160907230559218569802757869284743384995970138330185741479932212458406622926335752820890416259621660057740262063659287265282460336420558642311886226352069175638476824525841745858168429588545523531761749753475814967330125466179872164648268337120980121295402927877131545994752645752284940469186566588425810521333175909837891315306111466902412998713512341251719790050120431003498510187850780046552904E+000000000000001901");
+ return val;
+ }
+
+ static const e_float& A000142_775(void)
+ {
+ static const e_float val("+2.98114740885423526110519999703103683394391597137348695676123371876857205893949646947464655265132767910208436190072601206786544748703099335947630593906760725932947791711825422853611119819539007527353040080532931122780737115356058943756599680847236289400927602407961268759594003937269104776948145933300458020828863619589106030003154033211330124365769362236386849370074002972064470082837288843334027711345395584354536078501E+000000000000001904");
+ return val;
+ }
+
+ static const e_float& A000142_776(void)
+ {
+ static const e_float val("+2.31337038927088656261763519769608458314047879378582587844671736576441191773704926031232572485743027898321746483496338536466358724993605084695361340871646323323967486368376528134402228979962269841225959102493554551277852001516301740355121352337455360575119819468577944557444947055320825306911761244241155424163198168801146279282447529771992176507837025095436195111177426306322028784281736142427205504004026973459119996917E+000000000000001907");
+ return val;
+ }
+
+ static const e_float& A000142_777(void)
+ {
+ static const e_float val("+1.79748879246347885915390254860985772110015202277158670755309939319894806008168727526267708821422332676995997017676655042834360729320031150808295761857269193222722736908228562360430531917430683666632570222637491886342891005178166452255929290766202815166868099727085062921134723861984281263470438486775377764574804977158490659002461730632837921146589368499153923601384860240012216365386908982665938676611128958377736237604E+000000000000001910");
+ return val;
+ }
+
+ static const e_float& A000142_778(void)
+ {
+ static const e_float val("+1.39844628053658655242173618281846930701591827371629445847631132790878159074355270015436277463066574822702885679752437623325132647410984235328854102724955432327278289314601821516414953831761071892640139633211968687574769202028613499855112988216105790199823381587672178952642815164623770822980001142711243900839198272229305732703915226432347902652046528692341752561877421266729504332271015188514100290403458329617878792856E+000000000000001913");
+ return val;
+ }
+
+ static const e_float& A000142_779(void)
+ {
+ static const e_float val("+1.08938965253800092433653248641558759016540033522499338315304652444094085918922755342024860143728861786885547944527148908570278332333156719321177346022740281782949787376074818961287249034941875004366668774272123607620745208380289916387133017820346410565662414256796627404108753013241917471101420890172058998753735454066629165776349961390799016165944245851334225245702511166782283874839120831852484126224294038772327579635E+000000000000001916");
+ return val;
+ }
+
+ static const e_float& A000142_780(void)
+ {
+ static const e_float val("+8.49723928979640720982495339404158320329012261475494838859376289063933870167597491667793909121085121937707273967311761486848170992198622410705183298977374197907008341533383587898040542472546625034060016439322564139441812625366261347819637538998702002412166831203013693752048273503286956274591082943342060190279136541719707493055529698848232326094365117640406956916479587100901814223745142488449376184549493502424155121152E+000000000000001918");
+ return val;
+ }
+
+ static const e_float& A000142_781(void)
+ {
+ static const e_float val("+6.63634388533099403087328860074647648176958576212361469149172881758932352600893640992547043023567480233349380968470485721228421544907124102760748156501329248565373514737572582148369663671058914151600872839110922592904055660411050112647136917957986263883902295169553694820349701606067112850455635778750149008608005639083091552076368694800469446679699156877157833351770557525804316908744956283478962800133154425393265149619E+000000000000001921");
+ return val;
+ }
+
+ static const e_float& A000142_782(void)
+ {
+ static const e_float val("+5.18962091832883733214291168578374460874381606598066668874653193535485099733898827256171787644429769542479215917343919834000625648117371048358905058384039472378122088524781759240025076990768070866551882560184741467650971526441441188090061069843145258357211594822590989349513466655944482249056307178982616524731460409762977593723720319333967107303524740677937425681084575985178975822638555813680548909704126760657533347002E+000000000000001924");
+ return val;
+ }
+
+ static const e_float& A000142_783(void)
+ {
+ static const e_float val("+4.06347317905147963106789984996867202864640797966286201728853450538284833091642781741582509725588509551761226063280289230022489882475901530865022660714702906872069595314904117484939635283771399488510124044624652569170710705203648450274517817687182737293696678746088744660669044391604529601011088521143388738864733500844411455885673010038496245018659871950825004308289222996395138069125989202111869796298331253594848610703E+000000000000001927");
+ return val;
+ }
+
+ static const e_float& A000142_784(void)
+ {
+ static const e_float val("+3.18576297237636003075723348237543887045878385605568382155421105222015309143847940885400687624861391488580801233611746756337632067861106800198177766000327078987702562726884828108192674062476777198991937250985727614229837192879660385015221969066751266038258196136933575813964530803017951207192693400576416771269951064662018581414367639870181056094629339609446803377698750829173788246194775534455705920297891702818361310791E+000000000000001930");
+ return val;
+ }
+
+ static const e_float& A000142_785(void)
+ {
+ static const e_float val("+2.50082393331544262414442828366471951331014532700371179992005567599282017677920633595039539785516192318535928968385221203725041173270968838155569546310256757005346511740604590064931249139044270101208670742023796177170422196410533402236949245717399743840032683967492857013962156680369091697646264319452487165446911585759684586410278597298092129034284031593415740651493519400901423773262898794547729147433844986712413628971E+000000000000001933");
+ return val;
+ }
+
+ static const e_float& A000142_786(void)
+ {
+ static const e_float val("+1.96564761158593790257752063096046953746177422702491747473716376133035665894845618005701078271415727162369240169150783866127882362190981506790277663399861811006202358228115207791035961823288796299550015203230703795255951846378679254158242107133876198658265689598449385612974255150770106074349963755089654912041272506407112084918478977476300413420947248832424772152073906249108519085784638452514515109883002159555957112371E+000000000000001936");
+ return val;
+ }
+
+ static const e_float& A000142_787(void)
+ {
+ static const e_float val("+1.54696467031813312932850873656588952598241631666861005261814788016699069059243501370486748599604177276784592013121666902642643419044302445843948521095691245261881255925526668531545301954928282687745861964942563886866434103100020573022536538314360568344055097713979666477410738803656073480513421475255558415776481462542397210830842955273848425362285484831118295683682164218048404520512510462128923391477922699570538247436E+000000000000001939");
+ return val;
+ }
+
+ static const e_float& A000142_788(void)
+ {
+ static const e_float val("+1.21900816021068890591086488441392094647414405753486472146310052957158866418683879079943557896488091694106258506339873519282403014206910327325031434623404701266362429669315014802857697940483486757943739228374740342850750073242816211541758792191716127855115416998615977184199662177280985902644576122501380031631867392483409002134704248755792559185480962046921216998741545403822142762163858244157591632484603087261584138980E+000000000000001942");
+ return val;
+ }
+
+ static const e_float& A000142_789(void)
+ {
+ static const e_float val("+9.61797438406233546763672393802583626768099661395008265234386317831983456043415805940754671803291043466498379615021602067138159782092522482594498019178663092991599570090895466794547236750414710520176102511876701305092418077885819909064476870392640248776860640119080059983335334578746978771865705606535888449575433726694097026842816522683203291973444790550208402120070793236156706393472841546403397980303518358493898856550E+000000000000001944");
+ return val;
+ }
+
+ static const e_float& A000142_790(void)
+ {
+ static const e_float val("+7.59819976340924501943301191104041065146798732502056529535165191087266930274298486693196190724599924338533719895867065633039146227853092761249653435151143843463363660371807418767692317032827621310939120984382594031023010281529797728160936727610185796533719905694073247386834914317210113229773907429163351875164592644088336651205825052919730600659021384534664637674855926656563798050843544821658684404439779503210180096674E+000000000000001947");
+ return val;
+ }
+
+ static const e_float& A000142_791(void)
+ {
+ static const e_float val("+6.01017601285671281037151242163296482531117797409126714862315666150028141846970102974318186863158540151780172437630848915733964666231796374148475867204554780179520655354099668245244622772966648456952844698646631878539201132690070002975300951539656965058172445404011938682986417224913199564751160776468211333255192781473874291103807616859506905121285915166919728400811037985341964258217243953932019363911865587039252456469E+000000000000001950");
+ return val;
+ }
+
+ static const e_float& A000142_792(void)
+ {
+ static const e_float val("+4.76005940218251654581423783793330814164645295548028358170954007590822288342800321555660003995621563800209896570603632341261300015655582728325592886826007385902180359040446937250233741236189585577906653001328132447803047297090535442356438353619408316326072576759977455436925242442131254055282919334962823375938112682927308438554215632552729468856058444812200424893442342084390835692508057211514159336218197544935087945524E+000000000000001953");
+ return val;
+ }
+
+ static const e_float& A000142_793(void)
+ {
+ static const e_float val("+3.77472710593073562083069060548111335632563719369586488029566528019522074655840654993638383168527900093566447980488680446620210912414877103562195159253023857020429024719074421239435356800298341363279975830053209031107816506592794605788655614420190794846575553370662122161481717256610084465839355032625518937118923357561355591773492996614314468802854346736074936940499777272921932704158889368730728353621030653133524740800E+000000000000001956");
+ return val;
+ }
+
+ static const e_float& A000142_794(void)
+ {
+ static const e_float val("+2.99713332210900408293956834075200400492255593179451671495475823247500527276737480064948876235811152674291759696508012274616447464457412420228382956446900942474220645626945090464111673299436883042444300809062247970699606306234678916996192557849631491108180989376305724996216483501748407065876447895904662036072425145903716339868153439311765688229466351308443499930756823154700014567102158158772198312775098338588018644195E+000000000000001959");
+ return val;
+ }
+
+ static const e_float& A000142_795(void)
+ {
+ static const e_float val("+2.38272099107665824593695683089784318391343196577664078838903279481762919185006296651634356607469866376061948958723869758320075734243642874081564450375286249267005413273421346918968780273052322018743219143204487136706187013456569739011973083490457035431003886554163051371992104383889983617371776077244206318677577990993454490195181984252853722142425749290212582444951674407986511580846215736223897658656203179177474822135E+000000000000001962");
+ return val;
+ }
+
+ static const e_float& A000142_796(void)
+ {
+ static const e_float val("+1.89664590889701996376581763739468317439509184475820606755767010467483283671265012134700947859546013635345311371144200327622780284457939727768925302498727854416536308965643392147499149097349648326919602437990771760818124862711429512253530574458403800203079093697113788892105715089576426959427933757486388229667352080830789774195364859465271562825370896435009215626181532828757263218353587726034222536290337730625269958420E+000000000000001965");
+ return val;
+ }
+
+ static const e_float& A000142_797(void)
+ {
+ static const e_float val("+1.51162678939092491112135665700356248999288820027229023584346307342584177085998214671356655444058172867370213162801927661115355886712977963031833466091486099969979438245617783541556821830587669716554923143078645093372045515581009321266063867843347828761854037676599689747008254926392412286664063204716651419044879608422139450033705792993821435571820604458702344854066681664519538785027809417649275361423399171308340156861E+000000000000001968");
+ return val;
+ }
+
+ static const e_float& A000142_798(void)
+ {
+ static const e_float val("+1.20627817793395807907484261228884286701432478381728760820308353259382173314626575307742611044358421948161430103915938273570053997596956414499403105941005907776043591720002991266162343820808960433810828668176758784510892321433645438370318966538991567351959522065926552418112587431261145004757922437363887832397813927520867281126897222809069505586312842358044471193545211968286591950452191915284121738415872538704055445175E+000000000000001971");
+ return val;
+ }
+
+ static const e_float& A000142_799(void)
+ {
+ static const e_float val("+9.63816264169232505180799247218785450744445502270012798954263742542463564783866336708863462244423791365809826530288346805824731440799681751850230816468637203130588297842823900216637127128263593866148521058732302688242029648254827052578848542646542623142156581306753153820719573575776548588015800274537463780858533280891729576203908810244465349634639610440775324836426243626609869684113013403120132689942821584245403006946E+000000000000001973");
+ return val;
+ }
+
+ static const e_float& A000142_800(void)
+ {
+ static const e_float val("+7.71053011335386004144639397775028360595556401816010239163410994033970851827093069367090769795539033092647861224230677444659785152639745401480184653174909762504470638274259120173309701702610875092918816846985842150593623718603861642063078834117234098513725265045402523056575658860621238870412640219629971024686826624713383660963127048195572279707711688352620259869140994901287895747290410722496106151954257267396322405557E+000000000000001976");
+ return val;
+ }
+
+ static const e_float& A000142_801(void)
+ {
+ static const e_float val("+6.17613462079644189319856157617797716837040677854624201569892206221210652313501548563039706606226765507210936840608772633172487907264436066585627907193102719766080981257681555258821071063791310949427972294435659562625492598601693175292526146127904512909493937301367420968317102747357612335200524815923606790774148126395420312431464765604653396045877062370448828155181936915931604493579618988719381027715360071184454246851E+000000000000001979");
+ return val;
+ }
+
+ static const e_float& A000142_802(void)
+ {
+ static const e_float val("+4.95325996587874639834524638409473768903306623639408609659053549389410943155428241947557844698193865936783171346168235651804335301626077725401673581568868381252396946968660607317574498993160631381441233780137398969225645064078557926584605969194579419353414137715696671616590316403380805092830820902370732646200866797369127090570034742014932023628793404021099960180455913406577146803850854428952943584227718777089932305974E+000000000000001982");
+ return val;
+ }
+
+ static const e_float& A000142_803(void)
+ {
+ static const e_float val("+3.97746775260063335787123284642807436429355218782445113556220000159696987353808878283888949292649674347236886590973093228398881247205740413497543885999801310145674748415834467676012322691507986999297310725450331372288192986455082015047438593263247273740791552585704427308122024071914786489543149184603698314899296038287409053727737897837990414973921103428943268024906098465481448883492236106449213698134858178003215641697E+000000000000001985");
+ return val;
+ }
+
+ static const e_float& A000142_804(void)
+ {
+ static const e_float val("+3.19788407309090921972847120852817178889201595901085871299200880128396377832462338140246715231290338175178456819142366955632700522753415292452025284343840253357122497726330912011513907443972421547435037823262066423319707161109885940098140628983650808087596408278906359555730107353819488337592691944421373445179034014783076879197101269861744293639032567156870387492024503166247084902327757829585167813300425975114585375925E+000000000000001988");
+ return val;
+ }
+
+ static const e_float& A000142_805(void)
+ {
+ static const e_float val("+2.57429667883818192188141932286517829005807284700374126395856708503359084155132182202898605761188722231018657739409605399284323920816499310423880353896791403952483610669696384169268695492397799345685205447725963470772364264693458181779003206331838900510515108664519619442362736419824688111762117015259205623369122381900376887753666522238704156379421216561280661931079725048828903346373845052816060089706842909967241227619E+000000000000001991");
+ return val;
+ }
+
+ static const e_float& A000142_806(void)
+ {
+ static const e_float val("+2.07488312314357462903642397422933370178680671468501545875060507053707421829036538855536276243518110118201038137964141951823165080178098444201647565240813871585701790199775285640430568566872626272622275590867126557442525597342927294513876584303462153811475177583602813270544365554378698618080266314298919732435512639811703771529455216924395550041813500548392213516450258389356096097177319112569744432303715385433596429461E+000000000000001994");
+ return val;
+ }
+
+ static const e_float& A000142_807(void)
+ {
+ static const e_float val("+1.67443068037686472563239414720307229734195301875080747521173829192341889416032486856417774928519114865388237777337062555121294219703725444470729585149336794369661344691218655511827468833466209402006176401829771131856118157055742326672698403532893958125860468309967470309329303002383609784790774915639228224075458700328044943624270360057987208883743494942552516307775358520210369550422096523843783756869098316044912318575E+000000000000001997");
+ return val;
+ }
+
+ static const e_float& A000142_808(void)
+ {
+ static const e_float val("+1.35293998974450669831097447094008241625229803915065243997108453987412246648154249379985562142243444811233696124088346544538005729520610159132349504800664129850686366510504673653556594817440697196820990532678455074539743470901039799951540310054578318165695258394453716009938076825925956706110946131836496405052970629865060314448410450926853664778064743913582433176682489684329978596741053991265777275550231439364289153409E+000000000000002000");
+ return val;
+ }
+
+ static const e_float& A000142_809(void)
+ {
+ static const e_float val("+1.09452845170330591893357834699052667474810911367287782393660739275816507538356787748408319773074946852288060164387472354531246635182173618738070749383737281049205270506998280985727285207309524032228181340936870155302652467958941198160796110834153859396047464041113056252039904152174098975243755420655725591687853239560833794388764054799824614805454377826088188439936134154622952684763512678934013815920137234445709925108E+000000000000002003");
+ return val;
+ }
+
+ static const e_float& A000142_810(void)
+ {
+ static const e_float val("+8.86568045879677794336198461062326606545968382075031037388651988134113711060689980762107390161907069503533287331538526071703097744975606311778373070008271976498562691106686075984391010179207144661048268861588648257951484990467423705102448497756646261107984458733015755641523223632610201699474418907311377292671611240442753734548988843878579379924180460391314326363482686652445916746584452699365511908953111599010250393373E+000000000000002005");
+ return val;
+ }
+
+ static const e_float& A000142_811(void)
+ {
+ static const e_float val("+7.19006685208418691206656951921546877908780357862850171322196762376766219670219574398069093421306633367365496025877744644151212271175216718852260559776708572940334342487522407623341109255336994320110146046748393737198654327269080624838085731680640117758575396032475777825275334366046873578273753733829526984356676715999073278719229952385527877118510353377355918680784458875133638481479991139185430158160973506797313069025E+000000000000002008");
+ return val;
+ }
+
+ static const e_float& A000142_812(void)
+ {
+ static const e_float val("+5.83833428389235977259805444960296064861929650584634339113623771049934170372218294411232103858100986294300782773012728651050784364194275975708035574538687361227551486099868194990152980715333639387929438589959695714605307313742493467368525614124679775619963221578370331594123571505230061345558288031869575911297621493391247502320014721337048636220230406942413005968796980606608514446961752805018569288426710487519418212048E+000000000000002011");
+ return val;
+ }
+
+ static const e_float& A000142_813(void)
+ {
+ static const e_float val("+4.74656577280448849512221826752720700732748805925307717699376125863596480512613473356331700436636101857266536394459348393304287688089946368250632922099952824677999358199192842526994373321566248822386633573637232615974114846072647188970611324283364657579030099143215079586022463633752039873938888169909965215884966274127084219386171968447020541247047320844181773852631945233172722245379905030480096831490915626353287006395E+000000000000002014");
+ return val;
+ }
+
+ static const e_float& A000142_814(void)
+ {
+ static const e_float val("+3.86370453906285363502948566976714650396457528023200482207292166452967535137267367312054004155421786911814960625089909592149690178105216343756015198589361599287891477574142973816973419883754926541422719728940707349402929484703134811822077617966658831269330500702577074783022285397874160457386254970306711685730362547139446554580343982315874720575096519167163963916042403419802595907739242694810798820833605319851575623206E+000000000000002017");
+ return val;
+ }
+
+ static const e_float& A000142_815(void)
+ {
+ static const e_float val("+3.14891919933622571254903082086022440073112885338908392998943115659168541136872904359324013386668756333129192909448276317601997495155751320161152386850329703419631554222926523660833337205260265131259516579086676489763387530033054871634993258642826947484504358072600315948163162599267440772769797800799970023870245475918648941982980345587437897268703663121238630591574558787139115664807482796270801038979388335679034132913E+000000000000002020");
+ return val;
+ }
+
+ static const e_float& A000142_816(void)
+ {
+ static const e_float val("+2.56951806665836018144000914982194311099660114436549248687137582377881529567688289957208394923521705167833421414109793475163229956047093077251500347669869037990419348245908043307240003159492376347107765528534728015646924224506972775254154499052546789147355556187241857813701140681002231670580155005452775539478120308349617536658111961999349324171262189106930722562724839970305518382482905961756973647807180881914091852457E+000000000000002023");
+ return val;
+ }
+
+ static const e_float& A000142_817(void)
+ {
+ static const e_float val("+2.09929626045988026823648747540452752168422313494660736177391404802729209656801332895039258652517233122119905295327701269208358874090475044114475784046283004038172607516906871382015082581305271475587044436812872788783537091422196757382644225725930726733389489404976597833793831936378823274863986639454917615753624291921637527449677472953468397847921208500362400333746194255739608518488534170755447470258466780523813043457E+000000000000002026");
+ return val;
+ }
+
+ static const e_float& A000142_818(void)
+ {
+ static const e_float val("+1.71722434105618205941744675488090351273769452438632482193106169128632493499263490308142113577759096693894082531578059638212437559006008586085641191349859497303225192948829820790488337551507712067030202349312929941224933340783356947539002976643811334467912602333270857028043354523957877438838741071074122609686464670791899497453836172875937149439599548553296443473004386901194999768123620951677956030671425826468479069548E+000000000000002029");
+ return val;
+ }
+
+ static const e_float& A000142_819(void)
+ {
+ static const e_float val("+1.40640673532501310666288889224745997693217181547240002916153952516350012175896798562368391020184700192299253593362430843695986360825921032004140135715534928291341433025091623227409948454684816182897735724087289621863220406101569340034443437871281482929220421310948831905967507355121501622408928937209706417333214565378565688414691825585392525391032030265149787204390592872078704810093245559424245989119897751877684357960E+000000000000002032");
+ return val;
+ }
+
+ static const e_float& A000142_820(void)
+ {
+ static const e_float val("+1.15325352296651074746356889164291718108438088868736802391246241063407009984235374821142080636551454157685387946557193291830708815877255246243394911286738641198899975080575131046476157732841549269976143293751577489927840733003286858828243619054450816001960745474978042162893356031199631330375321728511959262213235943610423864500047296980021870820646264817422825507600286155104537944276461358727881711078316156539701173527E+000000000000002035");
+ return val;
+ }
+
+ static const e_float& A000142_821(void)
+ {
+ static const e_float val("+9.46821142355505323667590060038835005670276709612329147632131639130571551970572427281576482026087438634597035041234556925930119378352265571658272221664124244242968795411521825891569254986629119506504136441700451192307572417956985110979880112437041199376097720349569726157354453016148973222381391391083185542770667097041579927545388308205979559437505834151041397417398349333408256522509747755155908847952975645190946634657E+000000000000002037");
+ return val;
+ }
+
+ static const e_float& A000142_822(void)
+ {
+ static const e_float val("+7.78286979016225376054759029351922374660967455301334559353612207365329815719810535225455868225443874557638762803894805793114558129005562299903099766207910128767720349828270940882869927599009136234346400155077770880076824527560641761225461452423247865887152326127346314901345360379274455988797503723470378516157488353768178700442309189345315197857629795672156028677101443152061586861503012654738157073017345980346958133688E+000000000000002040");
+ return val;
+ }
+
+ static const e_float& A000142_823(void)
+ {
+ static const e_float val("+6.40530183730353484493066681156632114345976215712998342348022846661666438337404070490550179549540308760936701787605425167733281340171577772820251107589110035975833847908666984346601950413984519120867087327629005434303226586182408169488554775344332993625126364402806017163807231592142877278780345564416121518797612915151211070464020462831194407836829321838184411601254487714146685987016979414849503271093275741825546544025E+000000000000002043");
+ return val;
+ }
+
+ static const e_float& A000142_824(void)
+ {
+ static const e_float val("+5.27796871393811271222286945273064862221084401747510634094770825649213145190020954084213347948821214419011842272986870338212223824301380084803886912653426669644087090676741595101600007141123243755594479957966300477865858707014304331658569134883730386747104124267912158142977158831925730877715004745078884131489233042084597922062352861372904192057547361194663955159433697876456869253301991037835990695380859211264250352277E+000000000000002046");
+ return val;
+ }
+
+ static const e_float& A000142_825(void)
+ {
+ static const e_float val("+4.35432418899894298758386729850278511332394631441696273128185931160600844781767287119476012057777501895684769875214168029025084655048638569963206702939077002456371849808311815958820005891426676098365445965322197894239333433286801073618319536279077569066360902521027530467956156036338727974114878914690079408478617259719793285701441110632645958447476572985597763006532800748076917133974142606214692323689208849293006540628E+000000000000002049");
+ return val;
+ }
+
+ static const e_float& A000142_826(void)
+ {
+ static const e_float val("+3.59667178011312690774427438856330050360557965570841121603881579138656297789739779160687185959724216565835619916926902791974719925070175458789608736627677604028963147941665559981985324866318434457249858367356135460641689415894897686808731936966518072048814105482368740166531784886015789306618889983534005591403337856528549253989390357382565561677615649286103752243396093417911533552662641792733335859367286509516023402559E+000000000000002052");
+ return val;
+ }
+
+ static const e_float& A000142_827(void)
+ {
+ static const e_float val("+2.97444756215355595270451491934184951648181437527085607566410065947668758272114797365888302788691927099946057671298548608963093378033035104419006425191089378531952523347757418105101863664445345296145632869803524025950677146945080386990821311871310445584369265233918948117721786100735057756573822016382622624090560407349110233049225825555381719507388141959607803105288569256612838248052004762590468755696745943369751353916E+000000000000002055");
+ return val;
+ }
+
+ static const e_float& A000142_828(void)
+ {
+ static const e_float val("+2.46284258146314432883933835321505139964694230272426883064987534604669731849311052218955514709036915638755335751835198248221441317011353066458937320058222005424456689331943142191024343114160745905208584016197317893487160677670526560428400046229445048943857751613684889041473638891408627822443124629564811532746984017285063272964758983559856063752117381542555260971178935344475430069387059943424908129716905641110154121043E+000000000000002058");
+ return val;
+ }
+
+ static const e_float& A000142_829(void)
+ {
+ static const e_float val("+2.04169650003294664860781149481527761030731516895841886060874666187271207703078862289514121693791603064528173338271379347775574851802411692094459038328266042496874595456180864876359180441639258355417916149427576533700856201788866518595143638324209945574458076087744773015381646640977752464805350317909228760647249750329317453287785197371120676850505309298778311345107337400570131527521872693099248839535314776480317766344E+000000000000002061");
+ return val;
+ }
+
+ static const e_float& A000142_830(void)
+ {
+ static const e_float val("+1.69460809502734571834448354069668041655507159023548765430525972935435102393555455700296721005847030543558383870765244858653727126996001704438401001812460815272405914228630117847378119766560584434996870404024888522971710647484759210433969219809094254826800203152828161602766766712011534545788440763864659871337217292773333486228861713818030161785919406717985998416439090042473209167843154335272376536814311264478663746066E+000000000000002064");
+ return val;
+ }
+
+ static const e_float& A000142_831(void)
+ {
+ static const e_float val("+1.40821932696772429194426582231894142615726449148569024072767083509346570089044583686946575155858882381697016996605918477541247242533677416388311232506154937491369314723991627931171217526011845665482399305744682362589491548059834903870628421661357325761070968820000202291899183137681585207550194274771532353081227570294640127056184084182783064444099026982646364684060883825295236818477661252611344902092692660781769572981E+000000000000002067");
+ return val;
+ }
+
+ static const e_float& A000142_832(void)
+ {
+ static const e_float val("+1.17163848003714661089762916416935926656284405691609428028542213479776346314085093627539550529674590141571918141176124173314317705788019610435074945445120907992819269850361034438734452981641855593681356222379575725674456967985782640020362846822249295033211046058240168306860120370551078892681761636609914917763581338485140585710745158040075509617490390449561775417138655342645637032973414162172638958541120293770432284720E+000000000000002070");
+ return val;
+ }
+
+ static const e_float& A000142_833(void)
+ {
+ static const e_float val("+9.75974853870943126877725093753076269046849099411106535477756638286536964796328829917404455912189335879294078115997114363708266489214203354924174295557857163580184517853507416874657993337076657095365697332421865794868226543321569391369622514029336627626648013665140601996144802686690487176039074432960591264970632549581221078970507166473828995113694952444849589224764999004238156484668539970898082524647532047107700931717E+000000000000002072");
+ return val;
+ }
+
+ static const e_float& A000142_834(void)
+ {
+ static const e_float val("+8.13963028128366567816022728190065608385072148908862850588449036330971828640138244151115316230765906123331261148741593379332694252004645598006761362495252874425873887889825185673464766443121932017534991575239836072920100937130188872402265176700466747440624443396727262064784765440699866304816588077089133114985507546350738379861402976839173381924821590339004557413454009169534622508213562335729000825556041727287822577052E+000000000000002075");
+ return val;
+ }
+
+ static const e_float& A000142_835(void)
+ {
+ static const e_float val("+6.79659128487186084126378978038704783001535244338900480241354945336361476914515433866181289052689531612981603059199230471742799700423879074335645737683536150145604696388004030037343079980006813234641717965325263120888284282503707708455891422544889734112921410236267263824095279142984388364521851044369426151012898801202866547184271485660709773907226027933068805440234097656561409794358324550333715689339294842285331851839E+000000000000002078");
+ return val;
+ }
+
+ static const e_float& A000142_836(void)
+ {
+ static const e_float val("+5.68195031415287566329652825640357198589283464267320801481772734301198194700534902712127557648048448428452620157490556674376980549554362906144599836703436221521725526180371369111218814863285695864160476219011919969062605660173099644269125229247527817718402298957519432556943653363534948672740267473092840262246783397805596433446050962012353370986440959352045521348035705640885338588083559324078986316287650488150537428137E+000000000000002081");
+ return val;
+ }
+
+ static const e_float& A000142_837(void)
+ {
+ static const e_float val("+4.75579241294595693017919415060978975219230259591747510840243778610102888964347713570050765751416551334614843071819595936453532719977001752443030063320776117413684265412970835946090148040570127438302318595312977014105400937564884402253257816880180783430302724227443765050161837865278752039083603874978707299500557703963284214794344655204339771515651082977662101368305885621421028398225939154254111546732763458581999827351E+000000000000002084");
+ return val;
+ }
+
+ static const e_float& A000142_838(void)
+ {
+ static const e_float val("+3.98535404204871190749016469821100381233714957537884414084124286475266220952123383971702541699687070018407238494184821394748060419340727468547259193062810386392667414416069560522823544057997766793297342982872274737820325985679373129088230050545591496514593682902597875112035620131103594208752060047232156716981467355921232171997660821061236728530115607535280840946640332150750821797713337011264945476162055778291715855320E+000000000000002087");
+ return val;
+ }
+
+ static const e_float& A000142_839(void)
+ {
+ static const e_float val("+3.34371204127886929038424818179903219855086849374285023416580276352748359378831519152258432486037451745443673096621065150193622691826870346111150462979697914183447960695082361278648953464660126339576470762629838505031253501984994055305025012407751265575744099955279617218997885289995915541142978379627779485547451111617913792306037428870377615236766994722100625554231238674479939488281489752451289254499964797986749602613E+000000000000002090");
+ return val;
+ }
+
+ static const e_float& A000142_840(void)
+ {
+ static const e_float val("+2.80871811467425020392276847271118704678272953474399419669927432136308621878218476087897083288271459466172685401161694726162643061134571090733366388902946247914096286983869183474065120910314506125244235440609064344226252941667395006456221010422511063083625043962434878463958223643596569054560101838887334767859858933759047585537071440251117196798884275566564525465554240486563149170156451392059082973779970430308869666195E+000000000000002093");
+ return val;
+ }
+
+ static const e_float& A000142_841(void)
+ {
+ static const e_float val("+2.36213193444104442149904828555010830634427553871969911942408970426635550999581738389921447045436297411051228422376985264702782814414174287306761133067377794495754977353433983301688766685574499651330402005552223113494278723942279200429681869765331804053328661972407732788188866084264714574885045646504248539770141363291359019436677081251189562507861675751480765916531116249199608452101575620721688780948955131889759389270E+000000000000002096");
+ return val;
+ }
+
+ static const e_float& A000142_842(void)
+ {
+ static const e_float val("+1.98891508879935940290219865643319119394188000360198665855508353099227133941647823724313858412257362420105134331641421592879743129736734749912292874042732102965425690931591413940021941549253728706420198488674971861562182685559399086761792134342409379012902733380767311007655025242950889672053208434356577270486459027891324294365682102413501611631619530982746804901719199881826070316669526672647661953559020221051177405766E+000000000000002099");
+ return val;
+ }
+
+ static const e_float& A000142_843(void)
+ {
+ static const e_float val("+1.67665541985785997664655346737318017649300484303647475316193541662648473912809115399596582641532956520148628241573718402797623458368067394176062892818023162799853857455331561951438496726020893299512227325953001279296920003926573430140190769250651106507877004239986843179453186279807599993540854710162594639020084960512386380150270012334581858605455264618455556532149285500379377276952410985041979026850254046346142553060E+000000000000002102");
+ return val;
+ }
+
+ static const e_float& A000142_844(void)
+ {
+ static const e_float val("+1.41509717436003382028969112646296406896009608752278469166867349163275311982410893397259515749453815303005442235888218331961194198862648880684597081538411549403076655692299838287014091236761633944788319863104333079726600483314027975038321009247549533892648191578548895643458489220157614394548481375377229875332951706672454104846827890410387088663004243337976489713133996962320194421747834871375430298661614415116144314783E+000000000000002105");
+ return val;
+ }
+
+ static const e_float& A000142_845(void)
+ {
+ static const e_float val("+1.19575711233422857814478900186120463827128119395675306446002910042967638625137204920684290808288473931039598689325544490507209098038938304178484533899957759245599774059993363352526907095063580683346130284323161452368977408400353638907381252814179356139287721883873816818722423391033184163393466762193759244656344192138223718595569567396777089920238585620590133807598227433160564286376920466312238602369064180773141945992E+000000000000002108");
+ return val;
+ }
+
+ static const e_float& A000142_846(void)
+ {
+ static const e_float val("+1.01161051703475737711049149557457912397750389008741309253318461896350622276866075362898910023812048945659500491169410638969098896940941805334997915679364264321777408854754385396237763402423789258110826220537394588704154887506699178515644539880795735293837412713757249028639170188814073802230872880815920320979267186548937265931851854017673418072521843435019253201228100408453837386274874714500153857604228296934078086309E+000000000000002111");
+ return val;
+ }
+
+ static const e_float& A000142_847(void)
+ {
+ static const e_float val("+8.56834107928439498412586296751668518008945794904038889375607372262089770685055658323753767901688054569735969160204908112068267657089777091187432345804215318805454652999769644306133856018529495016198698087951732166324191897181742042027509252790339877938802885685523899272573771499255205104895493300510845118694393070069498642442785203529693851074260013894613074614402010459604002661748188831816303173907813675031641391036E+000000000000002113");
+ return val;
+ }
+
+ static const e_float& A000142_848(void)
+ {
+ static const e_float val("+7.26595323523316694653873179645414903271586034078624978190515051678252125540927198258543195180631470275136101847853762079033890973212130973326942629241974590347025545743804658371601509903713011773736495978583068877042914728810117251639327846366208216492104847061324266583142558231368413928951378318833196660652845323418934848791481852593180385710972491782631887273012904869744194257162464129380225091473825996426831899599E+000000000000002116");
+ return val;
+ }
+
+ static const e_float& A000142_849(void)
+ {
+ static const e_float val("+6.16879429671295873761138329518957252877576542932752606483747278874836054584247191321503172708356118263590550468827844005099773436257099196354574292226436427204624688336490154957489681908252346995902285085817025476609434604759789546641789341564910775801797015155064302329088031938431783425679720192689383964894265679582675686623968092851610147468615645523454472294787956234412820924330932045843811102661278270966380282759E+000000000000002119");
+ return val;
+ }
+
+ static const e_float& A000142_850(void)
+ {
+ static const e_float val("+5.24347515220601492696967580091113664945940061492839715511185187043610646396610112623277696802102700524051967898503667404334807420818534316901388148392470963123930985086016631713866229622014494946516942322944471655118019414045821114645520940330174159431527462881804656979724827147667015911827762163785976370160125827645274333630372878923868625348323298694936301450569762799250897785681292238967239437262086530321423240345E+000000000000002122");
+ return val;
+ }
+
+ static const e_float& A000142_851(void)
+ {
+ static const e_float val("+4.46219735452731870285119410657537728868994992330406597900018594174112660083515205842409319978589398145968224681626620961088921115116572703683081314281992789618465268308200153588500161408334335199485917916825745378505434521352993768563338320220978209676229870912415763089745827902664630540965425601381865891006267079326128457919447319964212200171423127189390792534434868142162514015614779695361120761110035637303531177534E+000000000000002125");
+ return val;
+ }
+
+ static const e_float& A000142_852(void)
+ {
+ static const e_float val("+3.80179214605727553482921737880222144996383733465506421410815842236343986391154955377732740621758167220364927428745881058847760790079319943537985279768257856754932408598586530857402137519900853589962002065135535062486630212192750690815964248828273434644147850017378230152463445373070265220902542612377349739137339551585861446147369116609508794546052504365360955239338507657122461941303792300447674888465750362982608563259E+000000000000002128");
+ return val;
+ }
+
+ static const e_float& A000142_853(void)
+ {
+ static const e_float val("+3.24292870058685603120932242411829489681915324646076977463425913427601420391655176937206027750359716638971283096720236543197139953937659911837901443642323951811957344534594310821364023304475428112237587761560611408301095571000416339266017504250517239751458116064823630320051318903228936233429868848357879327484150637502739813563705856467911001747782786223652894819155747031525460035932134832281866679861285059624165104460E+000000000000002131");
+ return val;
+ }
+
+ static const e_float& A000142_854(void)
+ {
+ static const e_float val("+2.76946111030117505065276135019702384188355687247749738753765730067171613014473521104373947698807198009681475764599082007890357520662761564709567832870544654847411572232543541441444875902022015607850899948372762142689135617634355553733178948629941722747745231119359380293323826343357511543349107996497628945671464644427339800783404801423595995492606499434999572175559007964922742870686043146768714144601537440919036999209E+000000000000002134");
+ return val;
+ }
+
+ static const e_float& A000142_855(void)
+ {
+ static const e_float val("+2.36788924930750466830811095441845538481044112596826026634469699207431729127374860544239725282480154298277661778732215116746255680166661137826680497104315679894536894258824727932435368896228823344712519455858711631999210953077373998441868001078600172949322172607052270150791871523570672369563487337005472748549102270985375529669811105217174576146178557016924634210102951810008945154436566890487250593634314511985776634323E+000000000000002137");
+ return val;
+ }
+
+ static const e_float& A000142_856(void)
+ {
+ static const e_float val("+2.02691319740722399607174297698219780939773760382883078799106062521561560133032880625869204841803012079325678482594776139934794862222661933979638505521294221989723581485553967110164675775171872783073916654215057156991324575834232142666239008923281748044619779751636743249077842024176495548346345160476684672758031543963481453397358306065901437181128844806487486883848126749367657052197701258257086508150973222259824798981E+000000000000002140");
+ return val;
+ }
+
+ static const e_float& A000142_857(void)
+ {
+ static const e_float val("+1.73706461017799096463348373127374352265386112648130798530833895580978257034009178696369908549425181351982106459583723151924119196924821277420550199231749148245193109333119749813411127139322294975094346572662303983541565161489936946264966830647252458074239151247152688964459710614719256684932817802528518764553633033176703605561536068298477531664227419999159776259457844624208082093733429978326323137485384051476669852727E+000000000000002143");
+ return val;
+ }
+
+ static const e_float& A000142_858(void)
+ {
+ static const e_float val("+1.49040143553271624765552904143287194243701284652096225139455482408479344535179875321485381535406805600000647342322834464350894270961496656026832070940840769194375687807816745339906747085538529088630949359344256817878662908558365899895341540695342609027697191770057007131506431707429122235672357674569469099987017142465611693571797946600093722167907126359279088030614830687570534436423282921403985251962459516166982733639E+000000000000002146");
+ return val;
+ }
+
+ static const e_float& A000142_859(void)
+ {
+ static const e_float val("+1.28025483312260325673609944659083699855339403516150657394792259388883756955719512901155942738914446010400556067055314804877418178755925627527048748938182220737968715826914584246979895746477596487133985499676716606557771438451636308010098383457299301154791887730478969125964024836681616000442555242455173956888847725377960444778174436129480507342232221542620736618298139560623089080887600029486023331435752724387438168196E+000000000000002149");
+ return val;
+ }
+
+ static const e_float& A000142_860(void)
+ {
+ static const e_float val("+1.10101915648543880079304552406811981875591887023889565359521343074440030981918781094994110755466423568944478217667570732194579633730096039673261924086836709834653095611146542452402710341970732978935227529721976281639683437068407224888684609773277398993121023448211913448329061359546189760380597508511449602924409043825045982509230015071353236314319710526653833491736400022135856609563336025357980065034747342973196824649E+000000000000002152");
+ return val;
+ }
+
+ static const e_float& A000142_861(void)
+ {
+ static const e_float val("+9.47977493733962807482812196222651163948846147275689157745478763870928666754320705227899293604565906928611957454117784004195330646416126901586785166387664071676363153211971730515187336044368010948632309030906215784917674393158986206291574490147918405330772011889104574790113218305692693836876944548283581081179161867333645909404470429764351364666292707634489506363850404190589725408340323178332208359949174622999224660226E+000000000000002154");
+ return val;
+ }
+
+ static const e_float& A000142_862(void)
+ {
+ static const e_float val("+8.17156599598675940050184113143925303323905378951644053976602694456740510742224447906449191087135811772463507325449529811616375017210701389167808813426166429785025038068719631704091483670245225437721050384641158006599035326903046109823337210507505665395125474248408143469077594179507102087387926200620446891976437529641602773906653510456870876342344313980929954485639048412288343301989358579722363606276188525025331657115E+000000000000002157");
+ return val;
+ }
+
+ static const e_float& A000142_863(void)
+ {
+ static const e_float val("+7.05206145453657336263308889643207536768530342035268818581808125316167060770539698543265651908198205559636006821862944227424931639852835298851819005986781628904476607853305042160630950407421629552753266481945319359694967487117328792777540012667977389235993284276376227813813963776914629101415780311135445667775665588080703193881441979524279566283443142965542550721106498779804840269616816454300399792216350697096861220090E+000000000000002160");
+ return val;
+ }
+
+ static const e_float& A000142_864(void)
+ {
+ static const e_float val("+6.09298109671959938531498880651731311768010215518472259254682220273168340505746299541381523248683249603525509894089583812495140936832849698207971621172579327373467789185255556426785141152012287933578822240400755926776451908869372076959794570945132464299898197614789060831135264703254239543623234188821025056958175068101727559513565870308977545268894875522228763823036014945751381992948929416515545420474927002291688094158E+000000000000002163");
+ return val;
+ }
+
+ static const e_float& A000142_865(void)
+ {
+ static const e_float val("+5.27042864866245346829746531763747584679328836423478504255300120536290614537470549103295017610111010907049566058387489997808296910360414988949895452314281118178049637645246056309169147096490629062545681237946653876661630901172006846570222303867539581619411940936792537618932003968314917205234097573330186674268821433907994338979234477817265576657594067326727880706926152928074945423900823945285946788710811856982310201447E+000000000000002166");
+ return val;
+ }
+
+ static const e_float& A000142_866(void)
+ {
+ static const e_float val("+4.56419120974168470354560496507405408332298772342732384685089904384427672189449495523453485250356135445504924206563566338101985124372119380430609461704167448342190986200783084763740481385560884768164559952061802257188972360414957929129812515149289277682410740851262337577995115436560718299732728498503941659916799361764323097556017057789751989385476462304946344692198048435712902737098113536617629919023563068146680634453E+000000000000002169");
+ return val;
+ }
+
+ static const e_float& A000142_867(void)
+ {
+ static const e_float val("+3.95715377884604063797403950471920489024103035621148977521972947101298791788252712618834171712058769431252769287090612015134421102830627502833338403297513177712679585036078934490162997361281287093998673478437582556982839036479768524555547450634433803750650112318044446680121765083498142765868275608202917419147865046649668125581066789103714974797208092818388480848135707993763086673064064436247485139793429180083172110071E+000000000000002172");
+ return val;
+ }
+
+ static const e_float& A000142_868(void)
+ {
+ static const e_float val("+3.43480948003836327376146629009626984472921434919157312489072518083927351272203354553148061046067011866327403741194651229136677517256984672459337734062241438254605879811316515137461481709592157197590848579283821659461104283664439079314215187150688541655564297492062579718345692092476387920773663227920132319820346860491911933004365972942024598123976624566361201376181794538586359232219607930662817101340696528312193391541E+000000000000002175");
+ return val;
+ }
+
+ static const e_float& A000142_869(void)
+ {
+ static const e_float val("+2.98484943815333768489871420609365849506968726944747704553004018214932868255544715106685665049032233311838513851098151918119772762496319680367164490900087809843252509556034051654454027605635584604706447415397641022071699622504397559924052997633948342698685374520602381775242406428361981103152313345062594985923881421767471469780794030486619375769735686748167883995901979454031546172798839291745988061065065283103296057249E+000000000000002178");
+ return val;
+ }
+
+ static const e_float& A000142_870(void)
+ {
+ static const e_float val("+2.59681901119340378586188135930148289071062792441930502961113495846991595382323902142816528592658042981299507050455392168764202303371798121919433107083076394563629683313749624939375004016902958606094609251395947689202378671578825877133926107941535058147856275832924072144460893592674923559742512610204457637753776836937700178709290806523358856919670047470906059076434722125007445170334990183819009613126606796299867569807E+000000000000002181");
+ return val;
+ }
+
+ static const e_float& A000142_871(void)
+ {
+ static const e_float val("+2.26182935874945469748569866395159159780895692216921468079129854882729679578004118766393196404205155436711870640946646578993620206236836164191826236269359539664921454166275923322195628498722476945908404657965870437295271822945157338983649640017077035646782816250476866837825438319219858420535728483488082602483539624972736855655792292481845564377032611347159177455574642970881484743361776450106357373033274519577184653302E+000000000000002184");
+ return val;
+ }
+
+ static const e_float& A000142_872(void)
+ {
+ static const e_float val("+1.97231520082952449620752923496578787328941043613155520165001233457740280592019591564294867264466895540812751198905475816882436819838521135175272478026881518587811508032992605136954588050885999896832128861746239021321477029608177199593742486094891175083994615770415827882583782214359716542707155237601608029365646552976226538131850879044169332136772437094722802741261088670608654696211469064492743629285015381071305017679E+000000000000002187");
+ return val;
+ }
+
+ static const e_float& A000142_873(void)
+ {
+ static const e_float val("+1.72183117032417488518917302212513281338165531074284769104046076808607264956833103435629419121879599807129531796644480388138367343719028951008012873317467565727159446512802544284561355368423477909934448496304466665613649446847938695245337190360839995848327299567573017741495641873136032541783346522426203809636209440748245767789105817405559826955402337583693006793120930409441355549792612493302165188365818427675249280434E+000000000000002190");
+ return val;
+ }
+
+ static const e_float& A000142_874(void)
+ {
+ static const e_float val("+1.50488044286332884965533722133736607889556674158924888196936271130722749572272132402740112312522770231431210790267275859232933058410431303181003251279466652445537356252189423704706624592002119693282707985770103865746329616545098419644424704375374156371438059822058817506067190997120892441518644860600502129622047051213966801047678484412459288759021643048147687937187693177851744750518743319146092374631725305788167871099E+000000000000002193");
+ return val;
+ }
+
+ static const e_float& A000142_875(void)
+ {
+ static const e_float val("+1.31677038750541274344842006867019531903362089889059277172319237239382405875738115852397598273457423952502309441483866376828816426109127390283377844869533320889845186720665745741618296518001854731622369487548840882528038414476961117188871616328452386825008302344301465317808792122480780886328814253025439363419291169812220950916718673860901877664143937667129226945039231530620276656703900404252830827802759642564646887212E+000000000000002196");
+ return val;
+ }
+
+ static const e_float& A000142_876(void)
+ {
+ static const e_float val("+1.15349085945474156326081598015509109947345190742815926802951651821698987547146589486700296087548703382392023070739866946102043189271595593888238992105711189099504383567303193269657627749769624744901195671092784613094561651081817938657451535903724290858707272853608083618400501899293164056424041285650284882355299064755505553003045558302150044833790089396405202803854366820823362351272616754125479805155217446886630673198E+000000000000002199");
+ return val;
+ }
+
+ static const e_float& A000142_877(void)
+ {
+ static const e_float val("+1.01161148374180835097973561459601489423821732281449567806188598647630012078847558979836159668780212866357804233038863311731491876991189335839985596076708712840265344388524900497489739536547960901278348603548372105683930567998754332202584996987566203083086278292614289333337240165680104877483884207515299841825597279790578369983670954630985589319233908400647362858980279701862088782066084893368045789121125700919575100394E+000000000000002202");
+ return val;
+ }
+
+ static const e_float& A000142_878(void)
+ {
+ static const e_float val("+8.88194882725307732160207869615301077141154809431127205338335896126191506052281567842961481891890268966621521166081219877002498679982642368675073533553502498737529723731248626367959913130891096713223900739154707087904910387029063036738696273550831263069497523409153460346700968654671320824308503341984332611228744116561278088456630981660053474222873715757683845901846855782349139506540225363771442028483483654073869381462E+000000000000002204");
+ return val;
+ }
+
+ static const e_float& A000142_879(void)
+ {
+ static const e_float val("+7.80723301915545496568822717391849646807075077489960813492397252694922333819955498133963142582971546421660317104985392271885196339704742642065389635993528696390288627159767542577436763642053274010923808749716987530268416230198546409293314024451180680238088323076645891644750151447456091004567174437604228365270066078457363439753378632879187003841905996151004100547723386232684893626248858094755097543036982131930931186305E+000000000000002207");
+ return val;
+ }
+
+ static const e_float& A000142_880(void)
+ {
+ static const e_float val("+6.87036505685680036980563991304827689190226068191165515873309582371531653761560838357887565473014960851061079052387145199258972778940173525017542879674305252823453991900595437468144352005006881129612951699750949026636206282574720840178116341517038998609517724307448384647380133273761360084019113505091720961437658149042479826982973196933684563380877276612883608481996579884762706391098995123384485837872544276099219443948E+000000000000002210");
+ return val;
+ }
+
+ static const e_float& A000142_881(void)
+ {
+ static const e_float val("+6.052791615090841125798768763395531941765891660764168194843857420693193869639350985932