diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fe360ff..db118f24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.23) project( BSMPT - VERSION 3.0.0 + VERSION 3.0.1 LANGUAGES C CXX DESCRIPTION "BSMPT - Beyond the Standard Model Phase Transitions : A C++ package for the computation of the EWPT in BSM models" diff --git a/README.md b/README.md index 2d1f0151..0999fad3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ SPDX-FileCopyrightText: 2021 Philipp Basler, Margarete Mühlleitner and Jonas M SPDX-License-Identifier: GPL-3.0-or-later --> -Program: BSMPT version 3.0.0 +Program: BSMPT version 3.0.1 Released by: Philipp Basler, Lisa Biermann, Margarete Mühlleitner, Jonas Müller, Rui Santos and João Viana diff --git a/include/BSMPT/utility/utility.h b/include/BSMPT/utility/utility.h index 9939fd4a..6d8b538b 100644 --- a/include/BSMPT/utility/utility.h +++ b/include/BSMPT/utility/utility.h @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -257,6 +258,31 @@ double L2NormVector(const std::vector &vec); std::vector> Transpose(const std::vector> &A); +/** + * @brief Dilogarithm of x + * + * https://en.wikipedia.org/wiki/Dilogarithm + * + * @param x real argument of from \f$ (-\infty, 1)\f$ + * @return double + */ +double Li2(const double &x); + +/** + * @brief Incomplete elliptic integral of the second kind of x with a different + * parameterization and k^2 = -2 + * + * \f$ \text{EllipIntSecond}(x) = -i E(i \phi, 2) = \int_0^\phi + * \sqrt{1+2\sinh^2{\theta}}\,d\theta \f$ + * + * https://en.wikipedia.org/wiki BounceActionInt::ExactSolutionLin(double l0, // We used numerical derivative here because Bessel function J are not // completely implemented return ( - (LinearSolution(rho_in + 0.001) - LinearSolution(rho_in - 0.001)) / + -(LinearSolution(rho_in + 0.001) - LinearSolution(rho_in - 0.001)) / (0.002)); }; } @@ -474,7 +474,14 @@ std::vector BounceActionInt::ExactSolutionLin(double l0, ss << rho_up << "\t" << l << "\t" << dVdl << "\t" << d2Vdl2 << "\n"; BSMPT::Logger::Write(BSMPT::LoggingLevel::BounceDetailed, ss.str()); ss.str(std::string()); - return (ExactSolutionLin(l0, l / 10., dVdl, d2Vdl2)); + if (abs((l - l0) / Spline.L) < 1e-10) + { + // Maximum numerical precision reached. + StateOfBounceActionInt = ActionStatus::Integration1DFailed; + // Abort calculation + return {0, 0, 0}; + } + return (ExactSolutionLin(l0, l0 + (l - l0) / 10., dVdl, d2Vdl2)); } } else @@ -578,8 +585,12 @@ std::vector BounceActionInt::ExactSolution(double l0) if (not ExactSolutionThreshold.has_value()) return ExactSolutionLin(l0, l, dVdl, d2Vdl2); - if (dVdl <= -1e-3) + if (dVdl <= 0) { + // Assume negative grad is numerical error if close to the true minimum + if (l0_minus_lmin / Spline.L < 1e-2) return ExactSolutionFromMinimum(l); + // If we are not close to the minimum then probably l0 in not a solution as + // it will roll backwards ss << " \n l = " << l0 << std::endl; ss << " dVdl = " << dVdl << std::endl; ss << " d2Vd2l = " << d2Vdl2 << std::endl; diff --git a/src/utility/CMakeLists.txt b/src/utility/CMakeLists.txt index c1597309..43b1036b 100644 --- a/src/utility/CMakeLists.txt +++ b/src/utility/CMakeLists.txt @@ -22,4 +22,4 @@ if(nlohmann_json_FOUND) target_link_libraries(Utility PRIVATE nlohmann_json::nlohmann_json) endif() -target_link_libraries(Utility PUBLIC ASCIIPlotter Spline) +target_link_libraries(Utility PUBLIC ASCIIPlotter Spline GSL::gsl) diff --git a/src/utility/utility.cpp b/src/utility/utility.cpp index f340c6cf..300066a8 100644 --- a/src/utility/utility.cpp +++ b/src/utility/utility.cpp @@ -81,10 +81,52 @@ Transpose(const std::vector> &A) return r; } +double Li2(const double &x) +{ + if (x == 0) return 0; + if (x == 1) return pow(M_PI, 2) / 6.; + if (x < -1) return -pow(M_PI, 2) / 6. - pow(log(-x), 2) / 2. - Li2(1. / x); + if (x < 0) return 1 / 2. * Li2(-x * -x) - Li2(-x); + if (x > 0.5) return pow(M_PI, 2) / 6. - log(x) * log(1 - x) - Li2(1 - x); + double sum = x; // k = 1 element of the sum + for (int k = 2; k <= 1e5; k++) // Sum starts at k = 2 + { + if (abs((pow(x, k) / pow(k, 2.)) / sum) < 1e-10) + { + sum += pow(x, k) / pow(k, 2.); + return sum; + } + sum += pow(x, k) / pow(k, 2.); + } + return sum; +} + bool StringEndsWith(const std::string &str, const std::string &suffix) { return str.size() >= suffix.size() and str.substr(str.size() - suffix.size(), str.size()) == suffix; } +double EllipIntSecond(const double &x) +{ + std::function integrand = [&](double x_int) + { return sqrt(1 + 2 * pow(sinh(x_int), 2)); }; + + gsl_integration_workspace *w = gsl_integration_workspace_alloc(1000); + + double result, error; + + gsl_function F = {[](double d, void *vf) -> double + { + auto &f = + *static_cast *>(vf); + return f(d); + }, + &integrand}; + + gsl_integration_qags(&F, 0, x, 0, 1e-7, 1000, w, &result, &error); + gsl_integration_workspace_free(w); + return result; +} + } // namespace BSMPT diff --git a/tests/unittests/CMakeLists.txt b/tests/unittests/CMakeLists.txt index c42dde89..0b380fa1 100644 --- a/tests/unittests/CMakeLists.txt +++ b/tests/unittests/CMakeLists.txt @@ -9,7 +9,8 @@ file(GLOB SOURCE_FILES "Test-*.cpp" CONFIURE_DEPENDS) add_executable(GenericTests ${SOURCE_FILES}) target_link_libraries( GenericTests - PRIVATE Catch2::Catch2WithMain + PRIVATE GSL::gsl + Catch2::Catch2WithMain CatchEventListener Minimizer MinimumTracer diff --git a/tests/unittests/Test-gw.cpp b/tests/unittests/Test-gw.cpp index 1a02baa5..83292683 100644 --- a/tests/unittests/Test-gw.cpp +++ b/tests/unittests/Test-gw.cpp @@ -18,6 +18,7 @@ using Approx = Catch::Approx; #include #include // for Logger Class #include +#include TEST_CASE("Test GetStatusEWSR", "[gw]") { @@ -1012,4 +1013,414 @@ TEST_CASE("Test string conversion of enums", "[gw]") << StatusGW::NotSet << StatusGW::Success << StatusTemperature::NaN << StatusTemperature::NotMet << StatusTemperature::NotSet << StatusTemperature::Success); -} \ No newline at end of file +} + +TEST_CASE( + "Espinosa-Konstandin - Example A: Polynomial Vt - Phi0 = 0.99 (thin wall)", + "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.99; + std::function)> V = [&](std::vector x) + { + if (x[0] == 0) return 0.; + if (x[0] == 1) return -1.; + return x[0] * x[0] * + (2 * x[0] - 3 + + pow(1 - x[0], 2) * log((pow(1. - x[0], 2) * phi0 * phi0) / + (pow(1. - phi0, 2) * x[0] * x[0]))); + }; + + std::vector FalseVacuum = {0}; + std::vector TrueVacuum = {1}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == + Approx(-pow(M_PI, 2) / 3. * (phi0 + Li2(phi0 / (phi0 - 1)))) + .epsilon(1e-3)); +} + +TEST_CASE( + "Espinosa-Konstandin - Example A: Polynomial Vt - Phi0 = 0.5 (thick wall)", + "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.5; + std::function)> V = [&](std::vector x) + { + if (x[0] == 0) return 0.; + if (x[0] == 1) return -1.; + return x[0] * x[0] * + (2 * x[0] - 3 + + pow(1 - x[0], 2) * log((pow(1. - x[0], 2) * phi0 * phi0) / + (pow(1. - phi0, 2) * x[0] * x[0]))); + }; + + std::vector FalseVacuum = {0}; + std::vector TrueVacuum = {1 - 0.17}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == + Approx(-pow(M_PI, 2) / 3. * (phi0 + Li2(phi0 / (phi0 - 1)))) + .epsilon(1e-3)); +} + +TEST_CASE("Espinosa-Konstandin - Example B: Trigonometric tunneling potential " + "- Phi0 = 1.4 (thick wall)", + "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 1.4; + std::function)> V = [&](std::vector x) + { + if (x[0] == 0) return 0.; + x[0] = abs(x[0]); + return pow(sin(x[0]), 2) * (-1. + 2. / 3. * pow(cos(x[0]), 2) * + log(tan(phi0) / abs(tan(x[0])))); + }; + + std::vector FalseVacuum = {0}; + std::vector TrueVacuum = {1.54751}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == + Approx(pow(M_PI, 2) / 4. * + (pow(M_PI, 2) / 2. + 6 * pow(log(1. / tan(phi0)), 2) + + 3 * Li2(-pow(1. / tan(phi0), 2)))) + .epsilon(1e-3)); +} + +TEST_CASE("Espinosa-Konstandin - Example B: Trigonometric tunneling potential " + "- Phi0 = 1.54 (thin wall)", + "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 1.54; + std::function)> V = [&](std::vector x) + { + if (x[0] == 0) return 0.; + x[0] = abs(x[0]); + return pow(sin(x[0]), 2) * (-1. + 2. / 3. * pow(cos(x[0]), 2) * + log(tan(phi0) / abs(tan(x[0])))); + }; + + std::vector FalseVacuum = {0}; + std::vector TrueVacuum = {1.5666275}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == + Approx(pow(M_PI, 2) / 4. * + (pow(M_PI, 2) / 2. + 6 * pow(log(1. / tan(phi0)), 2) + + 3 * Li2(-pow(1. / tan(phi0), 2)))) + .epsilon(1e-3)); +} + +TEST_CASE("Espinosa-Konstandin - Example C: Finite mass " + "- Phi0 = 0.8", + "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.8; + double cut_off = 1.3; + + std::function)> V = [&](std::vector x) + { + if (x[0] < 0) x[0] = -x[0]; + if (x[0] > cut_off) x[0] = 2 * cut_off - x[0]; + if (x[0] == 0) x[0] = 1e-100; + + return pow(x[0], 2) / (-0.5 + log(x[0])) + + (8. * pow(x[0], 2) * pow(-1 + log(x[0]), 2) * + (2. * pow(log(x[0]), 2) - 2. * pow(log(phi0), 2) + + log((-1 + log(x[0])) / (-1 + log(phi0))))) / + (3. * pow(1. - 2. * log(x[0]), 4)); + }; + + std::vector FalseVacuum = {0}; + std::vector TrueVacuum = {cut_off}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == Approx(3.236736977787636).epsilon(1e-3)); +} + +TEST_CASE( + "Espinosa-Konstandin - Example D: Derivative of the tunneling potential " + "- Phi0 = 0.8", + "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.8; + double cut_off = 0.95; + + std::function)> V = [&](std::vector x) + { + if (x[0] < 0) x[0] = -x[0]; + if (x[0] > cut_off) x[0] = 2 * cut_off - x[0]; + + return gsl_sf_expint_Ei(2 * log(x[0] + 1e-100)) + + 1. / 6. * pow(x[0], 2) * (1. - pow(log(phi0) / log(x[0]), 2)); + }; + + std::vector FalseVacuum = {0}; + std::vector TrueVacuum = {cut_off}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == Approx(5.1968779132).epsilon(1e-3)); +} + +TEST_CASE("Espinosa-Konstandin - Example E: Finite mass with thin-wall limit " + "- Phi0 = 0.8", + "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.8; + double cut_off = 0.9; + + std::function)> V = [&](std::vector x) + { + if (x[0] < 0) x[0] = -x[0]; + if (x[0] > cut_off) x[0] = 2 * cut_off - x[0]; + if (x[0] == 0) x[0] = 1e-100; + + return exp(2) * gsl_sf_expint_Ei(-2 + 2 * log(x[0])) - + exp(3) * gsl_sf_expint_Ei(-3 + 3 * log(x[0])) + + (pow(-1 + x[0], 2) * pow(x[0], 2) * + (pow(log(x[0]), 2) - pow(log(phi0), 2) + + 2 * log(((-1 + x[0]) * phi0) / (x[0] * (-1 + phi0))) + + 2 * Li2(1 - x[0]) - 2 * Li2(1 - phi0))) / + (6. * pow(-1 + log(x[0]), 2)); + }; + + std::vector FalseVacuum = {0}; + std::vector TrueVacuum = {cut_off}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == Approx(37.878999).epsilon(1e-3)); +} + +TEST_CASE("Espinosa-Konstandin - Two-Field Examples", "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.999; + double alpha = 1 / 2.; + + std::function)> V = [&](std::vector x) + { + x[0] = x[0] + 1e-100; + x[1] = x[1] + 1e-100; + return -4.5 * (-2. + x[0]) * pow(1. + pow(x[0], 2) - 1. * pow(x[1], 2), 2) + + pow(EllipIntSecond(asinh(x[0])), 2) * + (-3 + 2 * EllipIntSecond(asinh(x[0])) + + pow(-1 + EllipIntSecond(asinh(x[0])), 2) * + log((pow(phi0, 2) * + pow(-1 + EllipIntSecond(asinh(x[0])), 2)) / + (pow(-1 + phi0, 2) * + pow(EllipIntSecond(asinh(x[0])), 2)))) + + ((-sqrt(1 + pow(x[0], 2)) + x[1]) * + (-1 + EllipIntSecond(asinh(x[0]))) * EllipIntSecond(asinh(x[0])) * + pow(1. / cosh(x[0] / alpha), 3) * + (4 * pow(EllipIntSecond(asinh(x[0])), 2) * + log((pow(phi0, 2) * pow(-1 + EllipIntSecond(asinh(x[0])), 2)) / + (pow(-1 + phi0, 2) * + pow(EllipIntSecond(asinh(x[0])), 2))) - + 4 * alpha * pow(cosh(x[0] / alpha), 2) * + (-4 + log((pow(phi0, 2) * + pow(-1 + EllipIntSecond(asinh(x[0])), 2)) / + (pow(-1 + phi0, 2) * + pow(EllipIntSecond(asinh(x[0])), 2)))) * + sinh(x[0] / alpha) + + 2 * EllipIntSecond(asinh(x[0])) * + log((pow(phi0, 2) * pow(-1 + EllipIntSecond(asinh(x[0])), 2)) / + (pow(-1 + phi0, 2) * + pow(EllipIntSecond(asinh(x[0])), 2))) * + (-2 + alpha * sinh(x[0] / alpha) + + alpha * sinh((3 * x[0]) / alpha)))) / + (2. * alpha); + }; + + std::vector FalseVacuum = {0., 1.}; + std::vector TrueVacuum = {0.9181398979435043, 1.3575643168526}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == Approx(80.59).epsilon(2e-2)); +} + +TEST_CASE("Espinosa-Konstandin - Three-Field Examples - rho = 1/6", "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.999; + double alpha = 1 / 2.; + double rho = 1 / 6.; + + std::function)> V = [&](std::vector x) + { + x[0] = x[0] + 1e-100; + x[1] = x[1] + 1e-100; + x[2] = x[2] + 1e-100; + if (x[0] == 0.5) x[0] -= 0.0000001; + return 25 * pow(x[2] - rho + + rho * cos((sqrt(1 - pow(alpha, 2)) * x[0]) / + (alpha * rho)), + 2) + + (pow(x[0], 2) * + (alpha * (-3 * alpha + 2 * x[0]) + + pow(alpha - x[0], 2) * log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2))))) / + pow(alpha, 4) + + 25 * pow(x[1] - rho * sin((sqrt(1 - pow(alpha, 2)) * x[0]) / + (alpha * rho)), + 2) + + (2 * (alpha - x[0]) * x[0] * + (x[1] - + rho * sin((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho))) * + (alpha * sqrt(1 - pow(alpha, 2)) * rho * + cos((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)) * + (-4 * alpha + (alpha - 2 * x[0]) * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2)))) + + (-1 + pow(alpha, 2)) * (alpha - x[0]) * x[0] * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2))) * + sin((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)))) / + (pow(alpha, 4) * rho) - + (2 * x[0] * (-alpha + x[0]) * + (x[2] - rho + + rho * cos((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho))) * + (-((-1 + pow(alpha, 2)) * (alpha - x[0]) * x[0] * + cos((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)) * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2)))) + + alpha * sqrt(1 - pow(alpha, 2)) * rho * + (-4 * alpha + (alpha - 2 * x[0]) * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2)))) * + sin((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)))) / + (pow(alpha, 4) * rho); + }; + + std::vector FalseVacuum = {0., 0., 0.}; + std::vector TrueVacuum = {0.500068, -0.147487, 0.0890438}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == Approx(80.59).epsilon(2e-2)); +} + +TEST_CASE("Espinosa-Konstandin - Three-Field Examples - rho = 1/8", "[gw]") +{ + // Espinosa-Konstandin examples from arXiv:2312.12360 + using namespace BSMPT; + double phi0 = 0.999; + double alpha = 1 / 2.; + double rho = 1 / 8.; + + std::function)> V = [&](std::vector x) + { + x[0] = x[0] + 1e-100; + x[1] = x[1] + 1e-100; + x[2] = x[2] + 1e-100; + if (x[0] == 0.5) x[0] -= 0.0000001; + return 25 * pow(x[2] - rho + + rho * cos((sqrt(1 - pow(alpha, 2)) * x[0]) / + (alpha * rho)), + 2) + + (pow(x[0], 2) * + (alpha * (-3 * alpha + 2 * x[0]) + + pow(alpha - x[0], 2) * log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2))))) / + pow(alpha, 4) + + 25 * pow(x[1] - rho * sin((sqrt(1 - pow(alpha, 2)) * x[0]) / + (alpha * rho)), + 2) + + (2 * (alpha - x[0]) * x[0] * + (x[1] - + rho * sin((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho))) * + (alpha * sqrt(1 - pow(alpha, 2)) * rho * + cos((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)) * + (-4 * alpha + (alpha - 2 * x[0]) * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2)))) + + (-1 + pow(alpha, 2)) * (alpha - x[0]) * x[0] * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2))) * + sin((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)))) / + (pow(alpha, 4) * rho) - + (2 * x[0] * (-alpha + x[0]) * + (x[2] - rho + + rho * cos((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho))) * + (-((-1 + pow(alpha, 2)) * (alpha - x[0]) * x[0] * + cos((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)) * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2)))) + + alpha * sqrt(1 - pow(alpha, 2)) * rho * + (-4 * alpha + (alpha - 2 * x[0]) * + log((pow(phi0, 2) * pow(alpha - x[0], 2)) / + (pow(-1 + phi0, 2) * pow(x[0], 2)))) * + sin((sqrt(1 - pow(alpha, 2)) * x[0]) / (alpha * rho)))) / + (pow(alpha, 4) * rho); + }; + + std::vector FalseVacuum = {0., 0., 0.}; + std::vector TrueVacuum = {0.500068, 0.0752454, 0.0251845}; + + std::vector> path = {TrueVacuum, FalseVacuum}; + + BounceActionInt bc(path, TrueVacuum, FalseVacuum, V, 0, 6); + bc.Alpha = 3; + bc.CalculateAction(); + + REQUIRE(bc.Action == Approx(55.6).epsilon(2e-2)); +} diff --git a/tests/unittests/Test-utility.cpp b/tests/unittests/Test-utility.cpp index 2ed22825..edb07e7e 100644 --- a/tests/unittests/Test-utility.cpp +++ b/tests/unittests/Test-utility.cpp @@ -78,4 +78,1271 @@ TEST_CASE("Check L2NormVector", "[utility]") std::vector v1 = {0.856, 8.936, -5.996, 4.987, 9.301}; REQUIRE(BSMPT::L2NormVector(v1) == Approx(15.096874).margin(1e-10)); +} + +TEST_CASE("Check Li2 function", "[utility]") +{ + using namespace BSMPT; + // https://en.wikipedia.org/wiki/Dilogarithm + REQUIRE(Li2(-1) == Approx(-pow(M_PI, 2) / 12.).margin(1e-10)); + REQUIRE(Li2(0) == Approx(0).margin(1e-10)); + REQUIRE(Li2(1. / 2.) == + Approx(pow(M_PI, 2) / 12. - pow(log(2), 2) / 2).margin(1e-10)); + REQUIRE(Li2((1 - sqrt(5)) / 2) == + Approx(-pow(M_PI, 2) / 15. + pow(log((sqrt(5) + 1) / 2), 2) / 2.) + .margin(1e-10)); + REQUIRE(Li2(-(1 + sqrt(5)) / 2) == + Approx(-pow(M_PI, 2) / 10. - pow(log((sqrt(5) + 1) / 2), 2)) + .margin(1e-10)); + REQUIRE(Li2((3 - sqrt(5)) / 2) == + Approx(pow(M_PI, 2) / 15. - pow(log((sqrt(5) + 1) / 2), 2)) + .margin(1e-10)); + REQUIRE(Li2((-1 + sqrt(5)) / 2) == + Approx(pow(M_PI, 2) / 10. - pow(log((sqrt(5) + 1) / 2), 2)) + .margin(1e-10)); + + REQUIRE(Li2(1 - 1e-5) == Approx(1.644808937).margin(1e-10)); + REQUIRE(Li2(1 - 1e-4) == Approx(1.643912984).margin(1e-10)); + REQUIRE(Li2(1 - 1e-3) == Approx(1.637022605).margin(1e-10)); + REQUIRE(Li2(1 - 1e-2) == Approx(1.588625448).margin(1e-10)); + REQUIRE(Li2(1 - 1e-1) == Approx(1.299714723).margin(1e-10)); + REQUIRE(Li2(1 - 1e0) == Approx(0.).margin(1e-10)); + REQUIRE(Li2(1 - 1e1) == Approx(-3.950663778).margin(1e-10)); + REQUIRE(Li2(1 - 1e2) == Approx(-12.19242167).margin(1e-10)); + REQUIRE(Li2(1 - 1e3) == Approx(-25.4955641).margin(1e-10)); + REQUIRE(Li2(1 - 1e4) == Approx(-44.05909787).margin(1e-10)); + REQUIRE(Li2(1 - 1e5) == Approx(-67.91853532).margin(1e-10)); + + REQUIRE(Li2(-1 + 1e-5) == Approx(-0.8224601019).margin(1e-10)); + REQUIRE(Li2(-1 + 1e-4) == Approx(-0.8223977177).margin(1e-10)); + REQUIRE(Li2(-1 + 1e-3) == Approx(-0.8217737896).margin(1e-10)); + REQUIRE(Li2(-1 + 1e-2) == Approx(-0.8155258815).margin(1e-10)); + REQUIRE(Li2(-1 + 1e-1) == Approx(-0.7521631792).margin(1e-10)); + + REQUIRE(Li2(1e-5) == Approx(0.000010000025).margin(1e-10)); + REQUIRE(Li2(1e-4) == Approx(0.0001000025001).margin(1e-10)); + REQUIRE(Li2(1e-3) == Approx(0.001000250111).margin(1e-10)); + REQUIRE(Li2(1e-2) == Approx(0.01002511174).margin(1e-10)); + REQUIRE(Li2(1e-1) == Approx(0.1026177911).margin(1e-10)); + + REQUIRE(Li2(-1e-5) == Approx(-9.999975e-6).margin(1e-10)); + REQUIRE(Li2(-1e-4) == Approx(-0.00009999750025).margin(1e-10)); + REQUIRE(Li2(-1e-3) == Approx(-0.000999750111).margin(1e-10)); + REQUIRE(Li2(-1e-2) == Approx(-0.00997511049).margin(1e-10)); + REQUIRE(Li2(-1e-1) == Approx(-0.09760523523).margin(1e-10)); + REQUIRE(Li2(-1e0) == Approx(-0.8224670334).margin(1e-10)); + REQUIRE(Li2(-1e1) == Approx(-4.198277887).margin(1e-10)); + REQUIRE(Li2(-1e2) == Approx(-12.23875518).margin(1e-10)); + REQUIRE(Li2(-1e3) == Approx(-25.50247581).margin(1e-10)); + REQUIRE(Li2(-1e4) == Approx(-44.06001895).margin(1e-10)); + REQUIRE(Li2(-1e5) == Approx(-67.91865045).margin(1e-10)); + + REQUIRE(Li2(-1.) == Approx(-0.8224670334).margin(1e-10)); + REQUIRE(Li2(-0.99) == Approx(-0.8155258815).margin(1e-10)); + REQUIRE(Li2(-0.98) == Approx(-0.8085652776).margin(1e-10)); + REQUIRE(Li2(-0.97) == Approx(-0.801585083).margin(1e-10)); + REQUIRE(Li2(-0.96) == Approx(-0.7945851575).margin(1e-10)); + REQUIRE(Li2(-0.95) == Approx(-0.7875653589).margin(1e-10)); + REQUIRE(Li2(-0.94) == Approx(-0.7805255435).margin(1e-10)); + REQUIRE(Li2(-0.93) == Approx(-0.773465566).margin(1e-10)); + REQUIRE(Li2(-0.92) == Approx(-0.7663852791).margin(1e-10)); + REQUIRE(Li2(-0.91) == Approx(-0.7592845337).margin(1e-10)); + REQUIRE(Li2(-0.9) == Approx(-0.7521631792).margin(1e-10)); + REQUIRE(Li2(-0.89) == Approx(-0.7450210629).margin(1e-10)); + REQUIRE(Li2(-0.88) == Approx(-0.7378580301).margin(1e-10)); + REQUIRE(Li2(-0.87) == Approx(-0.7306739245).margin(1e-10)); + REQUIRE(Li2(-0.86) == Approx(-0.7234685878).margin(1e-10)); + REQUIRE(Li2(-0.85) == Approx(-0.7162418594).margin(1e-10)); + REQUIRE(Li2(-0.84) == Approx(-0.7089935771).margin(1e-10)); + REQUIRE(Li2(-0.83) == Approx(-0.7017235764).margin(1e-10)); + REQUIRE(Li2(-0.82) == Approx(-0.6944316907).margin(1e-10)); + REQUIRE(Li2(-0.81) == Approx(-0.6871177515).margin(1e-10)); + REQUIRE(Li2(-0.8) == Approx(-0.6797815878).margin(1e-10)); + REQUIRE(Li2(-0.79) == Approx(-0.6724230268).margin(1e-10)); + REQUIRE(Li2(-0.78) == Approx(-0.6650418931).margin(1e-10)); + REQUIRE(Li2(-0.77) == Approx(-0.6576380092).margin(1e-10)); + REQUIRE(Li2(-0.76) == Approx(-0.6502111952).margin(1e-10)); + REQUIRE(Li2(-0.75) == Approx(-0.6427612688).margin(1e-10)); + REQUIRE(Li2(-0.74) == Approx(-0.6352880455).margin(1e-10)); + REQUIRE(Li2(-0.73) == Approx(-0.6277913381).margin(1e-10)); + REQUIRE(Li2(-0.72) == Approx(-0.620270957).margin(1e-10)); + REQUIRE(Li2(-0.71) == Approx(-0.61272671).margin(1e-10)); + REQUIRE(Li2(-0.7) == Approx(-0.6051584023).margin(1e-10)); + REQUIRE(Li2(-0.69) == Approx(-0.5975658366).margin(1e-10)); + REQUIRE(Li2(-0.68) == Approx(-0.5899488126).margin(1e-10)); + REQUIRE(Li2(-0.67) == Approx(-0.5823071275).margin(1e-10)); + REQUIRE(Li2(-0.66) == Approx(-0.5746405756).margin(1e-10)); + REQUIRE(Li2(-0.65) == Approx(-0.5669489483).margin(1e-10)); + REQUIRE(Li2(-0.64) == Approx(-0.5592320342).margin(1e-10)); + REQUIRE(Li2(-0.63) == Approx(-0.5514896188).margin(1e-10)); + REQUIRE(Li2(-0.62) == Approx(-0.5437214845).margin(1e-10)); + REQUIRE(Li2(-0.61) == Approx(-0.5359274109).margin(1e-10)); + REQUIRE(Li2(-0.6) == Approx(-0.528107174).margin(1e-10)); + REQUIRE(Li2(-0.59) == Approx(-0.520260547).margin(1e-10)); + REQUIRE(Li2(-0.58) == Approx(-0.5123872996).margin(1e-10)); + REQUIRE(Li2(-0.57) == Approx(-0.504487198).margin(1e-10)); + REQUIRE(Li2(-0.56) == Approx(-0.4965600052).margin(1e-10)); + REQUIRE(Li2(-0.55) == Approx(-0.4886054807).margin(1e-10)); + REQUIRE(Li2(-0.54) == Approx(-0.4806233803).margin(1e-10)); + REQUIRE(Li2(-0.53) == Approx(-0.4726134562).margin(1e-10)); + REQUIRE(Li2(-0.52) == Approx(-0.4645754568).margin(1e-10)); + REQUIRE(Li2(-0.51) == Approx(-0.4565091268).margin(1e-10)); + REQUIRE(Li2(-0.5) == Approx(-0.4484142069).margin(1e-10)); + REQUIRE(Li2(-0.49) == Approx(-0.440290434).margin(1e-10)); + REQUIRE(Li2(-0.48) == Approx(-0.4321375408).margin(1e-10)); + REQUIRE(Li2(-0.47) == Approx(-0.4239552559).margin(1e-10)); + REQUIRE(Li2(-0.46) == Approx(-0.4157433035).margin(1e-10)); + REQUIRE(Li2(-0.45) == Approx(-0.4075014037).margin(1e-10)); + REQUIRE(Li2(-0.44) == Approx(-0.3992292721).margin(1e-10)); + REQUIRE(Li2(-0.43) == Approx(-0.3909266197).margin(1e-10)); + REQUIRE(Li2(-0.42) == Approx(-0.3825931528).margin(1e-10)); + REQUIRE(Li2(-0.41) == Approx(-0.3742285731).margin(1e-10)); + REQUIRE(Li2(-0.4) == Approx(-0.3658325775).margin(1e-10)); + REQUIRE(Li2(-0.39) == Approx(-0.3574048577).margin(1e-10)); + REQUIRE(Li2(-0.38) == Approx(-0.3489451006).margin(1e-10)); + REQUIRE(Li2(-0.37) == Approx(-0.3404529876).margin(1e-10)); + REQUIRE(Li2(-0.36) == Approx(-0.331928195).margin(1e-10)); + REQUIRE(Li2(-0.35) == Approx(-0.3233703936).margin(1e-10)); + REQUIRE(Li2(-0.34) == Approx(-0.3147792486).margin(1e-10)); + REQUIRE(Li2(-0.33) == Approx(-0.3061544195).margin(1e-10)); + REQUIRE(Li2(-0.32) == Approx(-0.2974955599).margin(1e-10)); + REQUIRE(Li2(-0.31) == Approx(-0.2888023175).margin(1e-10)); + REQUIRE(Li2(-0.3) == Approx(-0.2800743338).margin(1e-10)); + REQUIRE(Li2(-0.29) == Approx(-0.2713112439).margin(1e-10)); + REQUIRE(Li2(-0.28) == Approx(-0.2625126766).margin(1e-10)); + REQUIRE(Li2(-0.27) == Approx(-0.2536782541).margin(1e-10)); + REQUIRE(Li2(-0.26) == Approx(-0.2448075917).margin(1e-10)); + REQUIRE(Li2(-0.25) == Approx(-0.2359002977).margin(1e-10)); + REQUIRE(Li2(-0.24) == Approx(-0.2269559734).margin(1e-10)); + REQUIRE(Li2(-0.23) == Approx(-0.2179742128).margin(1e-10)); + REQUIRE(Li2(-0.22) == Approx(-0.2089546022).margin(1e-10)); + REQUIRE(Li2(-0.21) == Approx(-0.1998967202).margin(1e-10)); + REQUIRE(Li2(-0.2) == Approx(-0.1908001378).margin(1e-10)); + REQUIRE(Li2(-0.19) == Approx(-0.1816644174).margin(1e-10)); + REQUIRE(Li2(-0.18) == Approx(-0.1724891134).margin(1e-10)); + REQUIRE(Li2(-0.17) == Approx(-0.1632737713).margin(1e-10)); + REQUIRE(Li2(-0.16) == Approx(-0.1540179282).margin(1e-10)); + REQUIRE(Li2(-0.15) == Approx(-0.1447211118).margin(1e-10)); + REQUIRE(Li2(-0.14) == Approx(-0.1353828405).margin(1e-10)); + REQUIRE(Li2(-0.13) == Approx(-0.1260026232).margin(1e-10)); + REQUIRE(Li2(-0.12) == Approx(-0.1165799591).margin(1e-10)); + REQUIRE(Li2(-0.11) == Approx(-0.1071143369).margin(1e-10)); + REQUIRE(Li2(-0.1) == Approx(-0.09760523523).margin(1e-10)); + REQUIRE(Li2(-0.09) == Approx(-0.08805212172).margin(1e-10)); + REQUIRE(Li2(-0.08) == Approx(-0.07845445308).margin(1e-10)); + REQUIRE(Li2(-0.07) == Approx(-0.06881167461).margin(1e-10)); + REQUIRE(Li2(-0.06) == Approx(-0.05912321986).margin(1e-10)); + REQUIRE(Li2(-0.05) == Approx(-0.04938851035).margin(1e-10)); + REQUIRE(Li2(-0.04) == Approx(-0.0396069551).margin(1e-10)); + REQUIRE(Li2(-0.03) == Approx(-0.02977795033).margin(1e-10)); + REQUIRE(Li2(-0.02) == Approx(-0.01990087902).margin(1e-10)); + REQUIRE(Li2(-0.01) == Approx(-0.00997511049).margin(1e-10)); + REQUIRE(Li2(0.) == Approx(0.).margin(1e-10)); + REQUIRE(Li2(0.01) == Approx(0.01002511174).margin(1e-10)); + REQUIRE(Li2(0.02) == Approx(0.02010089902).margin(1e-10)); + REQUIRE(Li2(0.03) == Approx(0.03022805162).margin(1e-10)); + REQUIRE(Li2(0.04) == Approx(0.04040727532).margin(1e-10)); + REQUIRE(Li2(0.05) == Approx(0.05063929246).margin(1e-10)); + REQUIRE(Li2(0.06) == Approx(0.06092484246).margin(1e-10)); + REQUIRE(Li2(0.07) == Approx(0.07126468241).margin(1e-10)); + REQUIRE(Li2(0.08) == Approx(0.0816595877).margin(1e-10)); + REQUIRE(Li2(0.09) == Approx(0.09211035263).margin(1e-10)); + REQUIRE(Li2(0.1) == Approx(0.1026177911).margin(1e-10)); + REQUIRE(Li2(0.11) == Approx(0.1131827373).margin(1e-10)); + REQUIRE(Li2(0.12) == Approx(0.1238060463).margin(1e-10)); + REQUIRE(Li2(0.13) == Approx(0.1344885952).margin(1e-10)); + REQUIRE(Li2(0.14) == Approx(0.1452312834).margin(1e-10)); + REQUIRE(Li2(0.15) == Approx(0.1560350339).margin(1e-10)); + REQUIRE(Li2(0.16) == Approx(0.1669007939).margin(1e-10)); + REQUIRE(Li2(0.17) == Approx(0.1778295358).margin(1e-10)); + REQUIRE(Li2(0.18) == Approx(0.1888222581).margin(1e-10)); + REQUIRE(Li2(0.19) == Approx(0.1998799866).margin(1e-10)); + REQUIRE(Li2(0.2) == Approx(0.2110037754).margin(1e-10)); + REQUIRE(Li2(0.21) == Approx(0.2221947079).margin(1e-10)); + REQUIRE(Li2(0.22) == Approx(0.233453898).margin(1e-10)); + REQUIRE(Li2(0.23) == Approx(0.2447824916).margin(1e-10)); + REQUIRE(Li2(0.24) == Approx(0.2561816675).margin(1e-10)); + REQUIRE(Li2(0.25) == Approx(0.2676526391).margin(1e-10)); + REQUIRE(Li2(0.26) == Approx(0.2791966559).margin(1e-10)); + REQUIRE(Li2(0.27) == Approx(0.2908150047).margin(1e-10)); + REQUIRE(Li2(0.28) == Approx(0.3025090116).margin(1e-10)); + REQUIRE(Li2(0.29) == Approx(0.3142800435).margin(1e-10)); + REQUIRE(Li2(0.3) == Approx(0.3261295101).margin(1e-10)); + REQUIRE(Li2(0.31) == Approx(0.3380588655).margin(1e-10)); + REQUIRE(Li2(0.32) == Approx(0.3500696107).margin(1e-10)); + REQUIRE(Li2(0.33) == Approx(0.3621632955).margin(1e-10)); + REQUIRE(Li2(0.34) == Approx(0.3743415208).margin(1e-10)); + REQUIRE(Li2(0.35) == Approx(0.3866059412).margin(1e-10)); + REQUIRE(Li2(0.36) == Approx(0.3989582673).margin(1e-10)); + REQUIRE(Li2(0.37) == Approx(0.4114002691).margin(1e-10)); + REQUIRE(Li2(0.38) == Approx(0.4239337783).margin(1e-10)); + REQUIRE(Li2(0.39) == Approx(0.4365606916).margin(1e-10)); + REQUIRE(Li2(0.4) == Approx(0.4492829745).margin(1e-10)); + REQUIRE(Li2(0.41) == Approx(0.4621026643).margin(1e-10)); + REQUIRE(Li2(0.42) == Approx(0.4750218745).margin(1e-10)); + REQUIRE(Li2(0.43) == Approx(0.4880427986).margin(1e-10)); + REQUIRE(Li2(0.44) == Approx(0.5011677144).margin(1e-10)); + REQUIRE(Li2(0.45) == Approx(0.5143989892).margin(1e-10)); + REQUIRE(Li2(0.46) == Approx(0.5277390845).margin(1e-10)); + REQUIRE(Li2(0.47) == Approx(0.5411905619).margin(1e-10)); + REQUIRE(Li2(0.48) == Approx(0.5547560886).margin(1e-10)); + REQUIRE(Li2(0.49) == Approx(0.5684384439).margin(1e-10)); + REQUIRE(Li2(0.5) == Approx(0.5822405265).margin(1e-10)); + REQUIRE(Li2(0.51) == Approx(0.5961653614).margin(1e-10)); + REQUIRE(Li2(0.52) == Approx(0.6102161084).margin(1e-10)); + REQUIRE(Li2(0.53) == Approx(0.624396071).margin(1e-10)); + REQUIRE(Li2(0.54) == Approx(0.6387087054).margin(1e-10)); + REQUIRE(Li2(0.55) == Approx(0.6531576315).margin(1e-10)); + REQUIRE(Li2(0.56) == Approx(0.6677466442).margin(1e-10)); + REQUIRE(Li2(0.57) == Approx(0.6824797254).margin(1e-10)); + REQUIRE(Li2(0.58) == Approx(0.6973610584).margin(1e-10)); + REQUIRE(Li2(0.59) == Approx(0.712395042).margin(1e-10)); + REQUIRE(Li2(0.6) == Approx(0.7275863077).margin(1e-10)); + REQUIRE(Li2(0.61) == Approx(0.7429397374).margin(1e-10)); + REQUIRE(Li2(0.62) == Approx(0.7584604836).margin(1e-10)); + REQUIRE(Li2(0.63) == Approx(0.7741539916).margin(1e-10)); + REQUIRE(Li2(0.64) == Approx(0.7900260243).margin(1e-10)); + REQUIRE(Li2(0.65) == Approx(0.8060826895).margin(1e-10)); + REQUIRE(Li2(0.66) == Approx(0.8223304706).margin(1e-10)); + REQUIRE(Li2(0.67) == Approx(0.8387762613).margin(1e-10)); + REQUIRE(Li2(0.68) == Approx(0.8554274037).margin(1e-10)); + REQUIRE(Li2(0.69) == Approx(0.8722917326).margin(1e-10)); + REQUIRE(Li2(0.7) == Approx(0.8893776243).margin(1e-10)); + REQUIRE(Li2(0.71) == Approx(0.9066940527).margin(1e-10)); + REQUIRE(Li2(0.72) == Approx(0.9242506536).margin(1e-10)); + REQUIRE(Li2(0.73) == Approx(0.9420577978).margin(1e-10)); + REQUIRE(Li2(0.74) == Approx(0.9601266752).margin(1e-10)); + REQUIRE(Li2(0.75) == Approx(0.9784693929).margin(1e-10)); + REQUIRE(Li2(0.76) == Approx(0.9970990883).margin(1e-10)); + REQUIRE(Li2(0.77) == Approx(1.016030062).margin(1e-10)); + REQUIRE(Li2(0.78) == Approx(1.035277934).margin(1e-10)); + REQUIRE(Li2(0.79) == Approx(1.05485983).margin(1e-10)); + REQUIRE(Li2(0.8) == Approx(1.0747946).margin(1e-10)); + REQUIRE(Li2(0.81) == Approx(1.095103088).margin(1e-10)); + REQUIRE(Li2(0.82) == Approx(1.115808451).margin(1e-10)); + REQUIRE(Li2(0.83) == Approx(1.13693656).margin(1e-10)); + REQUIRE(Li2(0.84) == Approx(1.158516488).margin(1e-10)); + REQUIRE(Li2(0.85) == Approx(1.180581124).margin(1e-10)); + REQUIRE(Li2(0.86) == Approx(1.203167961).margin(1e-10)); + REQUIRE(Li2(0.87) == Approx(1.226320101).margin(1e-10)); + REQUIRE(Li2(0.88) == Approx(1.250087584).margin(1e-10)); + REQUIRE(Li2(0.89) == Approx(1.27452916).margin(1e-10)); + REQUIRE(Li2(0.9) == Approx(1.299714723).margin(1e-10)); + REQUIRE(Li2(0.91) == Approx(1.325728728).margin(1e-10)); + REQUIRE(Li2(0.92) == Approx(1.352675161).margin(1e-10)); + REQUIRE(Li2(0.93) == Approx(1.380685041).margin(1e-10)); + REQUIRE(Li2(0.94) == Approx(1.4099283).margin(1e-10)); + REQUIRE(Li2(0.95) == Approx(1.440633797).margin(1e-10)); + REQUIRE(Li2(0.96) == Approx(1.47312586).margin(1e-10)); + REQUIRE(Li2(0.97) == Approx(1.507899041).margin(1e-10)); + REQUIRE(Li2(0.98) == Approx(1.545799712).margin(1e-10)); + REQUIRE(Li2(0.99) == Approx(1.588625448).margin(1e-10)); + REQUIRE(Li2(1.) == Approx(1.644934067).margin(1e-10)); +} + +TEST_CASE("Check Incomplete elliptic integral of the second kind", "[utility]") +{ + using namespace BSMPT; + // https://en.wikipedia.org/wiki/Elliptic_integral#Incomplete_elliptic_integral_of_the_second_kind + REQUIRE(EllipIntSecond(0.) == Approx(0.).margin(1e-10)); + REQUIRE(EllipIntSecond(0.01) == Approx(0.01000033333).margin(1e-10)); + REQUIRE(EllipIntSecond(0.02) == Approx(0.02000266656).margin(1e-10)); + REQUIRE(EllipIntSecond(0.03) == Approx(0.03000899919).margin(1e-10)); + REQUIRE(EllipIntSecond(0.04) == Approx(0.04002132992).margin(1e-10)); + REQUIRE(EllipIntSecond(0.05) == Approx(0.05004165627).margin(1e-10)); + REQUIRE(EllipIntSecond(0.06) == Approx(0.06007197416).margin(1e-10)); + REQUIRE(EllipIntSecond(0.07) == Approx(0.07011427756).margin(1e-10)); + REQUIRE(EllipIntSecond(0.08) == Approx(0.08017055807).margin(1e-10)); + REQUIRE(EllipIntSecond(0.09) == Approx(0.0902428046).margin(1e-10)); + REQUIRE(EllipIntSecond(0.1) == Approx(0.100333003).margin(1e-10)); + REQUIRE(EllipIntSecond(0.11) == Approx(0.1104431356).margin(1e-10)); + REQUIRE(EllipIntSecond(0.12) == Approx(0.1205751812).margin(1e-10)); + REQUIRE(EllipIntSecond(0.13) == Approx(0.1307311144).margin(1e-10)); + REQUIRE(EllipIntSecond(0.14) == Approx(0.1409129052).margin(1e-10)); + REQUIRE(EllipIntSecond(0.15) == Approx(0.1511225194).margin(1e-10)); + REQUIRE(EllipIntSecond(0.16) == Approx(0.1613619174).margin(1e-10)); + REQUIRE(EllipIntSecond(0.17) == Approx(0.1716330547).margin(1e-10)); + REQUIRE(EllipIntSecond(0.18) == Approx(0.1819378813).margin(1e-10)); + REQUIRE(EllipIntSecond(0.19) == Approx(0.1922783416).margin(1e-10)); + REQUIRE(EllipIntSecond(0.2) == Approx(0.2026563739).margin(1e-10)); + REQUIRE(EllipIntSecond(0.21) == Approx(0.2130739107).margin(1e-10)); + REQUIRE(EllipIntSecond(0.22) == Approx(0.2235328784).margin(1e-10)); + REQUIRE(EllipIntSecond(0.23) == Approx(0.2340351968).margin(1e-10)); + REQUIRE(EllipIntSecond(0.24) == Approx(0.2445827794).margin(1e-10)); + REQUIRE(EllipIntSecond(0.25) == Approx(0.2551775332).margin(1e-10)); + REQUIRE(EllipIntSecond(0.26) == Approx(0.2658213586).margin(1e-10)); + REQUIRE(EllipIntSecond(0.27) == Approx(0.2765161492).margin(1e-10)); + REQUIRE(EllipIntSecond(0.28) == Approx(0.2872637919).margin(1e-10)); + REQUIRE(EllipIntSecond(0.29) == Approx(0.2980661672).margin(1e-10)); + REQUIRE(EllipIntSecond(0.3) == Approx(0.3089251485).margin(1e-10)); + REQUIRE(EllipIntSecond(0.31) == Approx(0.3198426026).margin(1e-10)); + REQUIRE(EllipIntSecond(0.32) == Approx(0.33082039).margin(1e-10)); + REQUIRE(EllipIntSecond(0.33) == Approx(0.3418603642).margin(1e-10)); + REQUIRE(EllipIntSecond(0.34) == Approx(0.3529643724).margin(1e-10)); + REQUIRE(EllipIntSecond(0.35) == Approx(0.3641342554).margin(1e-10)); + REQUIRE(EllipIntSecond(0.36) == Approx(0.3753718479).margin(1e-10)); + REQUIRE(EllipIntSecond(0.37) == Approx(0.3866789783).margin(1e-10)); + REQUIRE(EllipIntSecond(0.38) == Approx(0.398057469).margin(1e-10)); + REQUIRE(EllipIntSecond(0.39) == Approx(0.4095091368).margin(1e-10)); + REQUIRE(EllipIntSecond(0.4) == Approx(0.4210357926).margin(1e-10)); + REQUIRE(EllipIntSecond(0.41) == Approx(0.4326392423).margin(1e-10)); + REQUIRE(EllipIntSecond(0.42) == Approx(0.4443212862).margin(1e-10)); + REQUIRE(EllipIntSecond(0.43) == Approx(0.4560837198).margin(1e-10)); + REQUIRE(EllipIntSecond(0.44) == Approx(0.4679283339).margin(1e-10)); + REQUIRE(EllipIntSecond(0.45) == Approx(0.4798569147).margin(1e-10)); + REQUIRE(EllipIntSecond(0.46) == Approx(0.4918712444).margin(1e-10)); + REQUIRE(EllipIntSecond(0.47) == Approx(0.5039731011).margin(1e-10)); + REQUIRE(EllipIntSecond(0.48) == Approx(0.5161642591).margin(1e-10)); + REQUIRE(EllipIntSecond(0.49) == Approx(0.5284464895).margin(1e-10)); + REQUIRE(EllipIntSecond(0.5) == Approx(0.5408215603).margin(1e-10)); + REQUIRE(EllipIntSecond(0.51) == Approx(0.5532912368).margin(1e-10)); + REQUIRE(EllipIntSecond(0.52) == Approx(0.5658572817).margin(1e-10)); + REQUIRE(EllipIntSecond(0.53) == Approx(0.5785214555).margin(1e-10)); + REQUIRE(EllipIntSecond(0.54) == Approx(0.5912855172).margin(1e-10)); + REQUIRE(EllipIntSecond(0.55) == Approx(0.604151224).margin(1e-10)); + REQUIRE(EllipIntSecond(0.56) == Approx(0.6171203321).margin(1e-10)); + REQUIRE(EllipIntSecond(0.57) == Approx(0.6301945969).margin(1e-10)); + REQUIRE(EllipIntSecond(0.58) == Approx(0.6433757733).margin(1e-10)); + REQUIRE(EllipIntSecond(0.59) == Approx(0.6566656161).margin(1e-10)); + REQUIRE(EllipIntSecond(0.6) == Approx(0.6700658804).margin(1e-10)); + REQUIRE(EllipIntSecond(0.61) == Approx(0.6835783219).margin(1e-10)); + REQUIRE(EllipIntSecond(0.62) == Approx(0.6972046971).margin(1e-10)); + REQUIRE(EllipIntSecond(0.63) == Approx(0.710946764).margin(1e-10)); + REQUIRE(EllipIntSecond(0.64) == Approx(0.7248062822).margin(1e-10)); + REQUIRE(EllipIntSecond(0.65) == Approx(0.7387850133).margin(1e-10)); + REQUIRE(EllipIntSecond(0.66) == Approx(0.7528847212).margin(1e-10)); + REQUIRE(EllipIntSecond(0.67) == Approx(0.7671071728).margin(1e-10)); + REQUIRE(EllipIntSecond(0.68) == Approx(0.781454138).margin(1e-10)); + REQUIRE(EllipIntSecond(0.69) == Approx(0.7959273901).margin(1e-10)); + REQUIRE(EllipIntSecond(0.7) == Approx(0.8105287063).margin(1e-10)); + REQUIRE(EllipIntSecond(0.71) == Approx(0.8252598681).margin(1e-10)); + REQUIRE(EllipIntSecond(0.72) == Approx(0.8401226613).margin(1e-10)); + REQUIRE(EllipIntSecond(0.73) == Approx(0.855118877).margin(1e-10)); + REQUIRE(EllipIntSecond(0.74) == Approx(0.8702503113).margin(1e-10)); + REQUIRE(EllipIntSecond(0.75) == Approx(0.885518766).margin(1e-10)); + REQUIRE(EllipIntSecond(0.76) == Approx(0.900926049).margin(1e-10)); + REQUIRE(EllipIntSecond(0.77) == Approx(0.9164739743).margin(1e-10)); + REQUIRE(EllipIntSecond(0.78) == Approx(0.932164363).margin(1e-10)); + REQUIRE(EllipIntSecond(0.79) == Approx(0.947999043).margin(1e-10)); + REQUIRE(EllipIntSecond(0.8) == Approx(0.9639798497).margin(1e-10)); + REQUIRE(EllipIntSecond(0.81) == Approx(0.9801086262).margin(1e-10)); + REQUIRE(EllipIntSecond(0.82) == Approx(0.9963872237).margin(1e-10)); + REQUIRE(EllipIntSecond(0.83) == Approx(1.012817502).margin(1e-10)); + REQUIRE(EllipIntSecond(0.84) == Approx(1.02940133).margin(1e-10)); + REQUIRE(EllipIntSecond(0.85) == Approx(1.046140584).margin(1e-10)); + REQUIRE(EllipIntSecond(0.86) == Approx(1.063037153).margin(1e-10)); + REQUIRE(EllipIntSecond(0.87) == Approx(1.080092933).margin(1e-10)); + REQUIRE(EllipIntSecond(0.88) == Approx(1.097309831).margin(1e-10)); + REQUIRE(EllipIntSecond(0.89) == Approx(1.114689765).margin(1e-10)); + REQUIRE(EllipIntSecond(0.9) == Approx(1.132234664).margin(1e-10)); + REQUIRE(EllipIntSecond(0.91) == Approx(1.149946466).margin(1e-10)); + REQUIRE(EllipIntSecond(0.92) == Approx(1.167827125).margin(1e-10)); + REQUIRE(EllipIntSecond(0.93) == Approx(1.185878601).margin(1e-10)); + REQUIRE(EllipIntSecond(0.94) == Approx(1.204102871).margin(1e-10)); + REQUIRE(EllipIntSecond(0.95) == Approx(1.222501923).margin(1e-10)); + REQUIRE(EllipIntSecond(0.96) == Approx(1.241077756).margin(1e-10)); + REQUIRE(EllipIntSecond(0.97) == Approx(1.259832384).margin(1e-10)); + REQUIRE(EllipIntSecond(0.98) == Approx(1.278767835).margin(1e-10)); + REQUIRE(EllipIntSecond(0.99) == Approx(1.29788615).margin(1e-10)); + REQUIRE(EllipIntSecond(1.) == Approx(1.317189382).margin(1e-10)); + REQUIRE(EllipIntSecond(1.01) == Approx(1.336679602).margin(1e-10)); + REQUIRE(EllipIntSecond(1.02) == Approx(1.356358894).margin(1e-10)); + REQUIRE(EllipIntSecond(1.03) == Approx(1.376229358).margin(1e-10)); + REQUIRE(EllipIntSecond(1.04) == Approx(1.396293106).margin(1e-10)); + REQUIRE(EllipIntSecond(1.05) == Approx(1.41655227).margin(1e-10)); + REQUIRE(EllipIntSecond(1.06) == Approx(1.437008997).margin(1e-10)); + REQUIRE(EllipIntSecond(1.07) == Approx(1.457665447).margin(1e-10)); + REQUIRE(EllipIntSecond(1.08) == Approx(1.478523802).margin(1e-10)); + REQUIRE(EllipIntSecond(1.09) == Approx(1.499586256).margin(1e-10)); + REQUIRE(EllipIntSecond(1.1) == Approx(1.520855023).margin(1e-10)); + REQUIRE(EllipIntSecond(1.11) == Approx(1.542332333).margin(1e-10)); + REQUIRE(EllipIntSecond(1.12) == Approx(1.564020437).margin(1e-10)); + REQUIRE(EllipIntSecond(1.13) == Approx(1.585921599).margin(1e-10)); + REQUIRE(EllipIntSecond(1.14) == Approx(1.608038107).margin(1e-10)); + REQUIRE(EllipIntSecond(1.15) == Approx(1.630372263).margin(1e-10)); + REQUIRE(EllipIntSecond(1.16) == Approx(1.652926391).margin(1e-10)); + REQUIRE(EllipIntSecond(1.17) == Approx(1.675702834).margin(1e-10)); + REQUIRE(EllipIntSecond(1.18) == Approx(1.698703953).margin(1e-10)); + REQUIRE(EllipIntSecond(1.19) == Approx(1.721932132).margin(1e-10)); + REQUIRE(EllipIntSecond(1.2) == Approx(1.745389773).margin(1e-10)); + REQUIRE(EllipIntSecond(1.21) == Approx(1.7690793).margin(1e-10)); + REQUIRE(EllipIntSecond(1.22) == Approx(1.793003155).margin(1e-10)); + REQUIRE(EllipIntSecond(1.23) == Approx(1.817163805).margin(1e-10)); + REQUIRE(EllipIntSecond(1.24) == Approx(1.841563737).margin(1e-10)); + REQUIRE(EllipIntSecond(1.25) == Approx(1.86620546).margin(1e-10)); + REQUIRE(EllipIntSecond(1.26) == Approx(1.891091505).margin(1e-10)); + REQUIRE(EllipIntSecond(1.27) == Approx(1.916224424).margin(1e-10)); + REQUIRE(EllipIntSecond(1.28) == Approx(1.941606796).margin(1e-10)); + REQUIRE(EllipIntSecond(1.29) == Approx(1.967241218).margin(1e-10)); + REQUIRE(EllipIntSecond(1.3) == Approx(1.993130314).margin(1e-10)); + REQUIRE(EllipIntSecond(1.31) == Approx(2.01927673).margin(1e-10)); + REQUIRE(EllipIntSecond(1.32) == Approx(2.045683138).margin(1e-10)); + REQUIRE(EllipIntSecond(1.33) == Approx(2.072352231).margin(1e-10)); + REQUIRE(EllipIntSecond(1.34) == Approx(2.09928673).margin(1e-10)); + REQUIRE(EllipIntSecond(1.35) == Approx(2.126489379).margin(1e-10)); + REQUIRE(EllipIntSecond(1.36) == Approx(2.153962948).margin(1e-10)); + REQUIRE(EllipIntSecond(1.37) == Approx(2.181710234).margin(1e-10)); + REQUIRE(EllipIntSecond(1.38) == Approx(2.209734056).margin(1e-10)); + REQUIRE(EllipIntSecond(1.39) == Approx(2.238037264).margin(1e-10)); + REQUIRE(EllipIntSecond(1.4) == Approx(2.266622732).margin(1e-10)); + REQUIRE(EllipIntSecond(1.41) == Approx(2.295493361).margin(1e-10)); + REQUIRE(EllipIntSecond(1.42) == Approx(2.324652079).margin(1e-10)); + REQUIRE(EllipIntSecond(1.43) == Approx(2.354101844).margin(1e-10)); + REQUIRE(EllipIntSecond(1.44) == Approx(2.383845639).margin(1e-10)); + REQUIRE(EllipIntSecond(1.45) == Approx(2.413886476).margin(1e-10)); + REQUIRE(EllipIntSecond(1.46) == Approx(2.444227397).margin(1e-10)); + REQUIRE(EllipIntSecond(1.47) == Approx(2.474871471).margin(1e-10)); + REQUIRE(EllipIntSecond(1.48) == Approx(2.505821798).margin(1e-10)); + REQUIRE(EllipIntSecond(1.49) == Approx(2.537081506).margin(1e-10)); + REQUIRE(EllipIntSecond(1.5) == Approx(2.568653755).margin(1e-10)); + REQUIRE(EllipIntSecond(1.51) == Approx(2.600541733).margin(1e-10)); + REQUIRE(EllipIntSecond(1.52) == Approx(2.63274866).margin(1e-10)); + REQUIRE(EllipIntSecond(1.53) == Approx(2.665277786).margin(1e-10)); + REQUIRE(EllipIntSecond(1.54) == Approx(2.698132394).margin(1e-10)); + REQUIRE(EllipIntSecond(1.55) == Approx(2.731315797).margin(1e-10)); + REQUIRE(EllipIntSecond(1.56) == Approx(2.764831342).margin(1e-10)); + REQUIRE(EllipIntSecond(1.57) == Approx(2.798682405).margin(1e-10)); + REQUIRE(EllipIntSecond(1.58) == Approx(2.832872398).margin(1e-10)); + REQUIRE(EllipIntSecond(1.59) == Approx(2.867404766).margin(1e-10)); + REQUIRE(EllipIntSecond(1.6) == Approx(2.902282985).margin(1e-10)); + REQUIRE(EllipIntSecond(1.61) == Approx(2.937510567).margin(1e-10)); + REQUIRE(EllipIntSecond(1.62) == Approx(2.973091058).margin(1e-10)); + REQUIRE(EllipIntSecond(1.63) == Approx(3.009028038).margin(1e-10)); + REQUIRE(EllipIntSecond(1.64) == Approx(3.045325123).margin(1e-10)); + REQUIRE(EllipIntSecond(1.65) == Approx(3.081985962).margin(1e-10)); + REQUIRE(EllipIntSecond(1.66) == Approx(3.119014242).margin(1e-10)); + REQUIRE(EllipIntSecond(1.67) == Approx(3.156413687).margin(1e-10)); + REQUIRE(EllipIntSecond(1.68) == Approx(3.194188055).margin(1e-10)); + REQUIRE(EllipIntSecond(1.69) == Approx(3.232341141).margin(1e-10)); + REQUIRE(EllipIntSecond(1.7) == Approx(3.27087678).margin(1e-10)); + REQUIRE(EllipIntSecond(1.71) == Approx(3.309798843).margin(1e-10)); + REQUIRE(EllipIntSecond(1.72) == Approx(3.349111238).margin(1e-10)); + REQUIRE(EllipIntSecond(1.73) == Approx(3.388817914).margin(1e-10)); + REQUIRE(EllipIntSecond(1.74) == Approx(3.428922856).margin(1e-10)); + REQUIRE(EllipIntSecond(1.75) == Approx(3.469430092).margin(1e-10)); + REQUIRE(EllipIntSecond(1.76) == Approx(3.510343687).margin(1e-10)); + REQUIRE(EllipIntSecond(1.77) == Approx(3.551667747).margin(1e-10)); + REQUIRE(EllipIntSecond(1.78) == Approx(3.593406418).margin(1e-10)); + REQUIRE(EllipIntSecond(1.79) == Approx(3.635563888).margin(1e-10)); + REQUIRE(EllipIntSecond(1.8) == Approx(3.678144387).margin(1e-10)); + REQUIRE(EllipIntSecond(1.81) == Approx(3.721152185).margin(1e-10)); + REQUIRE(EllipIntSecond(1.82) == Approx(3.764591596).margin(1e-10)); + REQUIRE(EllipIntSecond(1.83) == Approx(3.808466975).margin(1e-10)); + REQUIRE(EllipIntSecond(1.84) == Approx(3.852782723).margin(1e-10)); + REQUIRE(EllipIntSecond(1.85) == Approx(3.897543283).margin(1e-10)); + REQUIRE(EllipIntSecond(1.86) == Approx(3.942753141).margin(1e-10)); + REQUIRE(EllipIntSecond(1.87) == Approx(3.98841683).margin(1e-10)); + REQUIRE(EllipIntSecond(1.88) == Approx(4.034538926).margin(1e-10)); + REQUIRE(EllipIntSecond(1.89) == Approx(4.081124052).margin(1e-10)); + REQUIRE(EllipIntSecond(1.9) == Approx(4.128176876).margin(1e-10)); + REQUIRE(EllipIntSecond(1.91) == Approx(4.175702114).margin(1e-10)); + REQUIRE(EllipIntSecond(1.92) == Approx(4.223704527).margin(1e-10)); + REQUIRE(EllipIntSecond(1.93) == Approx(4.272188924).margin(1e-10)); + REQUIRE(EllipIntSecond(1.94) == Approx(4.321160163).margin(1e-10)); + REQUIRE(EllipIntSecond(1.95) == Approx(4.370623149).margin(1e-10)); + REQUIRE(EllipIntSecond(1.96) == Approx(4.420582838).margin(1e-10)); + REQUIRE(EllipIntSecond(1.97) == Approx(4.471044232).margin(1e-10)); + REQUIRE(EllipIntSecond(1.98) == Approx(4.522012386).margin(1e-10)); + REQUIRE(EllipIntSecond(1.99) == Approx(4.573492405).margin(1e-10)); + REQUIRE(EllipIntSecond(2.) == Approx(4.625489444).margin(1e-10)); + REQUIRE(EllipIntSecond(2.01) == Approx(4.678008709).margin(1e-10)); + REQUIRE(EllipIntSecond(2.02) == Approx(4.731055459).margin(1e-10)); + REQUIRE(EllipIntSecond(2.03) == Approx(4.784635007).margin(1e-10)); + REQUIRE(EllipIntSecond(2.04) == Approx(4.838752716).margin(1e-10)); + REQUIRE(EllipIntSecond(2.05) == Approx(4.893414005).margin(1e-10)); + REQUIRE(EllipIntSecond(2.06) == Approx(4.948624345).margin(1e-10)); + REQUIRE(EllipIntSecond(2.07) == Approx(5.004389264).margin(1e-10)); + REQUIRE(EllipIntSecond(2.08) == Approx(5.060714345).margin(1e-10)); + REQUIRE(EllipIntSecond(2.09) == Approx(5.117605225).margin(1e-10)); + REQUIRE(EllipIntSecond(2.1) == Approx(5.175067599).margin(1e-10)); + REQUIRE(EllipIntSecond(2.11) == Approx(5.233107218).margin(1e-10)); + REQUIRE(EllipIntSecond(2.12) == Approx(5.291729892).margin(1e-10)); + REQUIRE(EllipIntSecond(2.13) == Approx(5.350941488).margin(1e-10)); + REQUIRE(EllipIntSecond(2.14) == Approx(5.410747931).margin(1e-10)); + REQUIRE(EllipIntSecond(2.15) == Approx(5.471155208).margin(1e-10)); + REQUIRE(EllipIntSecond(2.16) == Approx(5.532169364).margin(1e-10)); + REQUIRE(EllipIntSecond(2.17) == Approx(5.593796504).margin(1e-10)); + REQUIRE(EllipIntSecond(2.18) == Approx(5.656042795).margin(1e-10)); + REQUIRE(EllipIntSecond(2.19) == Approx(5.718914467).margin(1e-10)); + REQUIRE(EllipIntSecond(2.2) == Approx(5.78241781).margin(1e-10)); + REQUIRE(EllipIntSecond(2.21) == Approx(5.846559179).margin(1e-10)); + REQUIRE(EllipIntSecond(2.22) == Approx(5.911344992).margin(1e-10)); + REQUIRE(EllipIntSecond(2.23) == Approx(5.976781731).margin(1e-10)); + REQUIRE(EllipIntSecond(2.24) == Approx(6.042875944).margin(1e-10)); + REQUIRE(EllipIntSecond(2.25) == Approx(6.109634243).margin(1e-10)); + REQUIRE(EllipIntSecond(2.26) == Approx(6.177063308).margin(1e-10)); + REQUIRE(EllipIntSecond(2.27) == Approx(6.245169884).margin(1e-10)); + REQUIRE(EllipIntSecond(2.28) == Approx(6.313960786).margin(1e-10)); + REQUIRE(EllipIntSecond(2.29) == Approx(6.383442896).margin(1e-10)); + REQUIRE(EllipIntSecond(2.3) == Approx(6.453623166).margin(1e-10)); + REQUIRE(EllipIntSecond(2.31) == Approx(6.524508615).margin(1e-10)); + REQUIRE(EllipIntSecond(2.32) == Approx(6.596106337).margin(1e-10)); + REQUIRE(EllipIntSecond(2.33) == Approx(6.668423492).margin(1e-10)); + REQUIRE(EllipIntSecond(2.34) == Approx(6.741467316).margin(1e-10)); + REQUIRE(EllipIntSecond(2.35) == Approx(6.815245115).margin(1e-10)); + REQUIRE(EllipIntSecond(2.36) == Approx(6.889764271).margin(1e-10)); + REQUIRE(EllipIntSecond(2.37) == Approx(6.965032237).margin(1e-10)); + REQUIRE(EllipIntSecond(2.38) == Approx(7.041056542).margin(1e-10)); + REQUIRE(EllipIntSecond(2.39) == Approx(7.117844791).margin(1e-10)); + REQUIRE(EllipIntSecond(2.4) == Approx(7.195404666).margin(1e-10)); + REQUIRE(EllipIntSecond(2.41) == Approx(7.273743925).margin(1e-10)); + REQUIRE(EllipIntSecond(2.42) == Approx(7.352870403).margin(1e-10)); + REQUIRE(EllipIntSecond(2.43) == Approx(7.432792015).margin(1e-10)); + REQUIRE(EllipIntSecond(2.44) == Approx(7.513516757).margin(1e-10)); + REQUIRE(EllipIntSecond(2.45) == Approx(7.595052701).margin(1e-10)); + REQUIRE(EllipIntSecond(2.46) == Approx(7.677408003).margin(1e-10)); + REQUIRE(EllipIntSecond(2.47) == Approx(7.760590902).margin(1e-10)); + REQUIRE(EllipIntSecond(2.48) == Approx(7.844609717).margin(1e-10)); + REQUIRE(EllipIntSecond(2.49) == Approx(7.929472851).margin(1e-10)); + REQUIRE(EllipIntSecond(2.5) == Approx(8.015188793).margin(1e-10)); + REQUIRE(EllipIntSecond(2.51) == Approx(8.101766116).margin(1e-10)); + REQUIRE(EllipIntSecond(2.52) == Approx(8.189213479).margin(1e-10)); + REQUIRE(EllipIntSecond(2.53) == Approx(8.277539628).margin(1e-10)); + REQUIRE(EllipIntSecond(2.54) == Approx(8.366753399).margin(1e-10)); + REQUIRE(EllipIntSecond(2.55) == Approx(8.456863713).margin(1e-10)); + REQUIRE(EllipIntSecond(2.56) == Approx(8.547879583).margin(1e-10)); + REQUIRE(EllipIntSecond(2.57) == Approx(8.639810112).margin(1e-10)); + REQUIRE(EllipIntSecond(2.58) == Approx(8.732664494).margin(1e-10)); + REQUIRE(EllipIntSecond(2.59) == Approx(8.826452017).margin(1e-10)); + REQUIRE(EllipIntSecond(2.6) == Approx(8.92118206).margin(1e-10)); + REQUIRE(EllipIntSecond(2.61) == Approx(9.016864097).margin(1e-10)); + REQUIRE(EllipIntSecond(2.62) == Approx(9.113507699).margin(1e-10)); + REQUIRE(EllipIntSecond(2.63) == Approx(9.21112253).margin(1e-10)); + REQUIRE(EllipIntSecond(2.64) == Approx(9.309718353).margin(1e-10)); + REQUIRE(EllipIntSecond(2.65) == Approx(9.409305028).margin(1e-10)); + REQUIRE(EllipIntSecond(2.66) == Approx(9.509892517).margin(1e-10)); + REQUIRE(EllipIntSecond(2.67) == Approx(9.611490878).margin(1e-10)); + REQUIRE(EllipIntSecond(2.68) == Approx(9.714110272).margin(1e-10)); + REQUIRE(EllipIntSecond(2.69) == Approx(9.817760962).margin(1e-10)); + REQUIRE(EllipIntSecond(2.7) == Approx(9.922453315).margin(1e-10)); + REQUIRE(EllipIntSecond(2.71) == Approx(10.0281978).margin(1e-10)); + REQUIRE(EllipIntSecond(2.72) == Approx(10.13500499).margin(1e-10)); + REQUIRE(EllipIntSecond(2.73) == Approx(10.24288558).margin(1e-10)); + REQUIRE(EllipIntSecond(2.74) == Approx(10.35185034).margin(1e-10)); + REQUIRE(EllipIntSecond(2.75) == Approx(10.46191017).margin(1e-10)); + REQUIRE(EllipIntSecond(2.76) == Approx(10.57307609).margin(1e-10)); + REQUIRE(EllipIntSecond(2.77) == Approx(10.68535921).margin(1e-10)); + REQUIRE(EllipIntSecond(2.78) == Approx(10.79877076).margin(1e-10)); + REQUIRE(EllipIntSecond(2.79) == Approx(10.91332208).margin(1e-10)); + REQUIRE(EllipIntSecond(2.8) == Approx(11.02902463).margin(1e-10)); + REQUIRE(EllipIntSecond(2.81) == Approx(11.14588997).margin(1e-10)); + REQUIRE(EllipIntSecond(2.82) == Approx(11.2639298).margin(1e-10)); + REQUIRE(EllipIntSecond(2.83) == Approx(11.38315592).margin(1e-10)); + REQUIRE(EllipIntSecond(2.84) == Approx(11.50358026).margin(1e-10)); + REQUIRE(EllipIntSecond(2.85) == Approx(11.62521484).margin(1e-10)); + REQUIRE(EllipIntSecond(2.86) == Approx(11.74807185).margin(1e-10)); + REQUIRE(EllipIntSecond(2.87) == Approx(11.87216357).margin(1e-10)); + REQUIRE(EllipIntSecond(2.88) == Approx(11.9975024).margin(1e-10)); + REQUIRE(EllipIntSecond(2.89) == Approx(12.12410089).margin(1e-10)); + REQUIRE(EllipIntSecond(2.9) == Approx(12.25197168).margin(1e-10)); + REQUIRE(EllipIntSecond(2.91) == Approx(12.38112758).margin(1e-10)); + REQUIRE(EllipIntSecond(2.92) == Approx(12.51158149).margin(1e-10)); + REQUIRE(EllipIntSecond(2.93) == Approx(12.64334646).margin(1e-10)); + REQUIRE(EllipIntSecond(2.94) == Approx(12.77643567).margin(1e-10)); + REQUIRE(EllipIntSecond(2.95) == Approx(12.91086243).margin(1e-10)); + REQUIRE(EllipIntSecond(2.96) == Approx(13.04664018).margin(1e-10)); + REQUIRE(EllipIntSecond(2.97) == Approx(13.18378249).margin(1e-10)); + REQUIRE(EllipIntSecond(2.98) == Approx(13.3223031).margin(1e-10)); + REQUIRE(EllipIntSecond(2.99) == Approx(13.46221583).margin(1e-10)); + REQUIRE(EllipIntSecond(3.) == Approx(13.6035347).margin(1e-10)); + REQUIRE(EllipIntSecond(3.01) == Approx(13.74627383).margin(1e-10)); + REQUIRE(EllipIntSecond(3.02) == Approx(13.89044749).margin(1e-10)); + REQUIRE(EllipIntSecond(3.03) == Approx(14.03607011).margin(1e-10)); + REQUIRE(EllipIntSecond(3.04) == Approx(14.18315624).margin(1e-10)); + REQUIRE(EllipIntSecond(3.05) == Approx(14.33172059).margin(1e-10)); + REQUIRE(EllipIntSecond(3.06) == Approx(14.48177803).margin(1e-10)); + REQUIRE(EllipIntSecond(3.07) == Approx(14.63334355).margin(1e-10)); + REQUIRE(EllipIntSecond(3.08) == Approx(14.78643232).margin(1e-10)); + REQUIRE(EllipIntSecond(3.09) == Approx(14.94105965).margin(1e-10)); + REQUIRE(EllipIntSecond(3.1) == Approx(15.09724099).margin(1e-10)); + REQUIRE(EllipIntSecond(3.11) == Approx(15.25499196).margin(1e-10)); + REQUIRE(EllipIntSecond(3.12) == Approx(15.41432835).margin(1e-10)); + REQUIRE(EllipIntSecond(3.13) == Approx(15.57526608).margin(1e-10)); + REQUIRE(EllipIntSecond(3.14) == Approx(15.73782125).margin(1e-10)); + REQUIRE(EllipIntSecond(3.15) == Approx(15.90201012).margin(1e-10)); + REQUIRE(EllipIntSecond(3.16) == Approx(16.0678491).margin(1e-10)); + REQUIRE(EllipIntSecond(3.17) == Approx(16.23535478).margin(1e-10)); + REQUIRE(EllipIntSecond(3.18) == Approx(16.40454391).margin(1e-10)); + REQUIRE(EllipIntSecond(3.19) == Approx(16.57543341).margin(1e-10)); + REQUIRE(EllipIntSecond(3.2) == Approx(16.74804036).margin(1e-10)); + REQUIRE(EllipIntSecond(3.21) == Approx(16.92238204).margin(1e-10)); + REQUIRE(EllipIntSecond(3.22) == Approx(17.09847587).margin(1e-10)); + REQUIRE(EllipIntSecond(3.23) == Approx(17.27633946).margin(1e-10)); + REQUIRE(EllipIntSecond(3.24) == Approx(17.4559906).margin(1e-10)); + REQUIRE(EllipIntSecond(3.25) == Approx(17.63744726).margin(1e-10)); + REQUIRE(EllipIntSecond(3.26) == Approx(17.82072758).margin(1e-10)); + REQUIRE(EllipIntSecond(3.27) == Approx(18.00584988).margin(1e-10)); + REQUIRE(EllipIntSecond(3.28) == Approx(18.1928327).margin(1e-10)); + REQUIRE(EllipIntSecond(3.29) == Approx(18.38169471).margin(1e-10)); + REQUIRE(EllipIntSecond(3.3) == Approx(18.57245481).margin(1e-10)); + REQUIRE(EllipIntSecond(3.31) == Approx(18.76513207).margin(1e-10)); + REQUIRE(EllipIntSecond(3.32) == Approx(18.95974576).margin(1e-10)); + REQUIRE(EllipIntSecond(3.33) == Approx(19.15631535).margin(1e-10)); + REQUIRE(EllipIntSecond(3.34) == Approx(19.35486049).margin(1e-10)); + REQUIRE(EllipIntSecond(3.35) == Approx(19.55540104).margin(1e-10)); + REQUIRE(EllipIntSecond(3.36) == Approx(19.75795704).margin(1e-10)); + REQUIRE(EllipIntSecond(3.37) == Approx(19.96254876).margin(1e-10)); + REQUIRE(EllipIntSecond(3.38) == Approx(20.16919665).margin(1e-10)); + REQUIRE(EllipIntSecond(3.39) == Approx(20.37792139).margin(1e-10)); + REQUIRE(EllipIntSecond(3.4) == Approx(20.58874384).margin(1e-10)); + REQUIRE(EllipIntSecond(3.41) == Approx(20.80168508).margin(1e-10)); + REQUIRE(EllipIntSecond(3.42) == Approx(21.01676642).margin(1e-10)); + REQUIRE(EllipIntSecond(3.43) == Approx(21.23400935).margin(1e-10)); + REQUIRE(EllipIntSecond(3.44) == Approx(21.4534356).margin(1e-10)); + REQUIRE(EllipIntSecond(3.45) == Approx(21.67506712).margin(1e-10)); + REQUIRE(EllipIntSecond(3.46) == Approx(21.89892607).margin(1e-10)); + REQUIRE(EllipIntSecond(3.47) == Approx(22.12503484).margin(1e-10)); + REQUIRE(EllipIntSecond(3.48) == Approx(22.35341603).margin(1e-10)); + REQUIRE(EllipIntSecond(3.49) == Approx(22.58409249).margin(1e-10)); + REQUIRE(EllipIntSecond(3.5) == Approx(22.81708728).margin(1e-10)); + REQUIRE(EllipIntSecond(3.51) == Approx(23.0524237).margin(1e-10)); + REQUIRE(EllipIntSecond(3.52) == Approx(23.29012529).margin(1e-10)); + REQUIRE(EllipIntSecond(3.53) == Approx(23.53021582).margin(1e-10)); + REQUIRE(EllipIntSecond(3.54) == Approx(23.77271929).margin(1e-10)); + REQUIRE(EllipIntSecond(3.55) == Approx(24.01765996).margin(1e-10)); + REQUIRE(EllipIntSecond(3.56) == Approx(24.26506232).margin(1e-10)); + REQUIRE(EllipIntSecond(3.57) == Approx(24.51495111).margin(1e-10)); + REQUIRE(EllipIntSecond(3.58) == Approx(24.76735133).margin(1e-10)); + REQUIRE(EllipIntSecond(3.59) == Approx(25.0222882).margin(1e-10)); + REQUIRE(EllipIntSecond(3.6) == Approx(25.27978723).margin(1e-10)); + REQUIRE(EllipIntSecond(3.61) == Approx(25.53987417).margin(1e-10)); + REQUIRE(EllipIntSecond(3.62) == Approx(25.80257502).margin(1e-10)); + REQUIRE(EllipIntSecond(3.63) == Approx(26.06791605).margin(1e-10)); + REQUIRE(EllipIntSecond(3.64) == Approx(26.33592381).margin(1e-10)); + REQUIRE(EllipIntSecond(3.65) == Approx(26.60662508).margin(1e-10)); + REQUIRE(EllipIntSecond(3.66) == Approx(26.88004694).margin(1e-10)); + REQUIRE(EllipIntSecond(3.67) == Approx(27.15621674).margin(1e-10)); + REQUIRE(EllipIntSecond(3.68) == Approx(27.43516209).margin(1e-10)); + REQUIRE(EllipIntSecond(3.69) == Approx(27.71691088).margin(1e-10)); + REQUIRE(EllipIntSecond(3.7) == Approx(28.0014913).margin(1e-10)); + REQUIRE(EllipIntSecond(3.71) == Approx(28.28893179).margin(1e-10)); + REQUIRE(EllipIntSecond(3.72) == Approx(28.5792611).margin(1e-10)); + REQUIRE(EllipIntSecond(3.73) == Approx(28.87250827).margin(1e-10)); + REQUIRE(EllipIntSecond(3.74) == Approx(29.16870262).margin(1e-10)); + REQUIRE(EllipIntSecond(3.75) == Approx(29.46787378).margin(1e-10)); + REQUIRE(EllipIntSecond(3.76) == Approx(29.77005165).margin(1e-10)); + REQUIRE(EllipIntSecond(3.77) == Approx(30.07526645).margin(1e-10)); + REQUIRE(EllipIntSecond(3.78) == Approx(30.38354872).margin(1e-10)); + REQUIRE(EllipIntSecond(3.79) == Approx(30.69492927).margin(1e-10)); + REQUIRE(EllipIntSecond(3.8) == Approx(31.00943925).margin(1e-10)); + REQUIRE(EllipIntSecond(3.81) == Approx(31.3271101).margin(1e-10)); + REQUIRE(EllipIntSecond(3.82) == Approx(31.64797359).margin(1e-10)); + REQUIRE(EllipIntSecond(3.83) == Approx(31.97206182).margin(1e-10)); + REQUIRE(EllipIntSecond(3.84) == Approx(32.29940719).margin(1e-10)); + REQUIRE(EllipIntSecond(3.85) == Approx(32.63004243).margin(1e-10)); + REQUIRE(EllipIntSecond(3.86) == Approx(32.9640006).margin(1e-10)); + REQUIRE(EllipIntSecond(3.87) == Approx(33.30131512).margin(1e-10)); + REQUIRE(EllipIntSecond(3.88) == Approx(33.6420197).margin(1e-10)); + REQUIRE(EllipIntSecond(3.89) == Approx(33.98614841).margin(1e-10)); + REQUIRE(EllipIntSecond(3.9) == Approx(34.33373567).margin(1e-10)); + REQUIRE(EllipIntSecond(3.91) == Approx(34.68481625).margin(1e-10)); + REQUIRE(EllipIntSecond(3.92) == Approx(35.03942524).margin(1e-10)); + REQUIRE(EllipIntSecond(3.93) == Approx(35.39759811).margin(1e-10)); + REQUIRE(EllipIntSecond(3.94) == Approx(35.75937067).margin(1e-10)); + REQUIRE(EllipIntSecond(3.95) == Approx(36.12477911).margin(1e-10)); + REQUIRE(EllipIntSecond(3.96) == Approx(36.49385997).margin(1e-10)); + REQUIRE(EllipIntSecond(3.97) == Approx(36.86665015).margin(1e-10)); + REQUIRE(EllipIntSecond(3.98) == Approx(37.24318693).margin(1e-10)); + REQUIRE(EllipIntSecond(3.99) == Approx(37.62350796).margin(1e-10)); + REQUIRE(EllipIntSecond(4.) == Approx(38.00765129).margin(1e-10)); + REQUIRE(EllipIntSecond(4.01) == Approx(38.39565532).margin(1e-10)); + REQUIRE(EllipIntSecond(4.02) == Approx(38.78755885).margin(1e-10)); + REQUIRE(EllipIntSecond(4.03) == Approx(39.18340108).margin(1e-10)); + REQUIRE(EllipIntSecond(4.04) == Approx(39.58322159).margin(1e-10)); + REQUIRE(EllipIntSecond(4.05) == Approx(39.98706036).margin(1e-10)); + REQUIRE(EllipIntSecond(4.06) == Approx(40.39495778).margin(1e-10)); + REQUIRE(EllipIntSecond(4.07) == Approx(40.80695463).margin(1e-10)); + REQUIRE(EllipIntSecond(4.08) == Approx(41.22309212).margin(1e-10)); + REQUIRE(EllipIntSecond(4.09) == Approx(41.64341186).margin(1e-10)); + REQUIRE(EllipIntSecond(4.1) == Approx(42.06795589).margin(1e-10)); + REQUIRE(EllipIntSecond(4.11) == Approx(42.49676665).margin(1e-10)); + REQUIRE(EllipIntSecond(4.12) == Approx(42.92988703).margin(1e-10)); + REQUIRE(EllipIntSecond(4.13) == Approx(43.36736034).margin(1e-10)); + REQUIRE(EllipIntSecond(4.14) == Approx(43.80923033).margin(1e-10)); + REQUIRE(EllipIntSecond(4.15) == Approx(44.25554119).margin(1e-10)); + REQUIRE(EllipIntSecond(4.16) == Approx(44.70633755).margin(1e-10)); + REQUIRE(EllipIntSecond(4.17) == Approx(45.16166448).margin(1e-10)); + REQUIRE(EllipIntSecond(4.18) == Approx(45.62156753).margin(1e-10)); + REQUIRE(EllipIntSecond(4.19) == Approx(46.08609267).margin(1e-10)); + REQUIRE(EllipIntSecond(4.2) == Approx(46.55528638).margin(1e-10)); + REQUIRE(EllipIntSecond(4.21) == Approx(47.02919555).margin(1e-10)); + REQUIRE(EllipIntSecond(4.22) == Approx(47.5078676).margin(1e-10)); + REQUIRE(EllipIntSecond(4.23) == Approx(47.99135037).margin(1e-10)); + REQUIRE(EllipIntSecond(4.24) == Approx(48.47969223).margin(1e-10)); + REQUIRE(EllipIntSecond(4.25) == Approx(48.97294201).margin(1e-10)); + REQUIRE(EllipIntSecond(4.26) == Approx(49.47114903).margin(1e-10)); + REQUIRE(EllipIntSecond(4.27) == Approx(49.97436311).margin(1e-10)); + REQUIRE(EllipIntSecond(4.28) == Approx(50.48263458).margin(1e-10)); + REQUIRE(EllipIntSecond(4.29) == Approx(50.99601425).margin(1e-10)); + REQUIRE(EllipIntSecond(4.3) == Approx(51.51455349).margin(1e-10)); + REQUIRE(EllipIntSecond(4.31) == Approx(52.03830412).margin(1e-10)); + REQUIRE(EllipIntSecond(4.32) == Approx(52.56731854).margin(1e-10)); + REQUIRE(EllipIntSecond(4.33) == Approx(53.10164964).margin(1e-10)); + REQUIRE(EllipIntSecond(4.34) == Approx(53.64135086).margin(1e-10)); + REQUIRE(EllipIntSecond(4.35) == Approx(54.18647616).margin(1e-10)); + REQUIRE(EllipIntSecond(4.36) == Approx(54.73708006).margin(1e-10)); + REQUIRE(EllipIntSecond(4.37) == Approx(55.29321763).margin(1e-10)); + REQUIRE(EllipIntSecond(4.38) == Approx(55.85494447).margin(1e-10)); + REQUIRE(EllipIntSecond(4.39) == Approx(56.42231676).margin(1e-10)); + REQUIRE(EllipIntSecond(4.4) == Approx(56.99539123).margin(1e-10)); + REQUIRE(EllipIntSecond(4.41) == Approx(57.5742252).margin(1e-10)); + REQUIRE(EllipIntSecond(4.42) == Approx(58.15887655).margin(1e-10)); + REQUIRE(EllipIntSecond(4.43) == Approx(58.74940374).margin(1e-10)); + REQUIRE(EllipIntSecond(4.44) == Approx(59.34586582).margin(1e-10)); + REQUIRE(EllipIntSecond(4.45) == Approx(59.94832245).margin(1e-10)); + REQUIRE(EllipIntSecond(4.46) == Approx(60.55683387).margin(1e-10)); + REQUIRE(EllipIntSecond(4.47) == Approx(61.17146093).margin(1e-10)); + REQUIRE(EllipIntSecond(4.48) == Approx(61.7922651).margin(1e-10)); + REQUIRE(EllipIntSecond(4.49) == Approx(62.41930845).margin(1e-10)); + REQUIRE(EllipIntSecond(4.5) == Approx(63.05265369).margin(1e-10)); + REQUIRE(EllipIntSecond(4.51) == Approx(63.69236415).margin(1e-10)); + REQUIRE(EllipIntSecond(4.52) == Approx(64.33850382).margin(1e-10)); + REQUIRE(EllipIntSecond(4.53) == Approx(64.99113729).margin(1e-10)); + REQUIRE(EllipIntSecond(4.54) == Approx(65.65032984).margin(1e-10)); + REQUIRE(EllipIntSecond(4.55) == Approx(66.31614738).margin(1e-10)); + REQUIRE(EllipIntSecond(4.56) == Approx(66.9886565).margin(1e-10)); + REQUIRE(EllipIntSecond(4.57) == Approx(67.66792446).margin(1e-10)); + REQUIRE(EllipIntSecond(4.58) == Approx(68.35401916).margin(1e-10)); + REQUIRE(EllipIntSecond(4.59) == Approx(69.04700924).margin(1e-10)); + REQUIRE(EllipIntSecond(4.6) == Approx(69.74696398).margin(1e-10)); + REQUIRE(EllipIntSecond(4.61) == Approx(70.45395338).margin(1e-10)); + REQUIRE(EllipIntSecond(4.62) == Approx(71.16804814).margin(1e-10)); + REQUIRE(EllipIntSecond(4.63) == Approx(71.88931967).margin(1e-10)); + REQUIRE(EllipIntSecond(4.64) == Approx(72.61784011).margin(1e-10)); + REQUIRE(EllipIntSecond(4.65) == Approx(73.35368229).margin(1e-10)); + REQUIRE(EllipIntSecond(4.66) == Approx(74.09691981).margin(1e-10)); + REQUIRE(EllipIntSecond(4.67) == Approx(74.847627).margin(1e-10)); + REQUIRE(EllipIntSecond(4.68) == Approx(75.60587891).margin(1e-10)); + REQUIRE(EllipIntSecond(4.69) == Approx(76.37175139).margin(1e-10)); + REQUIRE(EllipIntSecond(4.7) == Approx(77.14532101).margin(1e-10)); + REQUIRE(EllipIntSecond(4.71) == Approx(77.92666513).margin(1e-10)); + REQUIRE(EllipIntSecond(4.72) == Approx(78.71586189).margin(1e-10)); + REQUIRE(EllipIntSecond(4.73) == Approx(79.51299022).margin(1e-10)); + REQUIRE(EllipIntSecond(4.74) == Approx(80.31812981).margin(1e-10)); + REQUIRE(EllipIntSecond(4.75) == Approx(81.13136119).margin(1e-10)); + REQUIRE(EllipIntSecond(4.76) == Approx(81.95276569).margin(1e-10)); + REQUIRE(EllipIntSecond(4.77) == Approx(82.78242543).margin(1e-10)); + REQUIRE(EllipIntSecond(4.78) == Approx(83.6204234).margin(1e-10)); + REQUIRE(EllipIntSecond(4.79) == Approx(84.46684338).margin(1e-10)); + REQUIRE(EllipIntSecond(4.8) == Approx(85.32177003).margin(1e-10)); + REQUIRE(EllipIntSecond(4.81) == Approx(86.18528883).margin(1e-10)); + REQUIRE(EllipIntSecond(4.82) == Approx(87.05748614).margin(1e-10)); + REQUIRE(EllipIntSecond(4.83) == Approx(87.93844918).margin(1e-10)); + REQUIRE(EllipIntSecond(4.84) == Approx(88.82826605).margin(1e-10)); + REQUIRE(EllipIntSecond(4.85) == Approx(89.72702572).margin(1e-10)); + REQUIRE(EllipIntSecond(4.86) == Approx(90.63481808).margin(1e-10)); + REQUIRE(EllipIntSecond(4.87) == Approx(91.5517339).margin(1e-10)); + REQUIRE(EllipIntSecond(4.88) == Approx(92.47786488).margin(1e-10)); + REQUIRE(EllipIntSecond(4.89) == Approx(93.41330363).margin(1e-10)); + REQUIRE(EllipIntSecond(4.9) == Approx(94.35814369).margin(1e-10)); + REQUIRE(EllipIntSecond(4.91) == Approx(95.31247956).margin(1e-10)); + REQUIRE(EllipIntSecond(4.92) == Approx(96.27640666).margin(1e-10)); + REQUIRE(EllipIntSecond(4.93) == Approx(97.25002139).margin(1e-10)); + REQUIRE(EllipIntSecond(4.94) == Approx(98.23342111).margin(1e-10)); + REQUIRE(EllipIntSecond(4.95) == Approx(99.22670416).margin(1e-10)); + REQUIRE(EllipIntSecond(4.96) == Approx(100.2299699).margin(1e-10)); + REQUIRE(EllipIntSecond(4.97) == Approx(101.2433186).margin(1e-10)); + REQUIRE(EllipIntSecond(4.98) == Approx(102.2668516).margin(1e-10)); + REQUIRE(EllipIntSecond(4.99) == Approx(103.3006713).margin(1e-10)); + REQUIRE(EllipIntSecond(5.) == Approx(104.3448811).margin(1e-10)); + REQUIRE(EllipIntSecond(5.01) == Approx(105.3995853).margin(1e-10)); + REQUIRE(EllipIntSecond(5.02) == Approx(106.4648895).margin(1e-10)); + REQUIRE(EllipIntSecond(5.03) == Approx(107.5409002).margin(1e-10)); + REQUIRE(EllipIntSecond(5.04) == Approx(108.627725).margin(1e-10)); + REQUIRE(EllipIntSecond(5.05) == Approx(109.7254725).margin(1e-10)); + REQUIRE(EllipIntSecond(5.06) == Approx(110.8342526).margin(1e-10)); + REQUIRE(EllipIntSecond(5.07) == Approx(111.9541761).margin(1e-10)); + REQUIRE(EllipIntSecond(5.08) == Approx(113.085355).margin(1e-10)); + REQUIRE(EllipIntSecond(5.09) == Approx(114.2279025).margin(1e-10)); + REQUIRE(EllipIntSecond(5.1) == Approx(115.3819328).margin(1e-10)); + REQUIRE(EllipIntSecond(5.11) == Approx(116.5475612).margin(1e-10)); + REQUIRE(EllipIntSecond(5.12) == Approx(117.7249044).margin(1e-10)); + REQUIRE(EllipIntSecond(5.13) == Approx(118.9140802).margin(1e-10)); + REQUIRE(EllipIntSecond(5.14) == Approx(120.1152073).margin(1e-10)); + REQUIRE(EllipIntSecond(5.15) == Approx(121.328406).margin(1e-10)); + REQUIRE(EllipIntSecond(5.16) == Approx(122.5537975).margin(1e-10)); + REQUIRE(EllipIntSecond(5.17) == Approx(123.7915044).margin(1e-10)); + REQUIRE(EllipIntSecond(5.18) == Approx(125.0416504).margin(1e-10)); + REQUIRE(EllipIntSecond(5.19) == Approx(126.3043607).margin(1e-10)); + REQUIRE(EllipIntSecond(5.2) == Approx(127.5797613).margin(1e-10)); + REQUIRE(EllipIntSecond(5.21) == Approx(128.86798).margin(1e-10)); + REQUIRE(EllipIntSecond(5.22) == Approx(130.1691455).margin(1e-10)); + REQUIRE(EllipIntSecond(5.23) == Approx(131.4833879).margin(1e-10)); + REQUIRE(EllipIntSecond(5.24) == Approx(132.8108387).margin(1e-10)); + REQUIRE(EllipIntSecond(5.25) == Approx(134.1516306).margin(1e-10)); + REQUIRE(EllipIntSecond(5.26) == Approx(135.5058976).margin(1e-10)); + REQUIRE(EllipIntSecond(5.27) == Approx(136.8737753).margin(1e-10)); + REQUIRE(EllipIntSecond(5.28) == Approx(138.2554003).margin(1e-10)); + REQUIRE(EllipIntSecond(5.29) == Approx(139.650911).margin(1e-10)); + REQUIRE(EllipIntSecond(5.3) == Approx(141.0604467).margin(1e-10)); + REQUIRE(EllipIntSecond(5.31) == Approx(142.4841485).margin(1e-10)); + REQUIRE(EllipIntSecond(5.32) == Approx(143.9221588).margin(1e-10)); + REQUIRE(EllipIntSecond(5.33) == Approx(145.3746213).margin(1e-10)); + REQUIRE(EllipIntSecond(5.34) == Approx(146.8416813).margin(1e-10)); + REQUIRE(EllipIntSecond(5.35) == Approx(148.3234855).margin(1e-10)); + REQUIRE(EllipIntSecond(5.36) == Approx(149.820182).margin(1e-10)); + REQUIRE(EllipIntSecond(5.37) == Approx(151.3319206).margin(1e-10)); + REQUIRE(EllipIntSecond(5.38) == Approx(152.8588525).margin(1e-10)); + REQUIRE(EllipIntSecond(5.39) == Approx(154.4011303).margin(1e-10)); + REQUIRE(EllipIntSecond(5.4) == Approx(155.9589082).margin(1e-10)); + REQUIRE(EllipIntSecond(5.41) == Approx(157.532342).margin(1e-10)); + REQUIRE(EllipIntSecond(5.42) == Approx(159.1215891).margin(1e-10)); + REQUIRE(EllipIntSecond(5.43) == Approx(160.7268084).margin(1e-10)); + REQUIRE(EllipIntSecond(5.44) == Approx(162.3481605).margin(1e-10)); + REQUIRE(EllipIntSecond(5.45) == Approx(163.9858074).margin(1e-10)); + REQUIRE(EllipIntSecond(5.46) == Approx(165.6399129).margin(1e-10)); + REQUIRE(EllipIntSecond(5.47) == Approx(167.3106424).margin(1e-10)); + REQUIRE(EllipIntSecond(5.48) == Approx(168.9981631).margin(1e-10)); + REQUIRE(EllipIntSecond(5.49) == Approx(170.7026436).margin(1e-10)); + REQUIRE(EllipIntSecond(5.5) == Approx(172.4242545).margin(1e-10)); + REQUIRE(EllipIntSecond(5.51) == Approx(174.1631678).margin(1e-10)); + REQUIRE(EllipIntSecond(5.52) == Approx(175.9195575).margin(1e-10)); + REQUIRE(EllipIntSecond(5.53) == Approx(177.6935992).margin(1e-10)); + REQUIRE(EllipIntSecond(5.54) == Approx(179.4854703).margin(1e-10)); + REQUIRE(EllipIntSecond(5.55) == Approx(181.29535).margin(1e-10)); + REQUIRE(EllipIntSecond(5.56) == Approx(183.1234193).margin(1e-10)); + REQUIRE(EllipIntSecond(5.57) == Approx(184.9698611).margin(1e-10)); + REQUIRE(EllipIntSecond(5.58) == Approx(186.8348598).margin(1e-10)); + REQUIRE(EllipIntSecond(5.59) == Approx(188.7186021).margin(1e-10)); + REQUIRE(EllipIntSecond(5.6) == Approx(190.6212764).margin(1e-10)); + REQUIRE(EllipIntSecond(5.61) == Approx(192.5430728).margin(1e-10)); + REQUIRE(EllipIntSecond(5.62) == Approx(194.4841836).margin(1e-10)); + REQUIRE(EllipIntSecond(5.63) == Approx(196.4448029).margin(1e-10)); + REQUIRE(EllipIntSecond(5.64) == Approx(198.4251268).margin(1e-10)); + REQUIRE(EllipIntSecond(5.65) == Approx(200.4253532).margin(1e-10)); + REQUIRE(EllipIntSecond(5.66) == Approx(202.4456822).margin(1e-10)); + REQUIRE(EllipIntSecond(5.67) == Approx(204.4863159).margin(1e-10)); + REQUIRE(EllipIntSecond(5.68) == Approx(206.5474583).margin(1e-10)); + REQUIRE(EllipIntSecond(5.69) == Approx(208.6293155).margin(1e-10)); + REQUIRE(EllipIntSecond(5.7) == Approx(210.7320958).margin(1e-10)); + REQUIRE(EllipIntSecond(5.71) == Approx(212.8560093).margin(1e-10)); + REQUIRE(EllipIntSecond(5.72) == Approx(215.0012685).margin(1e-10)); + REQUIRE(EllipIntSecond(5.73) == Approx(217.1680879).margin(1e-10)); + REQUIRE(EllipIntSecond(5.74) == Approx(219.3566843).margin(1e-10)); + REQUIRE(EllipIntSecond(5.75) == Approx(221.5672764).margin(1e-10)); + REQUIRE(EllipIntSecond(5.76) == Approx(223.8000853).margin(1e-10)); + REQUIRE(EllipIntSecond(5.77) == Approx(226.0553343).margin(1e-10)); + REQUIRE(EllipIntSecond(5.78) == Approx(228.3332489).margin(1e-10)); + REQUIRE(EllipIntSecond(5.79) == Approx(230.634057).margin(1e-10)); + REQUIRE(EllipIntSecond(5.8) == Approx(232.9579885).margin(1e-10)); + REQUIRE(EllipIntSecond(5.81) == Approx(235.305276).margin(1e-10)); + REQUIRE(EllipIntSecond(5.82) == Approx(237.6761541).margin(1e-10)); + REQUIRE(EllipIntSecond(5.83) == Approx(240.0708599).margin(1e-10)); + REQUIRE(EllipIntSecond(5.84) == Approx(242.4896329).margin(1e-10)); + REQUIRE(EllipIntSecond(5.85) == Approx(244.932715).margin(1e-10)); + REQUIRE(EllipIntSecond(5.86) == Approx(247.4003504).margin(1e-10)); + REQUIRE(EllipIntSecond(5.87) == Approx(249.8927861).margin(1e-10)); + REQUIRE(EllipIntSecond(5.88) == Approx(252.4102711).margin(1e-10)); + REQUIRE(EllipIntSecond(5.89) == Approx(254.9530572).margin(1e-10)); + REQUIRE(EllipIntSecond(5.9) == Approx(257.5213988).margin(1e-10)); + REQUIRE(EllipIntSecond(5.91) == Approx(260.1155526).margin(1e-10)); + REQUIRE(EllipIntSecond(5.92) == Approx(262.7357782).margin(1e-10)); + REQUIRE(EllipIntSecond(5.93) == Approx(265.3823374).margin(1e-10)); + REQUIRE(EllipIntSecond(5.94) == Approx(268.055495).margin(1e-10)); + REQUIRE(EllipIntSecond(5.95) == Approx(270.7555182).margin(1e-10)); + REQUIRE(EllipIntSecond(5.96) == Approx(273.4826772).margin(1e-10)); + REQUIRE(EllipIntSecond(5.97) == Approx(276.2372445).margin(1e-10)); + REQUIRE(EllipIntSecond(5.98) == Approx(279.0194958).margin(1e-10)); + REQUIRE(EllipIntSecond(5.99) == Approx(281.8297091).margin(1e-10)); + REQUIRE(EllipIntSecond(6.) == Approx(284.6681655).margin(1e-10)); + REQUIRE(EllipIntSecond(6.01) == Approx(287.5351489).margin(1e-10)); + REQUIRE(EllipIntSecond(6.02) == Approx(290.4309459).margin(1e-10)); + REQUIRE(EllipIntSecond(6.03) == Approx(293.3558462).margin(1e-10)); + REQUIRE(EllipIntSecond(6.04) == Approx(296.3101422).margin(1e-10)); + REQUIRE(EllipIntSecond(6.05) == Approx(299.2941294).margin(1e-10)); + REQUIRE(EllipIntSecond(6.06) == Approx(302.3081062).margin(1e-10)); + REQUIRE(EllipIntSecond(6.07) == Approx(305.3523739).margin(1e-10)); + REQUIRE(EllipIntSecond(6.08) == Approx(308.427237).margin(1e-10)); + REQUIRE(EllipIntSecond(6.09) == Approx(311.5330031).margin(1e-10)); + REQUIRE(EllipIntSecond(6.1) == Approx(314.6699826).margin(1e-10)); + REQUIRE(EllipIntSecond(6.11) == Approx(317.8384892).margin(1e-10)); + REQUIRE(EllipIntSecond(6.12) == Approx(321.0388399).margin(1e-10)); + REQUIRE(EllipIntSecond(6.13) == Approx(324.2713546).margin(1e-10)); + REQUIRE(EllipIntSecond(6.14) == Approx(327.5363567).margin(1e-10)); + REQUIRE(EllipIntSecond(6.15) == Approx(330.8341725).margin(1e-10)); + REQUIRE(EllipIntSecond(6.16) == Approx(334.165132).margin(1e-10)); + REQUIRE(EllipIntSecond(6.17) == Approx(337.5295682).margin(1e-10)); + REQUIRE(EllipIntSecond(6.18) == Approx(340.9278175).margin(1e-10)); + REQUIRE(EllipIntSecond(6.19) == Approx(344.3602198).margin(1e-10)); + REQUIRE(EllipIntSecond(6.2) == Approx(347.8271183).margin(1e-10)); + REQUIRE(EllipIntSecond(6.21) == Approx(351.3288597).margin(1e-10)); + REQUIRE(EllipIntSecond(6.22) == Approx(354.8657942).margin(1e-10)); + REQUIRE(EllipIntSecond(6.23) == Approx(358.4382754).margin(1e-10)); + REQUIRE(EllipIntSecond(6.24) == Approx(362.0466608).margin(1e-10)); + REQUIRE(EllipIntSecond(6.25) == Approx(365.6913109).margin(1e-10)); + REQUIRE(EllipIntSecond(6.26) == Approx(369.3725905).margin(1e-10)); + REQUIRE(EllipIntSecond(6.27) == Approx(373.0908675).margin(1e-10)); + REQUIRE(EllipIntSecond(6.28) == Approx(376.8465138).margin(1e-10)); + REQUIRE(EllipIntSecond(6.29) == Approx(380.639905).margin(1e-10)); + REQUIRE(EllipIntSecond(6.3) == Approx(384.4714204).margin(1e-10)); + REQUIRE(EllipIntSecond(6.31) == Approx(388.3414431).margin(1e-10)); + REQUIRE(EllipIntSecond(6.32) == Approx(392.2503603).margin(1e-10)); + REQUIRE(EllipIntSecond(6.33) == Approx(396.1985627).margin(1e-10)); + REQUIRE(EllipIntSecond(6.34) == Approx(400.1864452).margin(1e-10)); + REQUIRE(EllipIntSecond(6.35) == Approx(404.2144066).margin(1e-10)); + REQUIRE(EllipIntSecond(6.36) == Approx(408.2828497).margin(1e-10)); + REQUIRE(EllipIntSecond(6.37) == Approx(412.3921813).margin(1e-10)); + REQUIRE(EllipIntSecond(6.38) == Approx(416.5428124).margin(1e-10)); + REQUIRE(EllipIntSecond(6.39) == Approx(420.735158).margin(1e-10)); + REQUIRE(EllipIntSecond(6.4) == Approx(424.9696374).margin(1e-10)); + REQUIRE(EllipIntSecond(6.41) == Approx(429.246674).margin(1e-10)); + REQUIRE(EllipIntSecond(6.42) == Approx(433.5666955).margin(1e-10)); + REQUIRE(EllipIntSecond(6.43) == Approx(437.930134).margin(1e-10)); + REQUIRE(EllipIntSecond(6.44) == Approx(442.3374258).margin(1e-10)); + REQUIRE(EllipIntSecond(6.45) == Approx(446.7890116).margin(1e-10)); + REQUIRE(EllipIntSecond(6.46) == Approx(451.2853366).margin(1e-10)); + REQUIRE(EllipIntSecond(6.47) == Approx(455.8268504).margin(1e-10)); + REQUIRE(EllipIntSecond(6.48) == Approx(460.4140071).margin(1e-10)); + REQUIRE(EllipIntSecond(6.49) == Approx(465.0472656).margin(1e-10)); + REQUIRE(EllipIntSecond(6.5) == Approx(469.7270891).margin(1e-10)); + REQUIRE(EllipIntSecond(6.51) == Approx(474.4539455).margin(1e-10)); + REQUIRE(EllipIntSecond(6.52) == Approx(479.2283077).margin(1e-10)); + REQUIRE(EllipIntSecond(6.53) == Approx(484.050653).margin(1e-10)); + REQUIRE(EllipIntSecond(6.54) == Approx(488.9214637).margin(1e-10)); + REQUIRE(EllipIntSecond(6.55) == Approx(493.8412269).margin(1e-10)); + REQUIRE(EllipIntSecond(6.56) == Approx(498.8104345).margin(1e-10)); + REQUIRE(EllipIntSecond(6.57) == Approx(503.8295835).margin(1e-10)); + REQUIRE(EllipIntSecond(6.58) == Approx(508.8991757).margin(1e-10)); + REQUIRE(EllipIntSecond(6.59) == Approx(514.0197182).margin(1e-10)); + REQUIRE(EllipIntSecond(6.6) == Approx(519.191723).margin(1e-10)); + REQUIRE(EllipIntSecond(6.61) == Approx(524.4157073).margin(1e-10)); + REQUIRE(EllipIntSecond(6.62) == Approx(529.6921936).margin(1e-10)); + REQUIRE(EllipIntSecond(6.63) == Approx(535.0217094).margin(1e-10)); + REQUIRE(EllipIntSecond(6.64) == Approx(540.4047877).margin(1e-10)); + REQUIRE(EllipIntSecond(6.65) == Approx(545.8419669).margin(1e-10)); + REQUIRE(EllipIntSecond(6.66) == Approx(551.3337906).margin(1e-10)); + REQUIRE(EllipIntSecond(6.67) == Approx(556.8808081).margin(1e-10)); + REQUIRE(EllipIntSecond(6.68) == Approx(562.483574).margin(1e-10)); + REQUIRE(EllipIntSecond(6.69) == Approx(568.1426486).margin(1e-10)); + REQUIRE(EllipIntSecond(6.7) == Approx(573.8585979).margin(1e-10)); + REQUIRE(EllipIntSecond(6.71) == Approx(579.6319935).margin(1e-10)); + REQUIRE(EllipIntSecond(6.72) == Approx(585.4634126).margin(1e-10)); + REQUIRE(EllipIntSecond(6.73) == Approx(591.3534385).margin(1e-10)); + REQUIRE(EllipIntSecond(6.74) == Approx(597.3026601).margin(1e-10)); + REQUIRE(EllipIntSecond(6.75) == Approx(603.3116724).margin(1e-10)); + REQUIRE(EllipIntSecond(6.76) == Approx(609.3810763).margin(1e-10)); + REQUIRE(EllipIntSecond(6.77) == Approx(615.5114787).margin(1e-10)); + REQUIRE(EllipIntSecond(6.78) == Approx(621.7034926).margin(1e-10)); + REQUIRE(EllipIntSecond(6.79) == Approx(627.9577373).margin(1e-10)); + REQUIRE(EllipIntSecond(6.8) == Approx(634.2748383).margin(1e-10)); + REQUIRE(EllipIntSecond(6.81) == Approx(640.6554271).margin(1e-10)); + REQUIRE(EllipIntSecond(6.82) == Approx(647.100142).margin(1e-10)); + REQUIRE(EllipIntSecond(6.83) == Approx(653.6096273).margin(1e-10)); + REQUIRE(EllipIntSecond(6.84) == Approx(660.184534).margin(1e-10)); + REQUIRE(EllipIntSecond(6.85) == Approx(666.8255196).margin(1e-10)); + REQUIRE(EllipIntSecond(6.86) == Approx(673.5332483).margin(1e-10)); + REQUIRE(EllipIntSecond(6.87) == Approx(680.3083907).margin(1e-10)); + REQUIRE(EllipIntSecond(6.88) == Approx(687.1516245).margin(1e-10)); + REQUIRE(EllipIntSecond(6.89) == Approx(694.0636338).margin(1e-10)); + REQUIRE(EllipIntSecond(6.9) == Approx(701.0451101).margin(1e-10)); + REQUIRE(EllipIntSecond(6.91) == Approx(708.0967513).margin(1e-10)); + REQUIRE(EllipIntSecond(6.92) == Approx(715.2192627).margin(1e-10)); + REQUIRE(EllipIntSecond(6.93) == Approx(722.4133566).margin(1e-10)); + REQUIRE(EllipIntSecond(6.94) == Approx(729.6797523).margin(1e-10)); + REQUIRE(EllipIntSecond(6.95) == Approx(737.0191765).margin(1e-10)); + REQUIRE(EllipIntSecond(6.96) == Approx(744.4323631).margin(1e-10)); + REQUIRE(EllipIntSecond(6.97) == Approx(751.9200535).margin(1e-10)); + REQUIRE(EllipIntSecond(6.98) == Approx(759.4829964).margin(1e-10)); + REQUIRE(EllipIntSecond(6.99) == Approx(767.1219482).margin(1e-10)); + REQUIRE(EllipIntSecond(7.) == Approx(774.8376727).margin(1e-10)); + REQUIRE(EllipIntSecond(7.01) == Approx(782.6309415).margin(1e-10)); + REQUIRE(EllipIntSecond(7.02) == Approx(790.502534).margin(1e-10)); + REQUIRE(EllipIntSecond(7.03) == Approx(798.4532373).margin(1e-10)); + REQUIRE(EllipIntSecond(7.04) == Approx(806.4838465).margin(1e-10)); + REQUIRE(EllipIntSecond(7.05) == Approx(814.5951647).margin(1e-10)); + REQUIRE(EllipIntSecond(7.06) == Approx(822.7880029).margin(1e-10)); + REQUIRE(EllipIntSecond(7.07) == Approx(831.0631806).margin(1e-10)); + REQUIRE(EllipIntSecond(7.08) == Approx(839.4215252).margin(1e-10)); + REQUIRE(EllipIntSecond(7.09) == Approx(847.8638725).margin(1e-10)); + REQUIRE(EllipIntSecond(7.1) == Approx(856.3910668).margin(1e-10)); + REQUIRE(EllipIntSecond(7.11) == Approx(865.0039609).margin(1e-10)); + REQUIRE(EllipIntSecond(7.12) == Approx(873.703416).margin(1e-10)); + REQUIRE(EllipIntSecond(7.13) == Approx(882.4903021).margin(1e-10)); + REQUIRE(EllipIntSecond(7.14) == Approx(891.3654978).margin(1e-10)); + REQUIRE(EllipIntSecond(7.15) == Approx(900.3298907).margin(1e-10)); + REQUIRE(EllipIntSecond(7.16) == Approx(909.3843773).margin(1e-10)); + REQUIRE(EllipIntSecond(7.17) == Approx(918.529863).margin(1e-10)); + REQUIRE(EllipIntSecond(7.18) == Approx(927.7672624).margin(1e-10)); + REQUIRE(EllipIntSecond(7.19) == Approx(937.0974991).margin(1e-10)); + REQUIRE(EllipIntSecond(7.2) == Approx(946.5215063).margin(1e-10)); + REQUIRE(EllipIntSecond(7.21) == Approx(956.0402264).margin(1e-10)); + REQUIRE(EllipIntSecond(7.22) == Approx(965.6546111).margin(1e-10)); + REQUIRE(EllipIntSecond(7.23) == Approx(975.3656221).margin(1e-10)); + REQUIRE(EllipIntSecond(7.24) == Approx(985.1742303).margin(1e-10)); + REQUIRE(EllipIntSecond(7.25) == Approx(995.0814167).margin(1e-10)); + REQUIRE(EllipIntSecond(7.26) == Approx(1005.088172).margin(1e-10)); + REQUIRE(EllipIntSecond(7.27) == Approx(1015.195497).margin(1e-10)); + REQUIRE(EllipIntSecond(7.28) == Approx(1025.404402).margin(1e-10)); + REQUIRE(EllipIntSecond(7.29) == Approx(1035.715908).margin(1e-10)); + REQUIRE(EllipIntSecond(7.3) == Approx(1046.131047).margin(1e-10)); + REQUIRE(EllipIntSecond(7.31) == Approx(1056.650859).margin(1e-10)); + REQUIRE(EllipIntSecond(7.32) == Approx(1067.276398).margin(1e-10)); + REQUIRE(EllipIntSecond(7.33) == Approx(1078.008725).margin(1e-10)); + REQUIRE(EllipIntSecond(7.34) == Approx(1088.848913).margin(1e-10)); + REQUIRE(EllipIntSecond(7.35) == Approx(1099.798048).margin(1e-10)); + REQUIRE(EllipIntSecond(7.36) == Approx(1110.857222).margin(1e-10)); + REQUIRE(EllipIntSecond(7.37) == Approx(1122.027544).margin(1e-10)); + REQUIRE(EllipIntSecond(7.38) == Approx(1133.310129).margin(1e-10)); + REQUIRE(EllipIntSecond(7.39) == Approx(1144.706106).margin(1e-10)); + REQUIRE(EllipIntSecond(7.4) == Approx(1156.216614).margin(1e-10)); + REQUIRE(EllipIntSecond(7.41) == Approx(1167.842805).margin(1e-10)); + REQUIRE(EllipIntSecond(7.42) == Approx(1179.585841).margin(1e-10)); + REQUIRE(EllipIntSecond(7.43) == Approx(1191.446897).margin(1e-10)); + REQUIRE(EllipIntSecond(7.44) == Approx(1203.427158).margin(1e-10)); + REQUIRE(EllipIntSecond(7.45) == Approx(1215.527823).margin(1e-10)); + REQUIRE(EllipIntSecond(7.46) == Approx(1227.750101).margin(1e-10)); + REQUIRE(EllipIntSecond(7.47) == Approx(1240.095216).margin(1e-10)); + REQUIRE(EllipIntSecond(7.48) == Approx(1252.5644).margin(1e-10)); + REQUIRE(EllipIntSecond(7.49) == Approx(1265.158903).margin(1e-10)); + REQUIRE(EllipIntSecond(7.5) == Approx(1277.879982).margin(1e-10)); + REQUIRE(EllipIntSecond(7.51) == Approx(1290.72891).margin(1e-10)); + REQUIRE(EllipIntSecond(7.52) == Approx(1303.706972).margin(1e-10)); + REQUIRE(EllipIntSecond(7.53) == Approx(1316.815466).margin(1e-10)); + REQUIRE(EllipIntSecond(7.54) == Approx(1330.055702).margin(1e-10)); + REQUIRE(EllipIntSecond(7.55) == Approx(1343.429005).margin(1e-10)); + REQUIRE(EllipIntSecond(7.56) == Approx(1356.936711).margin(1e-10)); + REQUIRE(EllipIntSecond(7.57) == Approx(1370.580173).margin(1e-10)); + REQUIRE(EllipIntSecond(7.58) == Approx(1384.360753).margin(1e-10)); + REQUIRE(EllipIntSecond(7.59) == Approx(1398.279831).margin(1e-10)); + REQUIRE(EllipIntSecond(7.6) == Approx(1412.338797).margin(1e-10)); + REQUIRE(EllipIntSecond(7.61) == Approx(1426.539059).margin(1e-10)); + REQUIRE(EllipIntSecond(7.62) == Approx(1440.882036).margin(1e-10)); + REQUIRE(EllipIntSecond(7.63) == Approx(1455.369162).margin(1e-10)); + REQUIRE(EllipIntSecond(7.64) == Approx(1470.001886).margin(1e-10)); + REQUIRE(EllipIntSecond(7.65) == Approx(1484.781671).margin(1e-10)); + REQUIRE(EllipIntSecond(7.66) == Approx(1499.709996).margin(1e-10)); + REQUIRE(EllipIntSecond(7.67) == Approx(1514.788352).margin(1e-10)); + REQUIRE(EllipIntSecond(7.68) == Approx(1530.018249).margin(1e-10)); + REQUIRE(EllipIntSecond(7.69) == Approx(1545.401209).margin(1e-10)); + REQUIRE(EllipIntSecond(7.7) == Approx(1560.93877).margin(1e-10)); + REQUIRE(EllipIntSecond(7.71) == Approx(1576.632486).margin(1e-10)); + REQUIRE(EllipIntSecond(7.72) == Approx(1592.483927).margin(1e-10)); + REQUIRE(EllipIntSecond(7.73) == Approx(1608.494677).margin(1e-10)); + REQUIRE(EllipIntSecond(7.74) == Approx(1624.666338).margin(1e-10)); + REQUIRE(EllipIntSecond(7.75) == Approx(1641.000527).margin(1e-10)); + REQUIRE(EllipIntSecond(7.76) == Approx(1657.498878).margin(1e-10)); + REQUIRE(EllipIntSecond(7.77) == Approx(1674.163039).margin(1e-10)); + REQUIRE(EllipIntSecond(7.78) == Approx(1690.994678).margin(1e-10)); + REQUIRE(EllipIntSecond(7.79) == Approx(1707.995478).margin(1e-10)); + REQUIRE(EllipIntSecond(7.8) == Approx(1725.167138).margin(1e-10)); + REQUIRE(EllipIntSecond(7.81) == Approx(1742.511377).margin(1e-10)); + REQUIRE(EllipIntSecond(7.82) == Approx(1760.029928).margin(1e-10)); + REQUIRE(EllipIntSecond(7.83) == Approx(1777.724544).margin(1e-10)); + REQUIRE(EllipIntSecond(7.84) == Approx(1795.596993).margin(1e-10)); + REQUIRE(EllipIntSecond(7.85) == Approx(1813.649064).margin(1e-10)); + REQUIRE(EllipIntSecond(7.86) == Approx(1831.882561).margin(1e-10)); + REQUIRE(EllipIntSecond(7.87) == Approx(1850.299307).margin(1e-10)); + REQUIRE(EllipIntSecond(7.88) == Approx(1868.901145).margin(1e-10)); + REQUIRE(EllipIntSecond(7.89) == Approx(1887.689935).margin(1e-10)); + REQUIRE(EllipIntSecond(7.9) == Approx(1906.667555).margin(1e-10)); + REQUIRE(EllipIntSecond(7.91) == Approx(1925.835903).margin(1e-10)); + REQUIRE(EllipIntSecond(7.92) == Approx(1945.196897).margin(1e-10)); + REQUIRE(EllipIntSecond(7.93) == Approx(1964.752471).margin(1e-10)); + REQUIRE(EllipIntSecond(7.94) == Approx(1984.504583).margin(1e-10)); + REQUIRE(EllipIntSecond(7.95) == Approx(2004.455206).margin(1e-10)); + REQUIRE(EllipIntSecond(7.96) == Approx(2024.606336).margin(1e-10)); + REQUIRE(EllipIntSecond(7.97) == Approx(2044.959989).margin(1e-10)); + REQUIRE(EllipIntSecond(7.98) == Approx(2065.518199).margin(1e-10)); + REQUIRE(EllipIntSecond(7.99) == Approx(2086.283023).margin(1e-10)); + REQUIRE(EllipIntSecond(8.) == Approx(2107.256537).margin(1e-10)); + REQUIRE(EllipIntSecond(8.01) == Approx(2128.440838).margin(1e-10)); + REQUIRE(EllipIntSecond(8.02) == Approx(2149.838045).margin(1e-10)); + REQUIRE(EllipIntSecond(8.03) == Approx(2171.450297).margin(1e-10)); + REQUIRE(EllipIntSecond(8.04) == Approx(2193.279756).margin(1e-10)); + REQUIRE(EllipIntSecond(8.05) == Approx(2215.328605).margin(1e-10)); + REQUIRE(EllipIntSecond(8.06) == Approx(2237.599048).margin(1e-10)); + REQUIRE(EllipIntSecond(8.07) == Approx(2260.093313).margin(1e-10)); + REQUIRE(EllipIntSecond(8.08) == Approx(2282.81365).margin(1e-10)); + REQUIRE(EllipIntSecond(8.09) == Approx(2305.762329).margin(1e-10)); + REQUIRE(EllipIntSecond(8.1) == Approx(2328.941646).margin(1e-10)); + REQUIRE(EllipIntSecond(8.11) == Approx(2352.35392).margin(1e-10)); + REQUIRE(EllipIntSecond(8.12) == Approx(2376.00149).margin(1e-10)); + REQUIRE(EllipIntSecond(8.13) == Approx(2399.886723).margin(1e-10)); + REQUIRE(EllipIntSecond(8.14) == Approx(2424.012006).margin(1e-10)); + REQUIRE(EllipIntSecond(8.15) == Approx(2448.379753).margin(1e-10)); + REQUIRE(EllipIntSecond(8.16) == Approx(2472.992399).margin(1e-10)); + REQUIRE(EllipIntSecond(8.17) == Approx(2497.852407).margin(1e-10)); + REQUIRE(EllipIntSecond(8.18) == Approx(2522.962262).margin(1e-10)); + REQUIRE(EllipIntSecond(8.19) == Approx(2548.324475).margin(1e-10)); + REQUIRE(EllipIntSecond(8.2) == Approx(2573.941582).margin(1e-10)); + REQUIRE(EllipIntSecond(8.21) == Approx(2599.816146).margin(1e-10)); + REQUIRE(EllipIntSecond(8.22) == Approx(2625.950753).margin(1e-10)); + REQUIRE(EllipIntSecond(8.23) == Approx(2652.348018).margin(1e-10)); + REQUIRE(EllipIntSecond(8.24) == Approx(2679.010579).margin(1e-10)); + REQUIRE(EllipIntSecond(8.25) == Approx(2705.941104).margin(1e-10)); + REQUIRE(EllipIntSecond(8.26) == Approx(2733.142285).margin(1e-10)); + REQUIRE(EllipIntSecond(8.27) == Approx(2760.616842).margin(1e-10)); + REQUIRE(EllipIntSecond(8.28) == Approx(2788.367524).margin(1e-10)); + REQUIRE(EllipIntSecond(8.29) == Approx(2816.397104).margin(1e-10)); + REQUIRE(EllipIntSecond(8.3) == Approx(2844.708386).margin(1e-10)); + REQUIRE(EllipIntSecond(8.31) == Approx(2873.304202).margin(1e-10)); + REQUIRE(EllipIntSecond(8.32) == Approx(2902.18741).margin(1e-10)); + REQUIRE(EllipIntSecond(8.33) == Approx(2931.360899).margin(1e-10)); + REQUIRE(EllipIntSecond(8.34) == Approx(2960.827586).margin(1e-10)); + REQUIRE(EllipIntSecond(8.35) == Approx(2990.590419).margin(1e-10)); + REQUIRE(EllipIntSecond(8.36) == Approx(3020.652373).margin(1e-10)); + REQUIRE(EllipIntSecond(8.37) == Approx(3051.016455).margin(1e-10)); + REQUIRE(EllipIntSecond(8.38) == Approx(3081.685701).margin(1e-10)); + REQUIRE(EllipIntSecond(8.39) == Approx(3112.663178).margin(1e-10)); + REQUIRE(EllipIntSecond(8.4) == Approx(3143.951984).margin(1e-10)); + REQUIRE(EllipIntSecond(8.41) == Approx(3175.555247).margin(1e-10)); + REQUIRE(EllipIntSecond(8.42) == Approx(3207.476129).margin(1e-10)); + REQUIRE(EllipIntSecond(8.43) == Approx(3239.71782).margin(1e-10)); + REQUIRE(EllipIntSecond(8.44) == Approx(3272.283547).margin(1e-10)); + REQUIRE(EllipIntSecond(8.45) == Approx(3305.176564).margin(1e-10)); + REQUIRE(EllipIntSecond(8.46) == Approx(3338.400161).margin(1e-10)); + REQUIRE(EllipIntSecond(8.47) == Approx(3371.957661).margin(1e-10)); + REQUIRE(EllipIntSecond(8.48) == Approx(3405.85242).margin(1e-10)); + REQUIRE(EllipIntSecond(8.49) == Approx(3440.087827).margin(1e-10)); + REQUIRE(EllipIntSecond(8.5) == Approx(3474.667305).margin(1e-10)); + REQUIRE(EllipIntSecond(8.51) == Approx(3509.594313).margin(1e-10)); + REQUIRE(EllipIntSecond(8.52) == Approx(3544.872343).margin(1e-10)); + REQUIRE(EllipIntSecond(8.53) == Approx(3580.504923).margin(1e-10)); + REQUIRE(EllipIntSecond(8.54) == Approx(3616.495616).margin(1e-10)); + REQUIRE(EllipIntSecond(8.55) == Approx(3652.848022).margin(1e-10)); + REQUIRE(EllipIntSecond(8.56) == Approx(3689.565776).margin(1e-10)); + REQUIRE(EllipIntSecond(8.57) == Approx(3726.652549).margin(1e-10)); + REQUIRE(EllipIntSecond(8.58) == Approx(3764.112051).margin(1e-10)); + REQUIRE(EllipIntSecond(8.59) == Approx(3801.948026).margin(1e-10)); + REQUIRE(EllipIntSecond(8.6) == Approx(3840.16426).margin(1e-10)); + REQUIRE(EllipIntSecond(8.61) == Approx(3878.764573).margin(1e-10)); + REQUIRE(EllipIntSecond(8.62) == Approx(3917.752826).margin(1e-10)); + REQUIRE(EllipIntSecond(8.63) == Approx(3957.132917).margin(1e-10)); + REQUIRE(EllipIntSecond(8.64) == Approx(3996.908785).margin(1e-10)); + REQUIRE(EllipIntSecond(8.65) == Approx(4037.084407).margin(1e-10)); + REQUIRE(EllipIntSecond(8.66) == Approx(4077.6638).margin(1e-10)); + REQUIRE(EllipIntSecond(8.67) == Approx(4118.651024).margin(1e-10)); + REQUIRE(EllipIntSecond(8.68) == Approx(4160.050175).margin(1e-10)); + REQUIRE(EllipIntSecond(8.69) == Approx(4201.865396).margin(1e-10)); + REQUIRE(EllipIntSecond(8.7) == Approx(4244.100866).margin(1e-10)); + REQUIRE(EllipIntSecond(8.71) == Approx(4286.760809).margin(1e-10)); + REQUIRE(EllipIntSecond(8.72) == Approx(4329.849492).margin(1e-10)); + REQUIRE(EllipIntSecond(8.73) == Approx(4373.371224).margin(1e-10)); + REQUIRE(EllipIntSecond(8.74) == Approx(4417.330356).margin(1e-10)); + REQUIRE(EllipIntSecond(8.75) == Approx(4461.731285).margin(1e-10)); + REQUIRE(EllipIntSecond(8.76) == Approx(4506.578451).margin(1e-10)); + REQUIRE(EllipIntSecond(8.77) == Approx(4551.876338).margin(1e-10)); + REQUIRE(EllipIntSecond(8.78) == Approx(4597.629476).margin(1e-10)); + REQUIRE(EllipIntSecond(8.79) == Approx(4643.842442).margin(1e-10)); + REQUIRE(EllipIntSecond(8.8) == Approx(4690.519855).margin(1e-10)); + REQUIRE(EllipIntSecond(8.81) == Approx(4737.666384).margin(1e-10)); + REQUIRE(EllipIntSecond(8.82) == Approx(4785.286743).margin(1e-10)); + REQUIRE(EllipIntSecond(8.83) == Approx(4833.385695).margin(1e-10)); + REQUIRE(EllipIntSecond(8.84) == Approx(4881.96805).margin(1e-10)); + REQUIRE(EllipIntSecond(8.85) == Approx(4931.038665).margin(1e-10)); + REQUIRE(EllipIntSecond(8.86) == Approx(4980.602449).margin(1e-10)); + REQUIRE(EllipIntSecond(8.87) == Approx(5030.664356).margin(1e-10)); + REQUIRE(EllipIntSecond(8.88) == Approx(5081.229394).margin(1e-10)); + REQUIRE(EllipIntSecond(8.89) == Approx(5132.302619).margin(1e-10)); + REQUIRE(EllipIntSecond(8.9) == Approx(5183.889139).margin(1e-10)); + REQUIRE(EllipIntSecond(8.91) == Approx(5235.994112).margin(1e-10)); + REQUIRE(EllipIntSecond(8.92) == Approx(5288.622748).margin(1e-10)); + REQUIRE(EllipIntSecond(8.93) == Approx(5341.780311).margin(1e-10)); + REQUIRE(EllipIntSecond(8.94) == Approx(5395.472117).margin(1e-10)); + REQUIRE(EllipIntSecond(8.95) == Approx(5449.703534).margin(1e-10)); + REQUIRE(EllipIntSecond(8.96) == Approx(5504.479985).margin(1e-10)); + REQUIRE(EllipIntSecond(8.97) == Approx(5559.80695).margin(1e-10)); + REQUIRE(EllipIntSecond(8.98) == Approx(5615.689959).margin(1e-10)); + REQUIRE(EllipIntSecond(8.99) == Approx(5672.134602).margin(1e-10)); + REQUIRE(EllipIntSecond(9.) == Approx(5729.146524).margin(1e-10)); + REQUIRE(EllipIntSecond(9.01) == Approx(5786.731424).margin(1e-10)); + REQUIRE(EllipIntSecond(9.02) == Approx(5844.895063).margin(1e-10)); + REQUIRE(EllipIntSecond(9.03) == Approx(5903.643255).margin(1e-10)); + REQUIRE(EllipIntSecond(9.04) == Approx(5962.981877).margin(1e-10)); + REQUIRE(EllipIntSecond(9.05) == Approx(6022.916862).margin(1e-10)); + REQUIRE(EllipIntSecond(9.06) == Approx(6083.454204).margin(1e-10)); + REQUIRE(EllipIntSecond(9.07) == Approx(6144.599956).margin(1e-10)); + REQUIRE(EllipIntSecond(9.08) == Approx(6206.360233).margin(1e-10)); + REQUIRE(EllipIntSecond(9.09) == Approx(6268.741211).margin(1e-10)); + REQUIRE(EllipIntSecond(9.1) == Approx(6331.749128).margin(1e-10)); + REQUIRE(EllipIntSecond(9.11) == Approx(6395.390285).margin(1e-10)); + REQUIRE(EllipIntSecond(9.12) == Approx(6459.671047).margin(1e-10)); + REQUIRE(EllipIntSecond(9.13) == Approx(6524.597841).margin(1e-10)); + REQUIRE(EllipIntSecond(9.14) == Approx(6590.17716).margin(1e-10)); + REQUIRE(EllipIntSecond(9.15) == Approx(6656.415563).margin(1e-10)); + REQUIRE(EllipIntSecond(9.16) == Approx(6723.319672).margin(1e-10)); + REQUIRE(EllipIntSecond(9.17) == Approx(6790.896179).margin(1e-10)); + REQUIRE(EllipIntSecond(9.18) == Approx(6859.151841).margin(1e-10)); + REQUIRE(EllipIntSecond(9.19) == Approx(6928.093484).margin(1e-10)); + REQUIRE(EllipIntSecond(9.2) == Approx(6997.728002).margin(1e-10)); + REQUIRE(EllipIntSecond(9.21) == Approx(7068.062358).margin(1e-10)); + REQUIRE(EllipIntSecond(9.22) == Approx(7139.103586).margin(1e-10)); + REQUIRE(EllipIntSecond(9.23) == Approx(7210.858791).margin(1e-10)); + REQUIRE(EllipIntSecond(9.24) == Approx(7283.335147).margin(1e-10)); + REQUIRE(EllipIntSecond(9.25) == Approx(7356.539903).margin(1e-10)); + REQUIRE(EllipIntSecond(9.26) == Approx(7430.480379).margin(1e-10)); + REQUIRE(EllipIntSecond(9.27) == Approx(7505.163969).margin(1e-10)); + REQUIRE(EllipIntSecond(9.28) == Approx(7580.598142).margin(1e-10)); + REQUIRE(EllipIntSecond(9.29) == Approx(7656.790441).margin(1e-10)); + REQUIRE(EllipIntSecond(9.3) == Approx(7733.748485).margin(1e-10)); + REQUIRE(EllipIntSecond(9.31) == Approx(7811.47997).margin(1e-10)); + REQUIRE(EllipIntSecond(9.32) == Approx(7889.99267).margin(1e-10)); + REQUIRE(EllipIntSecond(9.33) == Approx(7969.294435).margin(1e-10)); + REQUIRE(EllipIntSecond(9.34) == Approx(8049.393196).margin(1e-10)); + REQUIRE(EllipIntSecond(9.35) == Approx(8130.296964).margin(1e-10)); + REQUIRE(EllipIntSecond(9.36) == Approx(8212.013827).margin(1e-10)); + REQUIRE(EllipIntSecond(9.37) == Approx(8294.551959).margin(1e-10)); + REQUIRE(EllipIntSecond(9.38) == Approx(8377.919613).margin(1e-10)); + REQUIRE(EllipIntSecond(9.39) == Approx(8462.125126).margin(1e-10)); + REQUIRE(EllipIntSecond(9.4) == Approx(8547.176918).margin(1e-10)); + REQUIRE(EllipIntSecond(9.41) == Approx(8633.083495).margin(1e-10)); + REQUIRE(EllipIntSecond(9.42) == Approx(8719.853447).margin(1e-10)); + REQUIRE(EllipIntSecond(9.43) == Approx(8807.495452).margin(1e-10)); + REQUIRE(EllipIntSecond(9.44) == Approx(8896.018273).margin(1e-10)); + REQUIRE(EllipIntSecond(9.45) == Approx(8985.430764).margin(1e-10)); + REQUIRE(EllipIntSecond(9.46) == Approx(9075.741866).margin(1e-10)); + REQUIRE(EllipIntSecond(9.47) == Approx(9166.960608).margin(1e-10)); + REQUIRE(EllipIntSecond(9.48) == Approx(9259.096115).margin(1e-10)); + REQUIRE(EllipIntSecond(9.49) == Approx(9352.157599).margin(1e-10)); + REQUIRE(EllipIntSecond(9.5) == Approx(9446.154366).margin(1e-10)); + REQUIRE(EllipIntSecond(9.51) == Approx(9541.095816).margin(1e-10)); + REQUIRE(EllipIntSecond(9.52) == Approx(9636.991444).margin(1e-10)); + REQUIRE(EllipIntSecond(9.53) == Approx(9733.850839).margin(1e-10)); + REQUIRE(EllipIntSecond(9.54) == Approx(9831.683687).margin(1e-10)); + REQUIRE(EllipIntSecond(9.55) == Approx(9930.499772).margin(1e-10)); + REQUIRE(EllipIntSecond(9.56) == Approx(10030.30897).margin(1e-10)); + REQUIRE(EllipIntSecond(9.57) == Approx(10131.12128).margin(1e-10)); + REQUIRE(EllipIntSecond(9.58) == Approx(10232.94676).margin(1e-10)); + REQUIRE(EllipIntSecond(9.59) == Approx(10335.7956).margin(1e-10)); + REQUIRE(EllipIntSecond(9.6) == Approx(10439.6781).margin(1e-10)); + REQUIRE(EllipIntSecond(9.61) == Approx(10544.60463).margin(1e-10)); + REQUIRE(EllipIntSecond(9.62) == Approx(10650.58569).margin(1e-10)); + REQUIRE(EllipIntSecond(9.63) == Approx(10757.63187).margin(1e-10)); + REQUIRE(EllipIntSecond(9.64) == Approx(10865.75389).margin(1e-10)); + REQUIRE(EllipIntSecond(9.65) == Approx(10974.96255).margin(1e-10)); + REQUIRE(EllipIntSecond(9.66) == Approx(11085.26878).margin(1e-10)); + REQUIRE(EllipIntSecond(9.67) == Approx(11196.68361).margin(1e-10)); + REQUIRE(EllipIntSecond(9.68) == Approx(11309.21817).margin(1e-10)); + REQUIRE(EllipIntSecond(9.69) == Approx(11422.88372).margin(1e-10)); + REQUIRE(EllipIntSecond(9.7) == Approx(11537.69163).margin(1e-10)); + REQUIRE(EllipIntSecond(9.71) == Approx(11653.65338).margin(1e-10)); + REQUIRE(EllipIntSecond(9.72) == Approx(11770.78057).margin(1e-10)); + REQUIRE(EllipIntSecond(9.73) == Approx(11889.0849).margin(1e-10)); + REQUIRE(EllipIntSecond(9.74) == Approx(12008.57821).margin(1e-10)); + REQUIRE(EllipIntSecond(9.75) == Approx(12129.27245).margin(1e-10)); + REQUIRE(EllipIntSecond(9.76) == Approx(12251.17968).margin(1e-10)); + REQUIRE(EllipIntSecond(9.77) == Approx(12374.31211).margin(1e-10)); + REQUIRE(EllipIntSecond(9.78) == Approx(12498.68203).margin(1e-10)); + REQUIRE(EllipIntSecond(9.79) == Approx(12624.30189).margin(1e-10)); + REQUIRE(EllipIntSecond(9.8) == Approx(12751.18426).margin(1e-10)); + REQUIRE(EllipIntSecond(9.81) == Approx(12879.34181).margin(1e-10)); + REQUIRE(EllipIntSecond(9.82) == Approx(13008.78737).margin(1e-10)); + REQUIRE(EllipIntSecond(9.83) == Approx(13139.53388).margin(1e-10)); + REQUIRE(EllipIntSecond(9.84) == Approx(13271.59441).margin(1e-10)); + REQUIRE(EllipIntSecond(9.85) == Approx(13404.98217).margin(1e-10)); + REQUIRE(EllipIntSecond(9.86) == Approx(13539.7105).margin(1e-10)); + REQUIRE(EllipIntSecond(9.87) == Approx(13675.79288).margin(1e-10)); + REQUIRE(EllipIntSecond(9.88) == Approx(13813.2429).margin(1e-10)); + REQUIRE(EllipIntSecond(9.89) == Approx(13952.07432).margin(1e-10)); + REQUIRE(EllipIntSecond(9.9) == Approx(14092.30102).margin(1e-10)); + REQUIRE(EllipIntSecond(9.91) == Approx(14233.93702).margin(1e-10)); + REQUIRE(EllipIntSecond(9.92) == Approx(14376.99648).margin(1e-10)); + REQUIRE(EllipIntSecond(9.93) == Approx(14521.49372).margin(1e-10)); + REQUIRE(EllipIntSecond(9.94) == Approx(14667.44318).margin(1e-10)); + REQUIRE(EllipIntSecond(9.95) == Approx(14814.85946).margin(1e-10)); + REQUIRE(EllipIntSecond(9.96) == Approx(14963.75729).margin(1e-10)); + REQUIRE(EllipIntSecond(9.97) == Approx(15114.15157).margin(1e-10)); + REQUIRE(EllipIntSecond(9.98) == Approx(15266.05734).margin(1e-10)); + REQUIRE(EllipIntSecond(9.99) == Approx(15419.48979).margin(1e-10)); + REQUIRE(EllipIntSecond(10.) == Approx(15574.46426).margin(1e-10)); } \ No newline at end of file