From 61a8e4c686043c026a6c3875404d3584dd3b192d Mon Sep 17 00:00:00 2001 From: Jan Steemann Date: Wed, 2 Dec 2015 15:40:26 +0100 Subject: [PATCH] issue #1593: add POW() AQL function --- CHANGELOG | 2 + arangod/Aql/Executor.cpp | 1 + arangod/Aql/Functions.cpp | 29 + arangod/Aql/Functions.h | 1 + js/server/modules/org/arangodb/aql.js | 11 + js/server/tests/aql-functions-numeric.js | 1667 ++++++++++++++++++++++ 6 files changed, 1711 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 017b53154d..4f8d8eb941 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,8 @@ v2.8.0 (XXXX-XX-XX) ------------------- +* issue #1593: added AQL `POW` function for exponentation + * added cluster execution site info in explain output for AQL queries * replication improvements: diff --git a/arangod/Aql/Executor.cpp b/arangod/Aql/Executor.cpp index 615c37dd66..c628990cce 100644 --- a/arangod/Aql/Executor.cpp +++ b/arangod/Aql/Executor.cpp @@ -149,6 +149,7 @@ std::unordered_map const Executor::FunctionNames{ { "ABS", Function("ABS", "AQL_ABS", "n", true, true, false, true, true, &Functions::Abs) }, { "RAND", Function("RAND", "AQL_RAND", "", false, false, false, true, true, &Functions::Rand) }, { "SQRT", Function("SQRT", "AQL_SQRT", "n", true, true, false, true, true, &Functions::Sqrt) }, + { "POW", Function("POW", "AQL_POW", "n,n", true, true, false, true, true, &Functions::Pow) }, // list functions { "RANGE", Function("RANGE", "AQL_RANGE", "n,n|n", true, true, false, true, true, &Functions::Range) }, diff --git a/arangod/Aql/Functions.cpp b/arangod/Aql/Functions.cpp index d2bd9d784c..9cf31afbd3 100644 --- a/arangod/Aql/Functions.cpp +++ b/arangod/Aql/Functions.cpp @@ -3486,9 +3486,38 @@ AqlValue Functions::Sqrt (triagens::aql::Query* query, bool unused = false; double input = TRI_ToDoubleJson(inputJson.json(), unused); input = sqrt(input); + if (std::isnan(input)) { + return AqlValue(new Json(Json::Null)); + } return AqlValue(new Json(input)); } +//////////////////////////////////////////////////////////////////////////////// +/// @brief function POW +//////////////////////////////////////////////////////////////////////////////// + +AqlValue Functions::Pow (triagens::aql::Query* query, + triagens::arango::AqlTransaction* trx, + FunctionParameters const& parameters) { + size_t const n = parameters.size(); + + if (n != 2) { + THROW_ARANGO_EXCEPTION_PARAMS(TRI_ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH, "POW", (int) 2, (int) 2); + } + + Json baseJson = ExtractFunctionParameter(trx, parameters, 0, false); + Json expJson = ExtractFunctionParameter(trx, parameters, 1, false); + + bool unused = false; + double base = TRI_ToDoubleJson(baseJson.json(), unused); + double exp = TRI_ToDoubleJson(expJson.json(), unused); + base = pow(base, exp); + if (std::isnan(base) || ! std::isfinite(base)) { + return AqlValue(new Json(Json::Null)); + } + return AqlValue(new Json(base)); +} + //////////////////////////////////////////////////////////////////////////////// /// @brief function RAND //////////////////////////////////////////////////////////////////////////////// diff --git a/arangod/Aql/Functions.h b/arangod/Aql/Functions.h index b108c21b76..8e40095ac3 100644 --- a/arangod/Aql/Functions.h +++ b/arangod/Aql/Functions.h @@ -129,6 +129,7 @@ namespace triagens { static AqlValue Ceil (triagens::aql::Query*, triagens::arango::AqlTransaction*, FunctionParameters const&); static AqlValue Floor (triagens::aql::Query*, triagens::arango::AqlTransaction*, FunctionParameters const&); static AqlValue Sqrt (triagens::aql::Query*, triagens::arango::AqlTransaction*, FunctionParameters const&); + static AqlValue Pow (triagens::aql::Query*, triagens::arango::AqlTransaction*, FunctionParameters const&); static AqlValue Rand (triagens::aql::Query*, triagens::arango::AqlTransaction*, FunctionParameters const&); static AqlValue FirstDocument (triagens::aql::Query*, triagens::arango::AqlTransaction*, FunctionParameters const&); static AqlValue FirstList (triagens::aql::Query*, triagens::arango::AqlTransaction*, FunctionParameters const&); diff --git a/js/server/modules/org/arangodb/aql.js b/js/server/modules/org/arangodb/aql.js index 69c509a38a..986344f421 100644 --- a/js/server/modules/org/arangodb/aql.js +++ b/js/server/modules/org/arangodb/aql.js @@ -2767,6 +2767,16 @@ function AQL_SQRT (value) { return NUMERIC_VALUE(Math.sqrt(AQL_TO_NUMBER(value))); } +//////////////////////////////////////////////////////////////////////////////// +/// @brief exponentation +//////////////////////////////////////////////////////////////////////////////// + +function AQL_POW (base, exp) { + 'use strict'; + + return NUMERIC_VALUE(Math.pow(AQL_TO_NUMBER(base), AQL_TO_NUMBER(exp))); +} + // ----------------------------------------------------------------------------- // --SECTION-- list processing functions // ----------------------------------------------------------------------------- @@ -9154,6 +9164,7 @@ exports.AQL_ROUND = AQL_ROUND; exports.AQL_ABS = AQL_ABS; exports.AQL_RAND = AQL_RAND; exports.AQL_SQRT = AQL_SQRT; +exports.AQL_POW = AQL_POW; exports.AQL_LENGTH = AQL_LENGTH; exports.AQL_FIRST = AQL_FIRST; exports.AQL_LAST = AQL_LAST; diff --git a/js/server/tests/aql-functions-numeric.js b/js/server/tests/aql-functions-numeric.js index 253381d2d5..28ea833e71 100644 --- a/js/server/tests/aql-functions-numeric.js +++ b/js/server/tests/aql-functions-numeric.js @@ -364,6 +364,1673 @@ function ahuacatlNumericFunctionsTestSuite () { assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ ]"))); assertEqual([ 0 ], getQueryResults(buildQuery(i, "{ }"))); } + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test pow function +//////////////////////////////////////////////////////////////////////////////// + + testPow : function () { + var data = [ + [ -4.536e+121 , -4.536e+121 , 0 ], + [ -4.536e+121 , -1.23e+42 , 0 ], + [ -4.536e+121 , -999999 , 0 ], + [ -4.536e+121 , -10000 , 0 ], + [ -4.536e+121 , -1024 , 0 ], + [ -4.536e+121 , -99 , 0 ], + [ -4.536e+121 , -42 , 0 ], + [ -4.536e+121 , -42.53 , null ], + [ -4.536e+121 , -12.42 , null ], + [ -4.536e+121 , -9.31 , null ], + [ -4.536e+121 , -3.5 , null ], + [ -4.536e+121 , -3 , 0 ], + [ -4.536e+121 , -2 , 4.860197394001039e-244 ], + [ -4.536e+121 , -1.5 , null ], + [ -4.536e+121 , -1 , -2.2045855379188713e-122 ], + [ -4.536e+121 , -0.9 , null ], + [ -4.536e+121 , -0.5 , null ], + [ -4.536e+121 , -0.1 , null ], + [ -4.536e+121 , -0.01 , null ], + [ -4.536e+121 , 0 , 1 ], + [ -4.536e+121 , 0.01 , null ], + [ -4.536e+121 , 0.1 , null ], + [ -4.536e+121 , 0.5 , null ], + [ -4.536e+121 , 0.9 , null ], + [ -4.536e+121 , 1 , -4.536e+121 ], + [ -4.536e+121 , 1.5 , null ], + [ -4.536e+121 , 2 , 2.0575296e+243 ], + [ -4.536e+121 , 3 , null ], + [ -4.536e+121 , 3.5 , null ], + [ -4.536e+121 , 9.31 , null ], + [ -4.536e+121 , 12.42 , null ], + [ -4.536e+121 , 42.53 , null ], + [ -4.536e+121 , 42 , null ], + [ -4.536e+121 , 99 , null ], + [ -4.536e+121 , 1024 , null ], + [ -4.536e+121 , 10000 , null ], + [ -4.536e+121 , 999999 , null ], + [ -4.536e+121 , 1.23e+42 , null ], + [ -4.536e+121 , 4.536e+121 , null ], + [ -4.536e+121 , 1.321e-45 , null ], + [ -1.23e+42 , -4.536e+121 , 0 ], + [ -1.23e+42 , -1.23e+42 , 0 ], + [ -1.23e+42 , -999999 , 0 ], + [ -1.23e+42 , -10000 , 0 ], + [ -1.23e+42 , -1024 , 0 ], + [ -1.23e+42 , -99 , 0 ], + [ -1.23e+42 , -42 , 0 ], + [ -1.23e+42 , -42.53 , null ], + [ -1.23e+42 , -12.42 , null ], + [ -1.23e+42 , -9.31 , null ], + [ -1.23e+42 , -3.5 , null ], + [ -1.23e+42 , -3 , -5.373839183563361e-127 ], + [ -1.23e+42 , -2 , 6.609822195782934e-85 ], + [ -1.23e+42 , -1.5 , null ], + [ -1.23e+42 , -1 , -8.130081300813009e-43 ], + [ -1.23e+42 , -0.9 , null ], + [ -1.23e+42 , -0.5 , null ], + [ -1.23e+42 , -0.1 , null ], + [ -1.23e+42 , -0.01 , null ], + [ -1.23e+42 , 0 , 1 ], + [ -1.23e+42 , 0.01 , null ], + [ -1.23e+42 , 0.1 , null ], + [ -1.23e+42 , 0.5 , null ], + [ -1.23e+42 , 0.9 , null ], + [ -1.23e+42 , 1 , -1.23e+42 ], + [ -1.23e+42 , 1.5 , null ], + [ -1.23e+42 , 2 , 1.5128999999999998e+84 ], + [ -1.23e+42 , 3 , -1.8608669999999998e+126 ], + [ -1.23e+42 , 3.5 , null ], + [ -1.23e+42 , 9.31 , null ], + [ -1.23e+42 , 12.42 , null ], + [ -1.23e+42 , 42.53 , null ], + [ -1.23e+42 , 42 , null ], + [ -1.23e+42 , 99 , null ], + [ -1.23e+42 , 1024 , null ], + [ -1.23e+42 , 10000 , null ], + [ -1.23e+42 , 999999 , null ], + [ -1.23e+42 , 1.23e+42 , null ], + [ -1.23e+42 , 4.536e+121 , null ], + [ -1.23e+42 , 1.321e-45 , null ], + [ -999999 , -4.536e+121 , 0 ], + [ -999999 , -1.23e+42 , 0 ], + [ -999999 , -999999 , 0 ], + [ -999999 , -10000 , 0 ], + [ -999999 , -1024 , 0 ], + [ -999999 , -99 , 0 ], + [ -999999 , -42 , 1.0000420009030127e-252 ], + [ -999999 , -42.53 , null ], + [ -999999 , -12.42 , null ], + [ -999999 , -9.31 , null ], + [ -999999 , -3.5 , null ], + [ -999999 , -3 , -1.000003000006e-18 ], + [ -999999 , -2 , 1.000002000003e-12 ], + [ -999999 , -1.5 , null ], + [ -999999 , -1 , -0.000001000001000001 ], + [ -999999 , -0.9 , null ], + [ -999999 , -0.5 , null ], + [ -999999 , -0.1 , null ], + [ -999999 , -0.01 , null ], + [ -999999 , 0 , 1 ], + [ -999999 , 0.01 , null ], + [ -999999 , 0.1 , null ], + [ -999999 , 0.5 , null ], + [ -999999 , 0.9 , null ], + [ -999999 , 1 , -999999 ], + [ -999999 , 1.5 , null ], + [ -999999 , 2 , 999998000001 ], + [ -999999 , 3 , -999997000002999900 ], + [ -999999 , 3.5 , null ], + [ -999999 , 9.31 , null ], + [ -999999 , 12.42 , null ], + [ -999999 , 42.53 , null ], + [ -999999 , 42 , 9.99958000860989e+251 ], + [ -999999 , 99 , null ], + [ -999999 , 1024 , null ], + [ -999999 , 10000 , null ], + [ -999999 , 999999 , null ], + [ -999999 , 1.23e+42 , null ], + [ -999999 , 4.536e+121 , null ], + [ -999999 , 1.321e-45 , null ], + [ -10000 , -4.536e+121 , 0 ], + [ -10000 , -1.23e+42 , 0 ], + [ -10000 , -999999 , 0 ], + [ -10000 , -10000 , 0 ], + [ -10000 , -1024 , 0 ], + [ -10000 , -99 , 0 ], + [ -10000 , -42 , 9.999999999999997e-169 ], + [ -10000 , -42.53 , null ], + [ -10000 , -12.42 , null ], + [ -10000 , -9.31 , null ], + [ -10000 , -3.5 , null ], + [ -10000 , -3 , -1e-12 ], + [ -10000 , -2 , 1e-8 ], + [ -10000 , -1.5 , null ], + [ -10000 , -1 , -0.0001 ], + [ -10000 , -0.9 , null ], + [ -10000 , -0.5 , null ], + [ -10000 , -0.1 , null ], + [ -10000 , -0.01 , null ], + [ -10000 , 0 , 1 ], + [ -10000 , 0.01 , null ], + [ -10000 , 0.1 , null ], + [ -10000 , 0.5 , null ], + [ -10000 , 0.9 , null ], + [ -10000 , 1 , -10000 ], + [ -10000 , 1.5 , null ], + [ -10000 , 2 , 100000000 ], + [ -10000 , 3 , -1000000000000 ], + [ -10000 , 3.5 , null ], + [ -10000 , 9.31 , null ], + [ -10000 , 12.42 , null ], + [ -10000 , 42.53 , null ], + [ -10000 , 42 , 1.0000000000000004e+168 ], + [ -10000 , 99 , null ], + [ -10000 , 1024 , null ], + [ -10000 , 10000 , null ], + [ -10000 , 999999 , null ], + [ -10000 , 1.23e+42 , null ], + [ -10000 , 4.536e+121 , null ], + [ -10000 , 1.321e-45 , null ], + [ -1024 , -4.536e+121 , 0 ], + [ -1024 , -1.23e+42 , 0 ], + [ -1024 , -999999 , 0 ], + [ -1024 , -10000 , 0 ], + [ -1024 , -1024 , 0 ], + [ -1024 , -99 , -9.556619453472961e-299 ], + [ -1024 , -42 , 3.6931914471142943e-127 ], + [ -1024 , -42.53 , null ], + [ -1024 , -12.42 , null ], + [ -1024 , -9.31 , null ], + [ -1024 , -3.5 , null ], + [ -1024 , -3 , -9.313225746154785e-10 ], + [ -1024 , -2 , 9.5367431640625e-7 ], + [ -1024 , -1.5 , null ], + [ -1024 , -1 , -0.0009765625 ], + [ -1024 , -0.9 , null ], + [ -1024 , -0.5 , null ], + [ -1024 , -0.1 , null ], + [ -1024 , -0.01 , null ], + [ -1024 , 0 , 1 ], + [ -1024 , 0.01 , null ], + [ -1024 , 0.1 , null ], + [ -1024 , 0.5 , null ], + [ -1024 , 0.9 , null ], + [ -1024 , 1 , -1024 ], + [ -1024 , 1.5 , null ], + [ -1024 , 2 , 1048576 ], + [ -1024 , 3 , -1073741824 ], + [ -1024 , 3.5 , null ], + [ -1024 , 9.31 , null ], + [ -1024 , 12.42 , null ], + [ -1024 , 42.53 , null ], + [ -1024 , 42 , 2.7076852481648583e+126 ], + [ -1024 , 99 , -1.0463951242053392e+298 ], + [ -1024 , 1024 , null ], + [ -1024 , 10000 , null ], + [ -1024 , 999999 , null ], + [ -1024 , 1.23e+42 , null ], + [ -1024 , 4.536e+121 , null ], + [ -1024 , 1.321e-45 , null ], + [ -99 , -4.536e+121 , 0 ], + [ -99 , -1.23e+42 , 0 ], + [ -99 , -999999 , 0 ], + [ -99 , -10000 , 0 ], + [ -99 , -1024 , 0 ], + [ -99 , -99 , -2.7046790361647396e-198 ], + [ -99 , -42 , 1.5251825470010567e-84 ], + [ -99 , -42.53 , null ], + [ -99 , -12.42 , null ], + [ -99 , -9.31 , null ], + [ -99 , -3.5 , null ], + [ -99 , -3 , -0.0000010306101521283646 ], + [ -99 , -2 , 0.00010203040506070809 ], + [ -99 , -1.5 , null ], + [ -99 , -1 , -0.010101010101010102 ], + [ -99 , -0.9 , null ], + [ -99 , -0.5 , null ], + [ -99 , -0.1 , null ], + [ -99 , -0.01 , null ], + [ -99 , 0 , 1 ], + [ -99 , 0.01 , null ], + [ -99 , 0.1 , null ], + [ -99 , 0.5 , null ], + [ -99 , 0.9 , null ], + [ -99 , 1 , -99 ], + [ -99 , 1.5 , null ], + [ -99 , 2 , 9801 ], + [ -99 , 3 , -970299 ], + [ -99 , 3.5 , null ], + [ -99 , 9.31 , null ], + [ -99 , 12.42 , null ], + [ -99 , 42.53 , null ], + [ -99 , 42 , 6.556592205741436e+83 ], + [ -99 , 99 , -3.697296376497263e+197 ], + [ -99 , 1024 , null ], + [ -99 , 10000 , null ], + [ -99 , 999999 , null ], + [ -99 , 1.23e+42 , null ], + [ -99 , 4.536e+121 , null ], + [ -99 , 1.321e-45 , null ], + [ -42 , -4.536e+121 , 0 ], + [ -42 , -1.23e+42 , 0 ], + [ -42 , -999999 , 0 ], + [ -42 , -10000 , 0 ], + [ -42 , -1024 , 0 ], + [ -42 , -99 , -1.9875600123585817e-161 ], + [ -42 , -42 , 6.660852295672145e-69 ], + [ -42 , -42.53 , null ], + [ -42 , -12.42 , null ], + [ -42 , -9.31 , null ], + [ -42 , -3.5 , null ], + [ -42 , -3 , -0.000013497462477054314 ], + [ -42 , -2 , 0.0005668934240362812 ], + [ -42 , -1.5 , null ], + [ -42 , -1 , -0.023809523809523808 ], + [ -42 , -0.9 , null ], + [ -42 , -0.5 , null ], + [ -42 , -0.1 , null ], + [ -42 , -0.01 , null ], + [ -42 , 0 , 1 ], + [ -42 , 0.01 , null ], + [ -42 , 0.1 , null ], + [ -42 , 0.5 , null ], + [ -42 , 0.9 , null ], + [ -42 , 1 , -42 ], + [ -42 , 1.5 , null ], + [ -42 , 2 , 1764 ], + [ -42 , 3 , -74088 ], + [ -42 , 3.5 , null ], + [ -42 , 9.31 , null ], + [ -42 , 12.42 , null ], + [ -42 , 42.53 , null ], + [ -42 , 42 , 1.5013093754529656e+68 ], + [ -42 , 99 , -5.031294621455621e+160 ], + [ -42 , 1024 , null ], + [ -42 , 10000 , null ], + [ -42 , 999999 , null ], + [ -42 , 1.23e+42 , null ], + [ -42 , 4.536e+121 , null ], + [ -42 , 1.321e-45 , null ], + [ -42.53 , -4.536e+121 , 0 ], + [ -42.53 , -1.23e+42 , 0 ], + [ -42.53 , -999999 , 0 ], + [ -42.53 , -10000 , 0 ], + [ -42.53 , -1024 , 0 ], + [ -42.53 , -99 , -5.743241933935965e-162 ], + [ -42.53 , -42 , 3.933633791030979e-69 ], + [ -42.53 , -42.53 , null ], + [ -42.53 , -12.42 , null ], + [ -42.53 , -9.31 , null ], + [ -42.53 , -3.5 , null ], + [ -42.53 , -3 , -0.000012999116975170522 ], + [ -42.53 , -2 , 0.0005528524449540023 ], + [ -42.53 , -1.5 , null ], + [ -42.53 , -1 , -0.02351281448389372 ], + [ -42.53 , -0.9 , null ], + [ -42.53 , -0.5 , null ], + [ -42.53 , -0.1 , null ], + [ -42.53 , -0.01 , null ], + [ -42.53 , 0 , 1 ], + [ -42.53 , 0.01 , null ], + [ -42.53 , 0.1 , null ], + [ -42.53 , 0.5 , null ], + [ -42.53 , 0.9 , null ], + [ -42.53 , 1 , -42.53 ], + [ -42.53 , 1.5 , null ], + [ -42.53 , 2 , 1808.8009000000002 ], + [ -42.53 , 3 , -76928.30227700001 ], + [ -42.53 , 3.5 , null ], + [ -42.53 , 9.31 , null ], + [ -42.53 , 12.42 , null ], + [ -42.53 , 42.53 , null ], + [ -42.53 , 42 , 2.542178690553466e+68 ], + [ -42.53 , 99 , -1.7411768675304243e+161 ], + [ -42.53 , 1024 , null ], + [ -42.53 , 10000 , null ], + [ -42.53 , 999999 , null ], + [ -42.53 , 1.23e+42 , null ], + [ -42.53 , 4.536e+121 , null ], + [ -42.53 , 1.321e-45 , null ], + [ -12.42 , -4.536e+121 , 0 ], + [ -12.42 , -1.23e+42 , 0 ], + [ -12.42 , -999999 , 0 ], + [ -12.42 , -10000 , 0 ], + [ -12.42 , -1024 , 0 ], + [ -12.42 , -99 , -4.807972907429728e-109 ], + [ -12.42 , -42 , 1.1140199663976283e-46 ], + [ -12.42 , -42.53 , null ], + [ -12.42 , -12.42 , null ], + [ -12.42 , -9.31 , null ], + [ -12.42 , -3.5 , null ], + [ -12.42 , -3 , -0.000521957584298624 ], + [ -12.42 , -2 , 0.00648271319698891 ], + [ -12.42 , -1.5 , null ], + [ -12.42 , -1 , -0.08051529790660225 ], + [ -12.42 , -0.9 , null ], + [ -12.42 , -0.5 , null ], + [ -12.42 , -0.1 , null ], + [ -12.42 , -0.01 , null ], + [ -12.42 , 0 , 1 ], + [ -12.42 , 0.01 , null ], + [ -12.42 , 0.1 , null ], + [ -12.42 , 0.5 , null ], + [ -12.42 , 0.9 , null ], + [ -12.42 , 1 , -12.42 ], + [ -12.42 , 1.5 , null ], + [ -12.42 , 2 , 154.25639999999999 ], + [ -12.42 , 3 , -1915.8644879999997 ], + [ -12.42 , 3.5 , null ], + [ -12.42 , 9.31 , null ], + [ -12.42 , 12.42 , null ], + [ -12.42 , 42.53 , null ], + [ -12.42 , 42 , 8.976499795005191e+45 ], + [ -12.42 , 99 , -2.0798786084145918e+108 ], + [ -12.42 , 1024 , null ], + [ -12.42 , 10000 , null ], + [ -12.42 , 999999 , null ], + [ -12.42 , 1.23e+42 , null ], + [ -12.42 , 4.536e+121 , null ], + [ -12.42 , 1.321e-45 , null ], + [ -9.31 , -4.536e+121 , 0 ], + [ -9.31 , -1.23e+42 , 0 ], + [ -9.31 , -999999 , 0 ], + [ -9.31 , -10000 , 0 ], + [ -9.31 , -1024 , 0 ], + [ -9.31 , -99 , -1.185718464264813e-96 ], + [ -9.31 , -42 , 2.014250122755899e-41 ], + [ -9.31 , -42.53 , null ], + [ -9.31 , -12.42 , null ], + [ -9.31 , -9.31 , null ], + [ -9.31 , -3.5 , null ], + [ -9.31 , -3 , -0.0012392272564971695 ], + [ -9.31 , -2 , 0.01153720575798865 ], + [ -9.31 , -1.5 , null ], + [ -9.31 , -1 , -0.10741138560687433 ], + [ -9.31 , -0.9 , null ], + [ -9.31 , -0.5 , null ], + [ -9.31 , -0.1 , null ], + [ -9.31 , -0.01 , null ], + [ -9.31 , 0 , 1 ], + [ -9.31 , 0.01 , null ], + [ -9.31 , 0.1 , null ], + [ -9.31 , 0.5 , null ], + [ -9.31 , 0.9 , null ], + [ -9.31 , 1 , -9.31 ], + [ -9.31 , 1.5 , null ], + [ -9.31 , 2 , 86.6761 ], + [ -9.31 , 3 , -806.9544910000001 ], + [ -9.31 , 3.5 , null ], + [ -9.31 , 9.31 , null ], + [ -9.31 , 12.42 , null ], + [ -9.31 , 42.53 , null ], + [ -9.31 , 42 , 4.964626729831343e+40 ], + [ -9.31 , 99 , -8.433705218717624e+95 ], + [ -9.31 , 1024 , null ], + [ -9.31 , 10000 , null ], + [ -9.31 , 999999 , null ], + [ -9.31 , 1.23e+42 , null ], + [ -9.31 , 4.536e+121 , null ], + [ -9.31 , 1.321e-45 , null ], + [ -3.5 , -4.536e+121 , 0 ], + [ -3.5 , -1.23e+42 , 0 ], + [ -3.5 , -999999 , 0 ], + [ -3.5 , -10000 , 0 ], + [ -3.5 , -1024 , 0 ], + [ -3.5 , -99 , -1.3717141205373995e-54 ], + [ -3.5 , -42 , 1.4097501104573573e-23 ], + [ -3.5 , -42.53 , null ], + [ -3.5 , -12.42 , null ], + [ -3.5 , -9.31 , null ], + [ -3.5 , -3.5 , null ], + [ -3.5 , -3 , -0.023323615160349854 ], + [ -3.5 , -2 , 0.08163265306122448 ], + [ -3.5 , -1.5 , null ], + [ -3.5 , -1 , -0.2857142857142857 ], + [ -3.5 , -0.9 , null ], + [ -3.5 , -0.5 , null ], + [ -3.5 , -0.1 , null ], + [ -3.5 , -0.01 , null ], + [ -3.5 , 0 , 1 ], + [ -3.5 , 0.01 , null ], + [ -3.5 , 0.1 , null ], + [ -3.5 , 0.5 , null ], + [ -3.5 , 0.9 , null ], + [ -3.5 , 1 , -3.5 ], + [ -3.5 , 1.5 , null ], + [ -3.5 , 2 , 12.25 ], + [ -3.5 , 3 , -42.875 ], + [ -3.5 , 3.5 , null ], + [ -3.5 , 9.31 , null ], + [ -3.5 , 12.42 , null ], + [ -3.5 , 42.53 , null ], + [ -3.5 , 42 , 7.093455730786045e+22 ], + [ -3.5 , 99 , -7.29014876371053e+53 ], + [ -3.5 , 1024 , null ], + [ -3.5 , 10000 , null ], + [ -3.5 , 999999 , null ], + [ -3.5 , 1.23e+42 , null ], + [ -3.5 , 4.536e+121 , null ], + [ -3.5 , 1.321e-45 , null ], + [ -3 , -4.536e+121 , 0 ], + [ -3 , -1.23e+42 , 0 ], + [ -3 , -999999 , 0 ], + [ -3 , -10000 , 0 ], + [ -3 , -1024 , 0 ], + [ -3 , -99 , -5.820975652447899e-48 ], + [ -3 , -42 , 9.139181488855509e-21 ], + [ -3 , -42.53 , null ], + [ -3 , -12.42 , null ], + [ -3 , -9.31 , null ], + [ -3 , -3.5 , null ], + [ -3 , -3 , -0.037037037037037035 ], + [ -3 , -2 , 0.1111111111111111 ], + [ -3 , -1.5 , null ], + [ -3 , -1 , -0.3333333333333333 ], + [ -3 , -0.9 , null ], + [ -3 , -0.5 , null ], + [ -3 , -0.1 , null ], + [ -3 , -0.01 , null ], + [ -3 , 0 , 1 ], + [ -3 , 0.01 , null ], + [ -3 , 0.1 , null ], + [ -3 , 0.5 , null ], + [ -3 , 0.9 , null ], + [ -3 , 1 , -3 ], + [ -3 , 1.5 , null ], + [ -3 , 2 , 9 ], + [ -3 , 3 , -27 ], + [ -3 , 3.5 , null ], + [ -3 , 9.31 , null ], + [ -3 , 12.42 , null ], + [ -3 , 42.53 , null ], + [ -3 , 42 , 109418989131512370000 ], + [ -3 , 99 , -1.7179250691067043e+47 ], + [ -3 , 1024 , null ], + [ -3 , 10000 , null ], + [ -3 , 999999 , null ], + [ -3 , 1.23e+42 , null ], + [ -3 , 4.536e+121 , null ], + [ -3 , 1.321e-45 , null ], + [ -2 , -4.536e+121 , 0 ], + [ -2 , -1.23e+42 , 0 ], + [ -2 , -999999 , 0 ], + [ -2 , -10000 , 0 ], + [ -2 , -1024 , 5.562684646268003e-309 ], + [ -2 , -99 , -1.5777218104420236e-30 ], + [ -2 , -42 , 2.2737367544323206e-13 ], + [ -2 , -42.53 , null ], + [ -2 , -12.42 , null ], + [ -2 , -9.31 , null ], + [ -2 , -3.5 , null ], + [ -2 , -3 , -0.125 ], + [ -2 , -2 , 0.25 ], + [ -2 , -1.5 , null ], + [ -2 , -1 , -0.5 ], + [ -2 , -0.9 , null ], + [ -2 , -0.5 , null ], + [ -2 , -0.1 , null ], + [ -2 , -0.01 , null ], + [ -2 , 0 , 1 ], + [ -2 , 0.01 , null ], + [ -2 , 0.1 , null ], + [ -2 , 0.5 , null ], + [ -2 , 0.9 , null ], + [ -2 , 1 , -2 ], + [ -2 , 1.5 , null ], + [ -2 , 2 , 4 ], + [ -2 , 3 , -8 ], + [ -2 , 3.5 , null ], + [ -2 , 9.31 , null ], + [ -2 , 12.42 , null ], + [ -2 , 42.53 , null ], + [ -2 , 42 , 4398046511104 ], + [ -2 , 99 , -6.338253001141147e+29 ], + [ -2 , 1024 , null ], + [ -2 , 10000 , null ], + [ -2 , 999999 , null ], + [ -2 , 1.23e+42 , null ], + [ -2 , 4.536e+121 , null ], + [ -2 , 1.321e-45 , null ], + [ -1.5 , -4.536e+121 , 0 ], + [ -1.5 , -1.23e+42 , 0 ], + [ -1.5 , -999999 , 0 ], + [ -1.5 , -10000 , 0 ], + [ -1.5 , -1024 , 4.8144948555349255e-181 ], + [ -1.5 , -99 , -3.689481639869744e-18 ], + [ -1.5 , -42 , 4.019454526140723e-8 ], + [ -1.5 , -42.53 , null ], + [ -1.5 , -12.42 , null ], + [ -1.5 , -9.31 , null ], + [ -1.5 , -3.5 , null ], + [ -1.5 , -3 , -0.2962962962962963 ], + [ -1.5 , -2 , 0.4444444444444444 ], + [ -1.5 , -1.5 , null ], + [ -1.5 , -1 , -0.6666666666666666 ], + [ -1.5 , -0.9 , null ], + [ -1.5 , -0.5 , null ], + [ -1.5 , -0.1 , null ], + [ -1.5 , -0.01 , null ], + [ -1.5 , 0 , 1 ], + [ -1.5 , 0.01 , null ], + [ -1.5 , 0.1 , null ], + [ -1.5 , 0.5 , null ], + [ -1.5 , 0.9 , null ], + [ -1.5 , 1 , -1.5 ], + [ -1.5 , 1.5 , null ], + [ -1.5 , 2 , 2.25 ], + [ -1.5 , 3 , -3.375 ], + [ -1.5 , 3.5 , null ], + [ -1.5 , 9.31 , null ], + [ -1.5 , 12.42 , null ], + [ -1.5 , 42.53 , null ], + [ -1.5 , 42 , 24878997.72211503 ], + [ -1.5 , 99 , -271040785023476800 ], + [ -1.5 , 1024 , 2.0770611040332967e+180 ], + [ -1.5 , 10000 , null ], + [ -1.5 , 999999 , null ], + [ -1.5 , 1.23e+42 , null ], + [ -1.5 , 4.536e+121 , null ], + [ -1.5 , 1.321e-45 , null ], + [ -1 , -4.536e+121 , 1 ], + [ -1 , -1.23e+42 , 1 ], + [ -1 , -999999 , -1 ], + [ -1 , -10000 , 1 ], + [ -1 , -1024 , 1 ], + [ -1 , -99 , -1 ], + [ -1 , -42 , 1 ], + [ -1 , -42.53 , null ], + [ -1 , -12.42 , null ], + [ -1 , -9.31 , null ], + [ -1 , -3.5 , null ], + [ -1 , -3 , -1 ], + [ -1 , -2 , 1 ], + [ -1 , -1.5 , null ], + [ -1 , -1 , -1 ], + [ -1 , -0.9 , null ], + [ -1 , -0.5 , null ], + [ -1 , -0.1 , null ], + [ -1 , -0.01 , null ], + [ -1 , 0 , 1 ], + [ -1 , 0.01 , null ], + [ -1 , 0.1 , null ], + [ -1 , 0.5 , null ], + [ -1 , 0.9 , null ], + [ -1 , 1 , -1 ], + [ -1 , 1.5 , null ], + [ -1 , 2 , 1 ], + [ -1 , 3 , -1 ], + [ -1 , 3.5 , null ], + [ -1 , 9.31 , null ], + [ -1 , 12.42 , null ], + [ -1 , 42.53 , null ], + [ -1 , 42 , 1 ], + [ -1 , 99 , -1 ], + [ -1 , 1024 , 1 ], + [ -1 , 10000 , 1 ], + [ -1 , 999999 , -1 ], + [ -1 , 1.23e+42 , 1 ], + [ -1 , 4.536e+121 , 1 ], + [ -1 , 1.321e-45 , null ], + [ -0.9 , -4.536e+121 , null ], + [ -0.9 , -1.23e+42 , null ], + [ -0.9 , -999999 , null ], + [ -0.9 , -10000 , null ], + [ -0.9 , -1024 , 7.172496320613156e+46 ], + [ -0.9 , -99 , -33883.757546391076 ], + [ -0.9 , -42 , 83.52463828623905 ], + [ -0.9 , -42.53 , null ], + [ -0.9 , -12.42 , null ], + [ -0.9 , -9.31 , null ], + [ -0.9 , -3.5 , null ], + [ -0.9 , -3 , -1.371742112482853 ], + [ -0.9 , -2 , 1.2345679012345678 ], + [ -0.9 , -1.5 , null ], + [ -0.9 , -1 , -1.1111111111111112 ], + [ -0.9 , -0.9 , null ], + [ -0.9 , -0.5 , null ], + [ -0.9 , -0.1 , null ], + [ -0.9 , -0.01 , null ], + [ -0.9 , 0 , 1 ], + [ -0.9 , 0.01 , null ], + [ -0.9 , 0.1 , null ], + [ -0.9 , 0.5 , null ], + [ -0.9 , 0.9 , null ], + [ -0.9 , 1 , -0.9 ], + [ -0.9 , 1.5 , null ], + [ -0.9 , 2 , 0.81 ], + [ -0.9 , 3 , -0.7290000000000001 ], + [ -0.9 , 3.5 , null ], + [ -0.9 , 9.31 , null ], + [ -0.9 , 12.42 , null ], + [ -0.9 , 42.53 , null ], + [ -0.9 , 42 , 0.011972515182562043 ], + [ -0.9 , 99 , -0.000029512665430652893 ], + [ -0.9 , 1024 , 1.3942147270624363e-47 ], + [ -0.9 , 10000 , 0 ], + [ -0.9 , 999999 , 0 ], + [ -0.9 , 1.23e+42 , 0 ], + [ -0.9 , 4.536e+121 , 0 ], + [ -0.9 , 1.321e-45 , null ], + [ -0.5 , -4.536e+121 , null ], + [ -0.5 , -1.23e+42 , null ], + [ -0.5 , -999999 , null ], + [ -0.5 , -10000 , null ], + [ -0.5 , -1024 , null ], + [ -0.5 , -99 , -6.338253001141147e+29 ], + [ -0.5 , -42 , 4398046511104 ], + [ -0.5 , -42.53 , null ], + [ -0.5 , -12.42 , null ], + [ -0.5 , -9.31 , null ], + [ -0.5 , -3.5 , null ], + [ -0.5 , -3 , -8 ], + [ -0.5 , -2 , 4 ], + [ -0.5 , -1.5 , null ], + [ -0.5 , -1 , -2 ], + [ -0.5 , -0.9 , null ], + [ -0.5 , -0.5 , null ], + [ -0.5 , -0.1 , null ], + [ -0.5 , -0.01 , null ], + [ -0.5 , 0 , 1 ], + [ -0.5 , 0.01 , null ], + [ -0.5 , 0.1 , null ], + [ -0.5 , 0.5 , null ], + [ -0.5 , 0.9 , null ], + [ -0.5 , 1 , -0.5 ], + [ -0.5 , 1.5 , null ], + [ -0.5 , 2 , 0.25 ], + [ -0.5 , 3 , -0.125 ], + [ -0.5 , 3.5 , null ], + [ -0.5 , 9.31 , null ], + [ -0.5 , 12.42 , null ], + [ -0.5 , 42.53 , null ], + [ -0.5 , 42 , 2.2737367544323206e-13 ], + [ -0.5 , 99 , -1.5777218104420236e-30 ], + [ -0.5 , 1024 , 5.562684646268003e-309 ], + [ -0.5 , 10000 , 0 ], + [ -0.5 , 999999 , 0 ], + [ -0.5 , 1.23e+42 , 0 ], + [ -0.5 , 4.536e+121 , 0 ], + [ -0.5 , 1.321e-45 , null ], + [ -0.1 , -4.536e+121 , null ], + [ -0.1 , -1.23e+42 , null ], + [ -0.1 , -999999 , null ], + [ -0.1 , -10000 , null ], + [ -0.1 , -1024 , null ], + [ -0.1 , -99 , -9.999999999999894e+98 ], + [ -0.1 , -42 , 9.999999999999956e+41 ], + [ -0.1 , -42.53 , null ], + [ -0.1 , -12.42 , null ], + [ -0.1 , -9.31 , null ], + [ -0.1 , -3.5 , null ], + [ -0.1 , -3 , -999.9999999999998 ], + [ -0.1 , -2 , 99.99999999999999 ], + [ -0.1 , -1.5 , null ], + [ -0.1 , -1 , -10 ], + [ -0.1 , -0.9 , null ], + [ -0.1 , -0.5 , null ], + [ -0.1 , -0.1 , null ], + [ -0.1 , -0.01 , null ], + [ -0.1 , 0 , 1 ], + [ -0.1 , 0.01 , null ], + [ -0.1 , 0.1 , null ], + [ -0.1 , 0.5 , null ], + [ -0.1 , 0.9 , null ], + [ -0.1 , 1 , -0.1 ], + [ -0.1 , 1.5 , null ], + [ -0.1 , 2 , 0.010000000000000002 ], + [ -0.1 , 3 , -0.0010000000000000002 ], + [ -0.1 , 3.5 , null ], + [ -0.1 , 9.31 , null ], + [ -0.1 , 12.42 , null ], + [ -0.1 , 42.53 , null ], + [ -0.1 , 42 , 1.0000000000000045e-42 ], + [ -0.1 , 99 , -1.0000000000000106e-99 ], + [ -0.1 , 1024 , 0 ], + [ -0.1 , 10000 , 0 ], + [ -0.1 , 999999 , 0 ], + [ -0.1 , 1.23e+42 , 0 ], + [ -0.1 , 4.536e+121 , 0 ], + [ -0.1 , 1.321e-45 , null ], + [ -0.01 , -4.536e+121 , null ], + [ -0.01 , -1.23e+42 , null ], + [ -0.01 , -999999 , null ], + [ -0.01 , -10000 , null ], + [ -0.01 , -1024 , null ], + [ -0.01 , -99 , -9.99999999999999e+197 ], + [ -0.01 , -42 , 9.999999999999996e+83 ], + [ -0.01 , -42.53 , null ], + [ -0.01 , -12.42 , null ], + [ -0.01 , -9.31 , null ], + [ -0.01 , -3.5 , null ], + [ -0.01 , -3 , -999999.9999999999 ], + [ -0.01 , -2 , 10000 ], + [ -0.01 , -1.5 , null ], + [ -0.01 , -1 , -100 ], + [ -0.01 , -0.9 , null ], + [ -0.01 , -0.5 , null ], + [ -0.01 , -0.1 , null ], + [ -0.01 , -0.01 , null ], + [ -0.01 , 0 , 1 ], + [ -0.01 , 0.01 , null ], + [ -0.01 , 0.1 , null ], + [ -0.01 , 0.5 , null ], + [ -0.01 , 0.9 , null ], + [ -0.01 , 1 , -0.01 ], + [ -0.01 , 1.5 , null ], + [ -0.01 , 2 , 0.0001 ], + [ -0.01 , 3 , -0.0000010000000000000002 ], + [ -0.01 , 3.5 , null ], + [ -0.01 , 9.31 , null ], + [ -0.01 , 12.42 , null ], + [ -0.01 , 42.53 , null ], + [ -0.01 , 42 , 1.0000000000000004e-84 ], + [ -0.01 , 99 , -1.000000000000001e-198 ], + [ -0.01 , 1024 , 0 ], + [ -0.01 , 10000 , 0 ], + [ -0.01 , 999999 , 0 ], + [ -0.01 , 1.23e+42 , 0 ], + [ -0.01 , 4.536e+121 , 0 ], + [ -0.01 , 1.321e-45 , null ], + [ 0 , -4.536e+121 , null ], + [ 0 , -1.23e+42 , null ], + [ 0 , -999999 , null ], + [ 0 , -10000 , null ], + [ 0 , -1024 , null ], + [ 0 , -99 , null ], + [ 0 , -42 , null ], + [ 0 , -42.53 , null ], + [ 0 , -12.42 , null ], + [ 0 , -9.31 , null ], + [ 0 , -3.5 , null ], + [ 0 , -3 , null ], + [ 0 , -2 , null ], + [ 0 , -1.5 , null ], + [ 0 , -1 , null ], + [ 0 , -0.9 , null ], + [ 0 , -0.5 , null ], + [ 0 , -0.1 , null ], + [ 0 , -0.01 , null ], + [ 0 , 0 , 1 ], + [ 0 , 0.01 , 0 ], + [ 0 , 0.1 , 0 ], + [ 0 , 0.5 , 0 ], + [ 0 , 0.9 , 0 ], + [ 0 , 1 , 0 ], + [ 0 , 1.5 , 0 ], + [ 0 , 2 , 0 ], + [ 0 , 3 , 0 ], + [ 0 , 3.5 , 0 ], + [ 0 , 9.31 , 0 ], + [ 0 , 12.42 , 0 ], + [ 0 , 42.53 , 0 ], + [ 0 , 42 , 0 ], + [ 0 , 99 , 0 ], + [ 0 , 1024 , 0 ], + [ 0 , 10000 , 0 ], + [ 0 , 999999 , 0 ], + [ 0 , 1.23e+42 , 0 ], + [ 0 , 4.536e+121 , 0 ], + [ 0 , 1.321e-45 , 0 ], + [ 0.01 , -4.536e+121 , null ], + [ 0.01 , -1.23e+42 , null ], + [ 0.01 , -999999 , null ], + [ 0.01 , -10000 , null ], + [ 0.01 , -1024 , null ], + [ 0.01 , -99 , 9.99999999999999e+197 ], + [ 0.01 , -42 , 9.999999999999996e+83 ], + [ 0.01 , -42.53 , 1.1481536214968878e+85 ], + [ 0.01 , -12.42 , 6.918309709189361e+24 ], + [ 0.01 , -9.31 , 4168693834703362600 ], + [ 0.01 , -3.5 , 10000000 ], + [ 0.01 , -3 , 999999.9999999999 ], + [ 0.01 , -2 , 10000 ], + [ 0.01 , -1.5 , 1000 ], + [ 0.01 , -1 , 100 ], + [ 0.01 , -0.9 , 63.09573444801933 ], + [ 0.01 , -0.5 , 10 ], + [ 0.01 , -0.1 , 1.5848931924611136 ], + [ 0.01 , -0.01 , 1.0471285480508996 ], + [ 0.01 , 0 , 1 ], + [ 0.01 , 0.01 , 0.954992586021436 ], + [ 0.01 , 0.1 , 0.6309573444801932 ], + [ 0.01 , 0.5 , 0.1 ], + [ 0.01 , 0.9 , 0.015848931924611134 ], + [ 0.01 , 1 , 0.01 ], + [ 0.01 , 1.5 , 0.001 ], + [ 0.01 , 2 , 0.0001 ], + [ 0.01 , 3 , 0.0000010000000000000002 ], + [ 0.01 , 3.5 , 1.0000000000000001e-7 ], + [ 0.01 , 9.31 , 2.3988329190194855e-19 ], + [ 0.01 , 12.42 , 1.4454397707459285e-25 ], + [ 0.01 , 42.53 , 8.709635899560769e-86 ], + [ 0.01 , 42 , 1.0000000000000004e-84 ], + [ 0.01 , 99 , 1.000000000000001e-198 ], + [ 0.01 , 1024 , 0 ], + [ 0.01 , 10000 , 0 ], + [ 0.01 , 999999 , 0 ], + [ 0.01 , 1.23e+42 , 0 ], + [ 0.01 , 4.536e+121 , 0 ], + [ 0.01 , 1.321e-45 , 1 ], + [ 0.1 , -4.536e+121 , null ], + [ 0.1 , -1.23e+42 , null ], + [ 0.1 , -999999 , null ], + [ 0.1 , -10000 , null ], + [ 0.1 , -1024 , null ], + [ 0.1 , -99 , 9.999999999999894e+98 ], + [ 0.1 , -42 , 9.999999999999956e+41 ], + [ 0.1 , -42.53 , 3.388441561392026e+42 ], + [ 0.1 , -12.42 , 2630267991895.38 ], + [ 0.1 , -9.31 , 2041737944.6695306 ], + [ 0.1 , -3.5 , 3162.2776601683786 ], + [ 0.1 , -3 , 999.9999999999998 ], + [ 0.1 , -2 , 99.99999999999999 ], + [ 0.1 , -1.5 , 31.62277660168379 ], + [ 0.1 , -1 , 10 ], + [ 0.1 , -0.9 , 7.943282347242815 ], + [ 0.1 , -0.5 , 3.162277660168379 ], + [ 0.1 , -0.1 , 1.2589254117941673 ], + [ 0.1 , -0.01 , 1.023292992280754 ], + [ 0.1 , 0 , 1 ], + [ 0.1 , 0.01 , 0.9772372209558107 ], + [ 0.1 , 0.1 , 0.7943282347242815 ], + [ 0.1 , 0.5 , 0.31622776601683794 ], + [ 0.1 , 0.9 , 0.12589254117941673 ], + [ 0.1 , 1 , 0.1 ], + [ 0.1 , 1.5 , 0.0316227766016838 ], + [ 0.1 , 2 , 0.010000000000000002 ], + [ 0.1 , 3 , 0.0010000000000000002 ], + [ 0.1 , 3.5 , 0.000316227766016838 ], + [ 0.1 , 9.31 , 4.897788193684459e-10 ], + [ 0.1 , 12.42 , 3.801893963205615e-13 ], + [ 0.1 , 42.53 , 2.951209226666385e-43 ], + [ 0.1 , 42 , 1.0000000000000045e-42 ], + [ 0.1 , 99 , 1.0000000000000106e-99 ], + [ 0.1 , 1024 , 0 ], + [ 0.1 , 10000 , 0 ], + [ 0.1 , 999999 , 0 ], + [ 0.1 , 1.23e+42 , 0 ], + [ 0.1 , 4.536e+121 , 0 ], + [ 0.1 , 1.321e-45 , 1 ], + [ 0.5 , -4.536e+121 , null ], + [ 0.5 , -1.23e+42 , null ], + [ 0.5 , -999999 , null ], + [ 0.5 , -10000 , null ], + [ 0.5 , -1024 , null ], + [ 0.5 , -99 , 6.338253001141147e+29 ], + [ 0.5 , -42 , 4398046511104 ], + [ 0.5 , -42.53 , 6350467760648.925 ], + [ 0.5 , -12.42 , 5480.151264403915 ], + [ 0.5 , -9.31 , 634.7303423687613 ], + [ 0.5 , -3.5 , 11.313708498984761 ], + [ 0.5 , -3 , 8 ], + [ 0.5 , -2 , 4 ], + [ 0.5 , -1.5 , 2.8284271247461903 ], + [ 0.5 , -1 , 2 ], + [ 0.5 , -0.9 , 1.8660659830736148 ], + [ 0.5 , -0.5 , 1.414213562373095 ], + [ 0.5 , -0.1 , 1.0717734625362931 ], + [ 0.5 , -0.01 , 1.0069555500567189 ], + [ 0.5 , 0 , 1 ], + [ 0.5 , 0.01 , 0.9930924954370359 ], + [ 0.5 , 0.1 , 0.9330329915368074 ], + [ 0.5 , 0.5 , 0.7071067811865476 ], + [ 0.5 , 0.9 , 0.5358867312681466 ], + [ 0.5 , 1 , 0.5 ], + [ 0.5 , 1.5 , 0.3535533905932738 ], + [ 0.5 , 2 , 0.25 ], + [ 0.5 , 3 , 0.125 ], + [ 0.5 , 3.5 , 0.08838834764831845 ], + [ 0.5 , 9.31 , 0.0015754721859807148 ], + [ 0.5 , 12.42 , 0.00018247671492125714 ], + [ 0.5 , 42.53 , 1.5746871532780048e-13 ], + [ 0.5 , 42 , 2.2737367544323206e-13 ], + [ 0.5 , 99 , 1.5777218104420236e-30 ], + [ 0.5 , 1024 , 5.562684646268003e-309 ], + [ 0.5 , 10000 , 0 ], + [ 0.5 , 999999 , 0 ], + [ 0.5 , 1.23e+42 , 0 ], + [ 0.5 , 4.536e+121 , 0 ], + [ 0.5 , 1.321e-45 , 1 ], + [ 0.9 , -4.536e+121 , null ], + [ 0.9 , -1.23e+42 , null ], + [ 0.9 , -999999 , null ], + [ 0.9 , -10000 , null ], + [ 0.9 , -1024 , 7.172496320613156e+46 ], + [ 0.9 , -99 , 33883.757546391076 ], + [ 0.9 , -42 , 83.52463828623905 ], + [ 0.9 , -42.53 , 88.3214262380771 ], + [ 0.9 , -12.42 , 3.7009058146944076 ], + [ 0.9 , -9.31 , 2.6668724019696044 ], + [ 0.9 , -3.5 , 1.4459431459389023 ], + [ 0.9 , -3 , 1.371742112482853 ], + [ 0.9 , -2 , 1.2345679012345678 ], + [ 0.9 , -1.5 , 1.1712139482105108 ], + [ 0.9 , -1 , 1.1111111111111112 ], + [ 0.9 , -0.9 , 1.0994658424513493 ], + [ 0.9 , -0.5 , 1.0540925533894598 ], + [ 0.9 , -0.1 , 1.0105917512032914 ], + [ 0.9 , -0.01 , 1.0010541603934742 ], + [ 0.9 , 0 , 1 ], + [ 0.9 , 0.01 , 0.9989469496904544 ], + [ 0.9 , 0.1 , 0.9895192582062144 ], + [ 0.9 , 0.5 , 0.9486832980505138 ], + [ 0.9 , 0.9 , 0.9095325760829622 ], + [ 0.9 , 1 , 0.9 ], + [ 0.9 , 1.5 , 0.8538149682454624 ], + [ 0.9 , 2 , 0.81 ], + [ 0.9 , 3 , 0.7290000000000001 ], + [ 0.9 , 3.5 , 0.6915901242788246 ], + [ 0.9 , 9.31 , 0.3749710707049409 ], + [ 0.9 , 12.42 , 0.2702041203073881 ], + [ 0.9 , 42.53 , 0.011322280929934536 ], + [ 0.9 , 42 , 0.011972515182562043 ], + [ 0.9 , 99 , 0.000029512665430652893 ], + [ 0.9 , 1024 , 1.3942147270624363e-47 ], + [ 0.9 , 10000 , 0 ], + [ 0.9 , 999999 , 0 ], + [ 0.9 , 1.23e+42 , 0 ], + [ 0.9 , 4.536e+121 , 0 ], + [ 0.9 , 1.321e-45 , 1 ], + [ 1 , -4.536e+121 , 1 ], + [ 1 , -1.23e+42 , 1 ], + [ 1 , -999999 , 1 ], + [ 1 , -10000 , 1 ], + [ 1 , -1024 , 1 ], + [ 1 , -99 , 1 ], + [ 1 , -42 , 1 ], + [ 1 , -42.53 , 1 ], + [ 1 , -12.42 , 1 ], + [ 1 , -9.31 , 1 ], + [ 1 , -3.5 , 1 ], + [ 1 , -3 , 1 ], + [ 1 , -2 , 1 ], + [ 1 , -1.5 , 1 ], + [ 1 , -1 , 1 ], + [ 1 , -0.9 , 1 ], + [ 1 , -0.5 , 1 ], + [ 1 , -0.1 , 1 ], + [ 1 , -0.01 , 1 ], + [ 1 , 0 , 1 ], + [ 1 , 0.01 , 1 ], + [ 1 , 0.1 , 1 ], + [ 1 , 0.5 , 1 ], + [ 1 , 0.9 , 1 ], + [ 1 , 1 , 1 ], + [ 1 , 1.5 , 1 ], + [ 1 , 2 , 1 ], + [ 1 , 3 , 1 ], + [ 1 , 3.5 , 1 ], + [ 1 , 9.31 , 1 ], + [ 1 , 12.42 , 1 ], + [ 1 , 42.53 , 1 ], + [ 1 , 42 , 1 ], + [ 1 , 99 , 1 ], + [ 1 , 1024 , 1 ], + [ 1 , 10000 , 1 ], + [ 1 , 999999 , 1 ], + [ 1 , 1.23e+42 , 1 ], + [ 1 , 4.536e+121 , 1 ], + [ 1 , 1.321e-45 , 1 ], + [ 1.5 , -4.536e+121 , 0 ], + [ 1.5 , -1.23e+42 , 0 ], + [ 1.5 , -999999 , 0 ], + [ 1.5 , -10000 , 0 ], + [ 1.5 , -1024 , 4.8144948555349255e-181 ], + [ 1.5 , -99 , 3.689481639869744e-18 ], + [ 1.5 , -42 , 4.019454526140723e-8 ], + [ 1.5 , -42.53 , 3.242192168108336e-8 ], + [ 1.5 , -12.42 , 0.006500497004951538 ], + [ 1.5 , -9.31 , 0.022939839668172403 ], + [ 1.5 , -3.5 , 0.2419249128674744 ], + [ 1.5 , -3 , 0.2962962962962963 ], + [ 1.5 , -2 , 0.4444444444444444 ], + [ 1.5 , -1.5 , 0.5443310539518174 ], + [ 1.5 , -1 , 0.6666666666666666 ], + [ 1.5 , -0.9 , 0.6942531626616071 ], + [ 1.5 , -0.5 , 0.8164965809277261 ], + [ 1.5 , -0.1 , 0.960264500792218 ], + [ 1.5 , -0.01 , 0.9959535579179896 ], + [ 1.5 , 0 , 1 ], + [ 1.5 , 0.01 , 1.0040628822999231 ], + [ 1.5 , 0.1 , 1.0413797439924106 ], + [ 1.5 , 0.5 , 1.224744871391589 ], + [ 1.5 , 0.9 , 1.440396751188327 ], + [ 1.5 , 1 , 1.5 ], + [ 1.5 , 1.5 , 1.8371173070873836 ], + [ 1.5 , 2 , 2.25 ], + [ 1.5 , 3 , 3.375 ], + [ 1.5 , 3.5 , 4.133513940946613 ], + [ 1.5 , 9.31 , 43.592283750240746 ], + [ 1.5 , 12.42 , 153.8343913147384 ], + [ 1.5 , 42.53 , 30843329.085686248 ], + [ 1.5 , 42 , 24878997.72211503 ], + [ 1.5 , 99 , 271040785023476800 ], + [ 1.5 , 1024 , 2.0770611040332967e+180 ], + [ 1.5 , 10000 , null ], + [ 1.5 , 999999 , null ], + [ 1.5 , 1.23e+42 , null ], + [ 1.5 , 4.536e+121 , null ], + [ 1.5 , 1.321e-45 , 1 ], + [ 2 , -4.536e+121 , 0 ], + [ 2 , -1.23e+42 , 0 ], + [ 2 , -999999 , 0 ], + [ 2 , -10000 , 0 ], + [ 2 , -1024 , 5.562684646268003e-309 ], + [ 2 , -99 , 1.5777218104420236e-30 ], + [ 2 , -42 , 2.2737367544323206e-13 ], + [ 2 , -42.53 , 1.5746871532780048e-13 ], + [ 2 , -12.42 , 0.00018247671492125714 ], + [ 2 , -9.31 , 0.0015754721859807148 ], + [ 2 , -3.5 , 0.08838834764831845 ], + [ 2 , -3 , 0.125 ], + [ 2 , -2 , 0.25 ], + [ 2 , -1.5 , 0.3535533905932738 ], + [ 2 , -1 , 0.5 ], + [ 2 , -0.9 , 0.5358867312681466 ], + [ 2 , -0.5 , 0.7071067811865475 ], + [ 2 , -0.1 , 0.9330329915368074 ], + [ 2 , -0.01 , 0.9930924954370359 ], + [ 2 , 0 , 1 ], + [ 2 , 0.01 , 1.0069555500567189 ], + [ 2 , 0.1 , 1.0717734625362931 ], + [ 2 , 0.5 , 1.4142135623730951 ], + [ 2 , 0.9 , 1.8660659830736148 ], + [ 2 , 1 , 2 ], + [ 2 , 1.5 , 2.8284271247461903 ], + [ 2 , 2 , 4 ], + [ 2 , 3 , 8 ], + [ 2 , 3.5 , 11.313708498984761 ], + [ 2 , 9.31 , 634.7303423687613 ], + [ 2 , 12.42 , 5480.151264403915 ], + [ 2 , 42.53 , 6350467760648.925 ], + [ 2 , 42 , 4398046511104 ], + [ 2 , 99 , 6.338253001141147e+29 ], + [ 2 , 1024 , null ], + [ 2 , 10000 , null ], + [ 2 , 999999 , null ], + [ 2 , 1.23e+42 , null ], + [ 2 , 4.536e+121 , null ], + [ 2 , 1.321e-45 , 1 ], + [ 3 , -4.536e+121 , 0 ], + [ 3 , -1.23e+42 , 0 ], + [ 3 , -999999 , 0 ], + [ 3 , -10000 , 0 ], + [ 3 , -1024 , 0 ], + [ 3 , -99 , 5.820975652447899e-48 ], + [ 3 , -42 , 9.139181488855509e-21 ], + [ 3 , -42.53 , 5.105438355578758e-21 ], + [ 3 , -12.42 , 0.0000011861893388190278 ], + [ 3 , -9.31 , 0.0000361410793480627 ], + [ 3 , -3.5 , 0.021383343303319473 ], + [ 3 , -3 , 0.037037037037037035 ], + [ 3 , -2 , 0.1111111111111111 ], + [ 3 , -1.5 , 0.19245008972987526 ], + [ 3 , -1 , 0.3333333333333333 ], + [ 3 , -0.9 , 0.3720410580113015 ], + [ 3 , -0.5 , 0.5773502691896258 ], + [ 3 , -0.1 , 0.8959584598407622 ], + [ 3 , -0.01 , 0.9890740041721707 ], + [ 3 , 0 , 1 ], + [ 3 , 0.01 , 1.0110466919378536 ], + [ 3 , 0.1 , 1.1161231740339044 ], + [ 3 , 0.5 , 1.7320508075688772 ], + [ 3 , 0.9 , 2.6878753795222865 ], + [ 3 , 1 , 3 ], + [ 3 , 1.5 , 5.196152422706632 ], + [ 3 , 2 , 9 ], + [ 3 , 3 , 27 ], + [ 3 , 3.5 , 46.76537180435969 ], + [ 3 , 9.31 , 27669.3451894265 ], + [ 3 , 12.42 , 843035.7340722702 ], + [ 3 , 42.53 , 195869566989735800000 ], + [ 3 , 42 , 109418989131512370000 ], + [ 3 , 99 , 1.7179250691067043e+47 ], + [ 3 , 1024 , null ], + [ 3 , 10000 , null ], + [ 3 , 999999 , null ], + [ 3 , 1.23e+42 , null ], + [ 3 , 4.536e+121 , null ], + [ 3 , 1.321e-45 , 1 ], + [ 3.5 , -4.536e+121 , 0 ], + [ 3.5 , -1.23e+42 , 0 ], + [ 3.5 , -999999 , 0 ], + [ 3.5 , -10000 , 0 ], + [ 3.5 , -1024 , 0 ], + [ 3.5 , -99 , 1.3717141205373995e-54 ], + [ 3.5 , -42 , 1.4097501104573573e-23 ], + [ 3.5 , -42.53 , 7.257483778289607e-24 ], + [ 3.5 , -12.42 , 1.7485372517077033e-7 ], + [ 3.5 , -9.31 , 0.000008604517200839208 ], + [ 3.5 , -3.5 , 0.012466996707285103 ], + [ 3.5 , -3 , 0.023323615160349854 ], + [ 3.5 , -2 , 0.08163265306122448 ], + [ 3.5 , -1.5 , 0.1527207096642425 ], + [ 3.5 , -1 , 0.2857142857142857 ], + [ 3.5 , -0.9 , 0.32384616619162787 ], + [ 3.5 , -0.5 , 0.5345224838248488 ], + [ 3.5 , -0.1 , 0.8822531051524675 ], + [ 3.5 , -0.01 , 0.9875505144073412 ], + [ 3.5 , 0 , 1 ], + [ 3.5 , 0.01 , 1.0126064291507457 ], + [ 3.5 , 0.1 , 1.1334615816706974 ], + [ 3.5 , 0.5 , 1.8708286933869707 ], + [ 3.5 , 0.9 , 3.087885868033636 ], + [ 3.5 , 1 , 3.5 ], + [ 3.5 , 1.5 , 6.547900426854397 ], + [ 3.5 , 2 , 12.25 ], + [ 3.5 , 3 , 42.875 ], + [ 3.5 , 3.5 , 80.21178022896636 ], + [ 3.5 , 9.31 , 116218.02556248815 ], + [ 3.5 , 12.42 , 5719066.030897273 ], + [ 3.5 , 42.53 , 1.3778880264141258e+23 ], + [ 3.5 , 42 , 7.093455730786045e+22 ], + [ 3.5 , 99 , 7.29014876371053e+53 ], + [ 3.5 , 1024 , null ], + [ 3.5 , 10000 , null ], + [ 3.5 , 999999 , null ], + [ 3.5 , 1.23e+42 , null ], + [ 3.5 , 4.536e+121 , null ], + [ 3.5 , 1.321e-45 , 1 ], + [ 9.31 , -4.536e+121 , 0 ], + [ 9.31 , -1.23e+42 , 0 ], + [ 9.31 , -999999 , 0 ], + [ 9.31 , -10000 , 0 ], + [ 9.31 , -1024 , 0 ], + [ 9.31 , -99 , 1.185718464264813e-96 ], + [ 9.31 , -42 , 2.014250122755899e-41 ], + [ 9.31 , -42.53 , 6.174048942416913e-42 ], + [ 9.31 , -12.42 , 9.239425377277916e-13 ], + [ 9.31 , -9.31 , 9.529683345984896e-10 ], + [ 9.31 , -3.5 , 0.0004061403292595729 ], + [ 9.31 , -3 , 0.0012392272564971695 ], + [ 9.31 , -2 , 0.01153720575798865 ], + [ 9.31 , -1.5 , 0.035202659792935666 ], + [ 9.31 , -1 , 0.10741138560687433 ], + [ 9.31 , -0.9 , 0.13425958088274992 ], + [ 9.31 , -0.5 , 0.3277367626722311 ], + [ 9.31 , -0.1 , 0.8000277142282877 ], + [ 9.31 , -0.01 , 0.9779361563216156 ], + [ 9.31 , 0 , 1 ], + [ 9.31 , 0.01 , 1.0225616401804538 ], + [ 9.31 , 0.1 , 1.2499566980184018 ], + [ 9.31 , 0.5 , 3.0512292604784714 ], + [ 9.31 , 0.9 , 7.448258019465359 ], + [ 9.31 , 1 , 9.31 ], + [ 9.31 , 1.5 , 28.40694441505457 ], + [ 9.31 , 2 , 86.6761 ], + [ 9.31 , 3 , 806.9544910000001 ], + [ 9.31 , 3.5 , 2462.203154813712 ], + [ 9.31 , 9.31 , 1049352810.260297 ], + [ 9.31 , 12.42 , 1082318390123.3218 ], + [ 9.31 , 42.53 , 1.6196826577285553e+41 ], + [ 9.31 , 42 , 4.964626729831343e+40 ], + [ 9.31 , 99 , 8.433705218717624e+95 ], + [ 9.31 , 1024 , null ], + [ 9.31 , 10000 , null ], + [ 9.31 , 999999 , null ], + [ 9.31 , 1.23e+42 , null ], + [ 9.31 , 4.536e+121 , null ], + [ 9.31 , 1.321e-45 , 1 ], + [ 12.42 , -4.536e+121 , 0 ], + [ 12.42 , -1.23e+42 , 0 ], + [ 12.42 , -999999 , 0 ], + [ 12.42 , -10000 , 0 ], + [ 12.42 , -1024 , 0 ], + [ 12.42 , -99 , 4.807972907429728e-109 ], + [ 12.42 , -42 , 1.1140199663976283e-46 ], + [ 12.42 , -42.53 , 2.930950804221487e-47 ], + [ 12.42 , -12.42 , 2.5763791725433842e-14 ], + [ 12.42 , -9.31 , 6.512203190396084e-11 ], + [ 12.42 , -3.5 , 0.00014810660080442122 ], + [ 12.42 , -3 , 0.000521957584298624 ], + [ 12.42 , -2 , 0.00648271319698891 ], + [ 12.42 , -1.5 , 0.022846391056327124 ], + [ 12.42 , -1 , 0.08051529790660225 ], + [ 12.42 , -0.9 , 0.10358349579403998 ], + [ 12.42 , -0.5 , 0.2837521769195829 ], + [ 12.42 , -0.1 , 0.7772985193190879 ], + [ 12.42 , -0.01 , 0.9751216166230495 ], + [ 12.42 , 0 , 1 ], + [ 12.42 , 0.01 , 1.0255131082655176 ], + [ 12.42 , 0.1 , 1.2865070177619768 ], + [ 12.42 , 0.5 , 3.5242020373412193 ], + [ 12.42 , 0.9 , 9.654047609943072 ], + [ 12.42 , 1 , 12.42 ], + [ 12.42 , 1.5 , 43.77058930377794 ], + [ 12.42 , 2 , 154.25639999999999 ], + [ 12.42 , 3 , 1915.8644879999997 ], + [ 12.42 , 3.5 , 6751.893531879292 ], + [ 12.42 , 9.31 , 15355786218.015383 ], + [ 12.42 , 12.42 , 38814162552509.95 ], + [ 12.42 , 42.53 , 3.411862111638608e+46 ], + [ 12.42 , 42 , 8.976499795005191e+45 ], + [ 12.42 , 99 , 2.0798786084145918e+108 ], + [ 12.42 , 1024 , null ], + [ 12.42 , 10000 , null ], + [ 12.42 , 999999 , null ], + [ 12.42 , 1.23e+42 , null ], + [ 12.42 , 4.536e+121 , null ], + [ 12.42 , 1.321e-45 , 1 ], + [ 42.53 , -4.536e+121 , 0 ], + [ 42.53 , -1.23e+42 , 0 ], + [ 42.53 , -999999 , 0 ], + [ 42.53 , -10000 , 0 ], + [ 42.53 , -1024 , 0 ], + [ 42.53 , -99 , 5.743241933935965e-162 ], + [ 42.53 , -42 , 3.933633791030979e-69 ], + [ 42.53 , -42.53 , 5.389957902101816e-70 ], + [ 42.53 , -12.42 , 5.910215910303245e-21 ], + [ 42.53 , -9.31 , 6.868248293727032e-16 ], + [ 42.53 , -3.5 , 0.000001993270138174389 ], + [ 42.53 , -3 , 0.000012999116975170522 ], + [ 42.53 , -2 , 0.0005528524449540023 ], + [ 42.53 , -1.5 , 0.00360542881987296 ], + [ 42.53 , -1 , 0.02351281448389372 ], + [ 42.53 , -0.9 , 0.03421166065027591 ], + [ 42.53 , -0.5 , 0.15333888770919699 ], + [ 42.53 , -0.1 , 0.687274865849112 ], + [ 42.53 , -0.01 , 0.9631923978150005 ], + [ 42.53 , 0 , 1 ], + [ 42.53 , 0.01 , 1.038214174310862 ], + [ 42.53 , 0.1 , 1.4550219274562344 ], + [ 42.53 , 0.5 , 6.521502894272148 ], + [ 42.53 , 0.9 , 29.22980004456274 ], + [ 42.53 , 1 , 42.53 ], + [ 42.53 , 1.5 , 277.35951809339446 ], + [ 42.53 , 2 , 1808.8009000000002 ], + [ 42.53 , 3 , 76928.30227700001 ], + [ 42.53 , 3.5 , 501688.1459508982 ], + [ 42.53 , 9.31 , 1455975318937331.5 ], + [ 42.53 , 12.42 , 169198556393973020000 ], + [ 42.53 , 42.53 , 1.8553020601701723e+69 ], + [ 42.53 , 42 , 2.542178690553466e+68 ], + [ 42.53 , 99 , 1.7411768675304243e+161 ], + [ 42.53 , 1024 , null ], + [ 42.53 , 10000 , null ], + [ 42.53 , 999999 , null ], + [ 42.53 , 1.23e+42 , null ], + [ 42.53 , 4.536e+121 , null ], + [ 42.53 , 1.321e-45 , 1 ], + [ 42 , -4.536e+121 , 0 ], + [ 42 , -1.23e+42 , 0 ], + [ 42 , -999999 , 0 ], + [ 42 , -10000 , 0 ], + [ 42 , -1024 , 0 ], + [ 42 , -99 , 1.9875600123585817e-161 ], + [ 42 , -42 , 6.660852295672145e-69 ], + [ 42 , -42.53 , 9.187718476318233e-70 ], + [ 42 , -12.42 , 6.906274137921159e-21 ], + [ 42 , -9.31 , 7.718787882624365e-16 ], + [ 42 , -3.5 , 0.0000020827036761971158 ], + [ 42 , -3 , 0.000013497462477054314 ], + [ 42 , -2 , 0.0005668934240362812 ], + [ 42 , -1.5 , 0.003673889284811712 ], + [ 42 , -1 , 0.023809523809523808 ], + [ 42 , -0.9 , 0.03459996334005399 ], + [ 42 , -0.5 , 0.1543033499620919 ], + [ 42 , -0.1 , 0.6881372553930184 ], + [ 42 , -0.01 , 0.9633131905916237 ], + [ 42 , 0 , 1 ], + [ 42 , 0.01 , 1.0380839894716327 ], + [ 42 , 0.1 , 1.4531984602822678 ], + [ 42 , 0.5 , 6.48074069840786 ], + [ 42 , 0.9 , 28.901764726506773 ], + [ 42 , 1 , 42 ], + [ 42 , 1.5 , 272.19110933313016 ], + [ 42 , 2 , 1764 ], + [ 42 , 3 , 74088 ], + [ 42 , 3.5 , 480145.11686364154 ], + [ 42 , 9.31 , 1295540200361100 ], + [ 42 , 12.42 , 144795874016812120000 ], + [ 42 , 42.53 , 1.088409492060021e+69 ], + [ 42 , 42 , 1.5013093754529656e+68 ], + [ 42 , 99 , 5.031294621455621e+160 ], + [ 42 , 1024 , null ], + [ 42 , 10000 , null ], + [ 42 , 999999 , null ], + [ 42 , 1.23e+42 , null ], + [ 42 , 4.536e+121 , null ], + [ 42 , 1.321e-45 , 1 ], + [ 99 , -4.536e+121 , 0 ], + [ 99 , -1.23e+42 , 0 ], + [ 99 , -999999 , 0 ], + [ 99 , -10000 , 0 ], + [ 99 , -1024 , 0 ], + [ 99 , -99 , 2.7046790361647396e-198 ], + [ 99 , -42 , 1.5251825470010567e-84 ], + [ 99 , -42.53 , 1.3354731897084872e-85 ], + [ 99 , -12.42 , 1.6376115137024526e-25 ], + [ 99 , -9.31 , 2.6341247460666577e-19 ], + [ 99 , -3.5 , 1.0358021756790557e-7 ], + [ 99 , -3 , 0.0000010306101521283646 ], + [ 99 , -2 , 0.00010203040506070809 ], + [ 99 , -1.5 , 0.0010151897123830424 ], + [ 99 , -1 , 0.010101010101010102 ], + [ 99 , -0.9 , 0.015992940623735113 ], + [ 99 , -0.5 , 0.10050378152592121 ], + [ 99 , -0.1 , 0.6315917965717447 ], + [ 99 , -0.01 , 0.955088570807023 ], + [ 99 , 0 , 1 ], + [ 99 , 0.01 , 1.047023313403309 ], + [ 99 , 0.1 , 1.5833011217497763 ], + [ 99 , 0.5 , 9.9498743710662 ], + [ 99 , 0.9 , 62.527587860602736 ], + [ 99 , 1 , 99 ], + [ 99 , 1.5 , 985.0375627355537 ], + [ 99 , 2 , 9801 ], + [ 99 , 3 , 970299 ], + [ 99 , 3.5 , 9654353.152371163 ], + [ 99 , 9.31 , 3796327419546950000 ], + [ 99 , 12.42 , 6.106454379641691e+24 ], + [ 99 , 42.53 , 7.487982594531039e+84 ], + [ 99 , 42 , 6.556592205741436e+83 ], + [ 99 , 99 , 3.697296376497263e+197 ], + [ 99 , 1024 , null ], + [ 99 , 10000 , null ], + [ 99 , 999999 , null ], + [ 99 , 1.23e+42 , null ], + [ 99 , 4.536e+121 , null ], + [ 99 , 1.321e-45 , 1 ], + [ 1024 , -4.536e+121 , 0 ], + [ 1024 , -1.23e+42 , 0 ], + [ 1024 , -999999 , 0 ], + [ 1024 , -10000 , 0 ], + [ 1024 , -1024 , 0 ], + [ 1024 , -99 , 9.556619453472961e-299 ], + [ 1024 , -42 , 3.6931914471142943e-127 ], + [ 1024 , -42.53 , 9.37438625975286e-129 ], + [ 1024 , -12.42 , 4.0933090770390186e-38 ], + [ 1024 , -9.31 , 9.421225603901338e-29 ], + [ 1024 , -3.5 , 2.9103830456733704e-11 ], + [ 1024 , -3 , 9.313225746154785e-10 ], + [ 1024 , -2 , 9.5367431640625e-7 ], + [ 1024 , -1.5 , 0.000030517578125 ], + [ 1024 , -1 , 0.0009765625 ], + [ 1024 , -0.9 , 0.0019531249999999998 ], + [ 1024 , -0.5 , 0.03125 ], + [ 1024 , -0.1 , 0.5 ], + [ 1024 , -0.01 , 0.9330329915368074 ], + [ 1024 , 0 , 1 ], + [ 1024 , 0.01 , 1.0717734625362931 ], + [ 1024 , 0.1 , 2 ], + [ 1024 , 0.5 , 32 ], + [ 1024 , 0.9 , 512.0000000000001 ], + [ 1024 , 1 , 1024 ], + [ 1024 , 1.5 , 32768 ], + [ 1024 , 2 , 1048576 ], + [ 1024 , 3 , 1073741824 ], + [ 1024 , 3.5 , 34359738368 ], + [ 1024 , 9.31 , 1.0614330258537691e+28 ], + [ 1024 , 12.42 , 2.4430112194786206e+37 ], + [ 1024 , 42.53 , 1.0667365012398832e+128 ], + [ 1024 , 42 , 2.7076852481648583e+126 ], + [ 1024 , 99 , 1.0463951242053392e+298 ], + [ 1024 , 1024 , null ], + [ 1024 , 10000 , null ], + [ 1024 , 999999 , null ], + [ 1024 , 1.23e+42 , null ], + [ 1024 , 4.536e+121 , null ], + [ 1024 , 1.321e-45 , 1 ], + [ 10000 , -4.536e+121 , 0 ], + [ 10000 , -1.23e+42 , 0 ], + [ 10000 , -999999 , 0 ], + [ 10000 , -10000 , 0 ], + [ 10000 , -1024 , 0 ], + [ 10000 , -99 , 0 ], + [ 10000 , -42 , 9.999999999999997e-169 ], + [ 10000 , -42.53 , 7.585775750291758e-171 ], + [ 10000 , -12.42 , 2.0892961308540409e-50 ], + [ 10000 , -9.31 , 5.754399373371543e-38 ], + [ 10000 , -3.5 , 1e-14 ], + [ 10000 , -3 , 1e-12 ], + [ 10000 , -2 , 1e-8 ], + [ 10000 , -1.5 , 0.000001 ], + [ 10000 , -1 , 0.0001 ], + [ 10000 , -0.9 , 0.00025118864315095795 ], + [ 10000 , -0.5 , 0.01 ], + [ 10000 , -0.1 , 0.3981071705534972 ], + [ 10000 , -0.01 , 0.9120108393559098 ], + [ 10000 , 0 , 1 ], + [ 10000 , 0.01 , 1.096478196143185 ], + [ 10000 , 0.1 , 2.51188643150958 ], + [ 10000 , 0.5 , 100 ], + [ 10000 , 0.9 , 3981.0717055349733 ], + [ 10000 , 1 , 10000 ], + [ 10000 , 1.5 , 1000000 ], + [ 10000 , 2 , 100000000 ], + [ 10000 , 3 , 1000000000000 ], + [ 10000 , 3.5 , 100000000000000 ], + [ 10000 , 9.31 , 1.7378008287493835e+37 ], + [ 10000 , 12.42 , 4.78630092322638e+49 ], + [ 10000 , 42.53 , 1.318256738556421e+170 ], + [ 10000 , 42 , 1.0000000000000004e+168 ], + [ 10000 , 99 , null ], + [ 10000 , 1024 , null ], + [ 10000 , 10000 , null ], + [ 10000 , 999999 , null ], + [ 10000 , 1.23e+42 , null ], + [ 10000 , 4.536e+121 , null ], + [ 10000 , 1.321e-45 , 1 ], + [ 999999 , -4.536e+121 , 0 ], + [ 999999 , -1.23e+42 , 0 ], + [ 999999 , -999999 , 0 ], + [ 999999 , -10000 , 0 ], + [ 999999 , -1024 , 0 ], + [ 999999 , -99 , 0 ], + [ 999999 , -42 , 1.0000420009030127e-252 ], + [ 999999 , -42.53 , 6.607215479115195e-256 ], + [ 999999 , -12.42 , 3.019989228454065e-75 ], + [ 999999 , -9.31 , 1.3803971160466279e-56 ], + [ 999999 , -3.5 , 1.000003500007875e-21 ], + [ 999999 , -3 , 1.000003000006e-18 ], + [ 999999 , -2 , 1.000002000003e-12 ], + [ 999999 , -1.5 , 1.000001500001875e-9 ], + [ 999999 , -1 , 0.000001000001000001 ], + [ 999999 , -0.9 , 0.00000398107528850291 ], + [ 999999 , -0.5 , 0.0010000005000003751 ], + [ 999999 , -0.1 , 0.2511886682698361 ], + [ 999999 , -0.01 , 0.8709635986657209 ], + [ 999999 , 0 , 1 ], + [ 999999 , 0.01 , 1.1481536100153409 ], + [ 999999 , 0.1 , 3.981071307427623 ], + [ 999999 , 0.5 , 999.999499999875 ], + [ 999999 , 0.9 , 251188.41708116795 ], + [ 999999 , 1 , 999999 ], + [ 999999 , 1.5 , 999998500.000375 ], + [ 999999 , 2 , 999998000001 ], + [ 999999 , 3 , 999997000002999900 ], + [ 999999 , 3.5 , 999996500004375000000 ], + [ 999999 , 9.31 , 7.244292156042301e+55 ], + [ 999999 , 12.42 , 3.311270088575451e+74 ], + [ 999999 , 42.53 , 1.5134968780129974e+255 ], + [ 999999 , 42 , 9.99958000860989e+251 ], + [ 999999 , 99 , null ], + [ 999999 , 1024 , null ], + [ 999999 , 10000 , null ], + [ 999999 , 999999 , null ], + [ 999999 , 1.23e+42 , null ], + [ 999999 , 4.536e+121 , null ], + [ 999999 , 1.321e-45 , 1 ], + [ 1.23e+42 , -4.536e+121 , 0 ], + [ 1.23e+42 , -1.23e+42 , 0 ], + [ 1.23e+42 , -999999 , 0 ], + [ 1.23e+42 , -10000 , 0 ], + [ 1.23e+42 , -1024 , 0 ], + [ 1.23e+42 , -99 , 0 ], + [ 1.23e+42 , -42 , 0 ], + [ 1.23e+42 , -42.53 , 0 ], + [ 1.23e+42 , -12.42 , 0 ], + [ 1.23e+42 , -9.31 , 0 ], + [ 1.23e+42 , -3.5 , 4.845427613405108e-148 ], + [ 1.23e+42 , -3 , 5.373839183563361e-127 ], + [ 1.23e+42 , -2 , 6.609822195782934e-85 ], + [ 1.23e+42 , -1.5 , 7.330647436320588e-64 ], + [ 1.23e+42 , -1 , 8.130081300813009e-43 ], + [ 1.23e+42 , -0.9 , 1.3154834835469472e-38 ], + [ 1.23e+42 , -0.5 , 9.016696346674322e-22 ], + [ 1.23e+42 , -0.1 , 0.00006180299032635357 ], + [ 1.23e+42 , -0.01 , 0.3794031644861138 ], + [ 1.23e+42 , 0 , 1 ], + [ 1.23e+42 , 0.01 , 2.635718659211658 ], + [ 1.23e+42 , 0.1 , 16180.446847627492 ], + [ 1.23e+42 , 0.5 , 1.1090536506409417e+21 ], + [ 1.23e+42 , 0.9 , 7.601767810141509e+37 ], + [ 1.23e+42 , 1 , 1.23e+42 ], + [ 1.23e+42 , 1.5 , 1.3641359902883582e+63 ], + [ 1.23e+42 , 2 , 1.5128999999999998e+84 ], + [ 1.23e+42 , 3 , 1.8608669999999998e+126 ], + [ 1.23e+42 , 3.5 , 2.063801339707257e+147 ], + [ 1.23e+42 , 9.31 , null ], + [ 1.23e+42 , 12.42 , null ], + [ 1.23e+42 , 42.53 , null ], + [ 1.23e+42 , 42 , null ], + [ 1.23e+42 , 99 , null ], + [ 1.23e+42 , 1024 , null ], + [ 1.23e+42 , 10000 , null ], + [ 1.23e+42 , 999999 , null ], + [ 1.23e+42 , 1.23e+42 , null ], + [ 1.23e+42 , 4.536e+121 , null ], + [ 1.23e+42 , 1.321e-45 , 1 ], + [ 4.536e+121 , -4.536e+121 , 0 ], + [ 4.536e+121 , -1.23e+42 , 0 ], + [ 4.536e+121 , -999999 , 0 ], + [ 4.536e+121 , -10000 , 0 ], + [ 4.536e+121 , -1024 , 0 ], + [ 4.536e+121 , -99 , 0 ], + [ 4.536e+121 , -42 , 0 ], + [ 4.536e+121 , -42.53 , 0 ], + [ 4.536e+121 , -12.42 , 0 ], + [ 4.536e+121 , -9.31 , 0 ], + [ 4.536e+121 , -3.5 , 0 ], + [ 4.536e+121 , -3 , 0 ], + [ 4.536e+121 , -2 , 4.860197394001039e-244 ], + [ 4.536e+121 , -1.5 , 3.2733348264798203e-183 ], + [ 4.536e+121 , -1 , 2.2045855379188713e-122 ], + [ 4.536e+121 , -0.9 , 3.228451441872509e-110 ], + [ 4.536e+121 , -0.5 , 1.4847846772912466e-61 ], + [ 4.536e+121 , -0.1 , 6.828616064425581e-13 ], + [ 4.536e+121 , -0.01 , 0.06073419360506709 ], + [ 4.536e+121 , 0 , 1 ], + [ 4.536e+121 , 0.01 , 16.46518938742556 ], + [ 4.536e+121 , 0.1 , 1464425574033.3813 ], + [ 4.536e+121 , 0.5 , 6.734983296193095e+60 ], + [ 4.536e+121 , 0.9 , 3.0974602468234675e+109 ], + [ 4.536e+121 , 1 , 4.536e+121 ], + [ 4.536e+121 , 1.5 , 3.0549884231531876e+182 ], + [ 4.536e+121 , 2 , 2.0575296e+243 ], + [ 4.536e+121 , 3 , null ], + [ 4.536e+121 , 3.5 , null ], + [ 4.536e+121 , 9.31 , null ], + [ 4.536e+121 , 12.42 , null ], + [ 4.536e+121 , 42.53 , null ], + [ 4.536e+121 , 42 , null ], + [ 4.536e+121 , 99 , null ], + [ 4.536e+121 , 1024 , null ], + [ 4.536e+121 , 10000 , null ], + [ 4.536e+121 , 999999 , null ], + [ 4.536e+121 , 1.23e+42 , null ], + [ 4.536e+121 , 4.536e+121 , null ], + [ 4.536e+121 , 1.321e-45 , 1 ], + [ 1.321e-45 , -4.536e+121 , null ], + [ 1.321e-45 , -1.23e+42 , null ], + [ 1.321e-45 , -999999 , null ], + [ 1.321e-45 , -10000 , null ], + [ 1.321e-45 , -1024 , null ], + [ 1.321e-45 , -99 , null ], + [ 1.321e-45 , -42 , null ], + [ 1.321e-45 , -42.53 , null ], + [ 1.321e-45 , -12.42 , null ], + [ 1.321e-45 , -9.31 , null ], + [ 1.321e-45 , -3.5 , 1.1935486842274423e+157 ], + [ 1.321e-45 , -3 , 4.338019972062622e+134 ], + [ 1.321e-45 , -2 , 5.730524383094723e+89 ], + [ 1.321e-45 , -1.5 , 2.0827913894729404e+67 ], + [ 1.321e-45 , -1 , 7.57002271006813e+44 ], + [ 1.321e-45 , -0.9 , 2.461429856359432e+40 ], + [ 1.321e-45 , -0.5 , 2.751367425493754e+22 ], + [ 1.321e-45 , -0.1 , 30754.5741777284 ], + [ 1.321e-45 , -0.01 , 2.8105477736558084 ], + [ 1.321e-45 , 0 , 1 ], + [ 1.321e-45 , 0.01 , 0.35580252695696185 ], + [ 1.321e-45 , 0.1 , 0.00003251548840250801 ], + [ 1.321e-45 , 0.5 , 3.63455636907725e-23 ], + [ 1.321e-45 , 0.9 , 4.06267924887791e-41 ], + [ 1.321e-45 , 1 , 1.321e-45 ], + [ 1.321e-45 , 1.5 , 4.801248963551047e-68 ], + [ 1.321e-45 , 2 , 1.745041e-90 ], + [ 1.321e-45 , 3 , 2.3051991610000002e-135 ], + [ 1.321e-45 , 3.5 , 8.378376292604084e-158 ], + [ 1.321e-45 , 9.31 , 0 ], + [ 1.321e-45 , 12.42 , 0 ], + [ 1.321e-45 , 42.53 , 0 ], + [ 1.321e-45 , 42 , 0 ], + [ 1.321e-45 , 99 , 0 ], + [ 1.321e-45 , 1024 , 0 ], + [ 1.321e-45 , 10000 , 0 ], + [ 1.321e-45 , 999999 , 0 ], + [ 1.321e-45 , 1.23e+42 , 0 ], + [ 1.321e-45 , 4.536e+121 , 0 ], + [ 1.321e-45 , 1.321e-45 , 1 ] + ]; + + data.forEach(function (value) { + var actual = getQueryResults("RETURN POW(" + JSON.stringify(value[0]) + ", " + JSON.stringify(value[1]) + ")"); + if (value[2] === null) { + assertNull(actual[0]); + } + else { + assertEqual(value[2].toPrecision(6), actual[0].toPrecision(6)); + } + actual = getQueryResults("RETURN NOOPT(POW(" + JSON.stringify(value[0]) + ", " + JSON.stringify(value[1]) + "))"); + if (value[2] === null) { + assertNull(actual[0]); + } + else { + assertEqual(value[2].toPrecision(6), actual[0].toPrecision(6)); + } + actual = getQueryResults("RETURN NOOPT(V8(POW(" + JSON.stringify(value[0]) + ", " + JSON.stringify(value[1]) + ")))"); + if (value[2] === null) { + assertNull(actual[0]); + } + else { + assertEqual(value[2].toPrecision(6), actual[0].toPrecision(6)); + } + }); + }, + +//////////////////////////////////////////////////////////////////////////////// +/// @brief test pow function +//////////////////////////////////////////////////////////////////////////////// + + testPowInvalid : function () { + var buildQuery = function (nr, input) { + switch (nr) { + case 0: + return `RETURN POW(${input})`; + case 1: + return `RETURN NOOPT(POW(${input}))`; + case 2: + return `RETURN NOOPT(V8(POW(${input})))`; + default: + assertTrue(false, "Undefined state"); + } + }; + for (var i = 0; i < 3; ++i) { + assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, buildQuery(i, "")); + assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, buildQuery(i, "2")); + assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, buildQuery(i, "2, 2, 3")); + assertQueryError(errors.ERROR_QUERY_FUNCTION_ARGUMENT_NUMBER_MISMATCH.code, buildQuery(i, "2, 2, 3, 4")); + assertEqual([ 1 ], getQueryResults(buildQuery(i, "false, false"))); + assertEqual([ 0 ], getQueryResults(buildQuery(i, "false, 1"))); + assertEqual([ 0 ], getQueryResults(buildQuery(i, "false, 2"))); + assertEqual([ 1 ], getQueryResults(buildQuery(i, "true, true"))); + assertEqual([ 0 ], getQueryResults(buildQuery(i, "0, true"))); + assertEqual([ 1 ], getQueryResults(buildQuery(i, "0, false"))); + assertEqual([ 0 ], getQueryResults(buildQuery(i, "'foo', 1"))); + assertEqual([ 0 ], getQueryResults(buildQuery(i, "[ ], 1"))); + assertEqual([ 0 ], getQueryResults(buildQuery(i, "{ }, 1"))); + } } }; }