From ae3d7fe87c84ed155f834deff7acad66f021828a Mon Sep 17 00:00:00 2001 From: Neil Kichler Date: Wed, 28 Feb 2024 14:48:34 +0100 Subject: [PATCH] added pow(interval, interval) --- include/cuinterval/arithmetic/basic.cuh | 48 + tests/test_converter.py | 1 + tests/test_ops.cuh | 9 + tests/tests_c_xsc.cu | 35 + tests/tests_libieeep1788_elem.cu | 4063 ++++++++++++++++++++++- 5 files changed, 4155 insertions(+), 1 deletion(-) diff --git a/include/cuinterval/arithmetic/basic.cuh b/include/cuinterval/arithmetic/basic.cuh index 06f03b6..966b4ef 100644 --- a/include/cuinterval/arithmetic/basic.cuh +++ b/include/cuinterval/arithmetic/basic.cuh @@ -725,6 +725,54 @@ __device__ interval pown(interval x, std::integral auto n) } } +template +__device__ interval pow_(interval x, T y) +{ + assert(inf(x) >= 0); + + using intrinsic::next_floating; + using intrinsic::prev_floating; + + if (sup(x) == 0) { + if (y > 0) { + return { 0, 0 }; + } else { + return empty(); + } + } else { + if (rint(y) == y) { + return pown(x, lrint(y)); + } else if (y == 0.5) { + return sqrt(x); + } else { + interval lb { prev_floating(pow(inf(x), y)), next_floating(pow(inf(x), y))}; + interval ub { prev_floating(pow(sup(x), y)), next_floating(pow(sup(x), y))}; + return convex_hull(lb, ub); + } + } + + return {}; +} + +template +__device__ interval pow(interval x, interval y) +{ + if (empty(y)) { + return empty(); + } + + interval domain { static_cast(0), intrinsic::pos_inf() }; + x = intersection(x, domain); + + if (empty(x)) { + return empty(); + } else if (y.lb == y.ub) { + return pow_(x, y.ub); + } else { + return convex_hull(pow_(x, y.lb), pow_(x, y.ub)); + } +} + template __device__ unsigned int quadrant(T v) { int quotient; diff --git a/tests/test_converter.py b/tests/test_converter.py index 8071541..ce12ab2 100644 --- a/tests/test_converter.py +++ b/tests/test_converter.py @@ -126,6 +126,7 @@ def convert_to_test(file_path): "sinpi": {"args": [I], "ret": I, "ulp_error": 3}, "cospi": {"args": [I], "ret": I, "ulp_error": 3}, "pown": {"args": [I, N], "ret": I, "ulp_error": 1}, + "pow": {"args": [I, I], "ret": I, "ulp_error": 1}, # "cot": {"args": [I], "ret": I, "ulp_error": 4}, } diff --git a/tests/test_ops.cuh b/tests/test_ops.cuh index 963cede..fde1fea 100644 --- a/tests/test_ops.cuh +++ b/tests/test_ops.cuh @@ -634,4 +634,13 @@ __global__ void test_pown(int n, interval *x, int *n_pow, interval *res) } } +template +__global__ void test_pow(int n, interval *x, interval *y, interval *res) +{ + int i = threadIdx.x + blockIdx.x * blockDim.x; + if (i < n) { + res[i] = pow(x[i], y[i]); + } +} + #endif // TEST_OPS_CUH diff --git a/tests/tests_c_xsc.cu b/tests/tests_c_xsc.cu index 3f42131..09bfb00 100644 --- a/tests/tests_c_xsc.cu +++ b/tests/tests_c_xsc.cu @@ -956,6 +956,41 @@ void tests_c_xsc() { } }; + "cxsc.intervalstdfunc_pow"_test = [&] { + constexpr int n = 2; + std::array h_xs {{ + {2.0,2.0}, + {4.0,4.0}, + }}; + + std::array h_ys {{ + {2.0,2.0}, + {5.0,5.0}, + }}; + + std::array h_res{}; + I *d_res = (I *)d_res_; + I *d_xs = (I *)d_xs_; + I *d_ys = (I *)d_ys_; + int n_result_bytes = n * sizeof(I); + std::array h_ref {{ + {4.0,4.0}, + {1024.0,1024.0}, + }}; + + CUDA_CHECK(cudaMemcpy(d_xs, h_xs.data(), n_bytes, cudaMemcpyHostToDevice)); + CUDA_CHECK(cudaMemcpy(d_ys, h_ys.data(), n_bytes, cudaMemcpyHostToDevice)); + CUDA_CHECK(cudaMemcpy(d_res, h_res.data(), n_result_bytes, cudaMemcpyHostToDevice)); + test_pow<<>>(n, d_xs, d_ys, d_res); + CUDA_CHECK(cudaMemcpy(h_res.data(), d_res, n_result_bytes, cudaMemcpyDeviceToHost)); + int max_ulp_diff = 1; + auto failed = check_all_equal(h_res, h_ref, max_ulp_diff); + for (auto fail_id : failed) { + printf("failed at case %zu:\n", fail_id); + printf("x = [%a, %a]\ny = [%a, %a]\n", h_xs[fail_id].lb, h_xs[fail_id].ub, h_ys[fail_id].lb, h_ys[fail_id].ub); + } + }; + "cxsc.intervalstdfunc_sqr"_test = [&] { constexpr int n = 3; std::array h_xs {{ diff --git a/tests/tests_libieeep1788_elem.cu b/tests/tests_libieeep1788_elem.cu index 494afb2..946baaf 100644 --- a/tests/tests_libieeep1788_elem.cu +++ b/tests/tests_libieeep1788_elem.cu @@ -19,7 +19,7 @@ void tests_libieeep1788_elem() { T infinity = std::numeric_limits::infinity(); T NaN = ::nan(""); - const int n = 564; // count of largest test array + const int n = 1344; // count of largest test array const int n_bytes = n * sizeof(I); const int blockSize = 256; [[maybe_unused]] const int numBlocks = (n + blockSize - 1) / blockSize; @@ -4762,6 +4762,4067 @@ void tests_libieeep1788_elem() { } }; + "minimal_pow_pow"_test = [&] { + constexpr int n = 1344; + std::array h_xs {{ + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,-0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.0}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,0.5}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.0}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,1.5}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.0,infinity}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,0.5}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.0}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,1.5}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,-0.1}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {-1.0,0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,-0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,1.5}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,0.5}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.1,1.0}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,1.5}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {0.5,infinity}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,1.5}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,1.5}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + {1.1,infinity}, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + }}; + + std::array h_ys {{ + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.0}, + {-0.1,-0.1}, + {-0.1,0.0}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.0}, + {-0.1,-0.1}, + {-0.1,0.0}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.0}, + {-0.1,-0.1}, + {-0.1,0.0}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.0}, + {-0.1,-0.1}, + {-0.1,0.0}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,1.0}, + {-0.0,2.5}, + {-0.0,infinity}, + {-0.1,-0.1}, + {-0.1,0.1}, + {-0.1,1.0}, + {-0.1,2.5}, + {-0.1,infinity}, + {-1.0,-0.0}, + {-1.0,-0.1}, + {-1.0,-1.0}, + {-1.0,0.0}, + {-1.0,0.1}, + {-1.0,1.0}, + {-1.0,2.5}, + {-1.0,infinity}, + {-2.5,-0.0}, + {-2.5,-0.1}, + {-2.5,-1.0}, + {-2.5,-2.5}, + {-2.5,0.0}, + {-2.5,0.1}, + {-2.5,1.0}, + {-2.5,2.5}, + {-2.5,infinity}, + {-infinity,-0.0}, + {-infinity,-0.1}, + {-infinity,-1.0}, + {-infinity,-2.5}, + {-infinity,0.0}, + {-infinity,0.1}, + {-infinity,1.0}, + {-infinity,2.5}, + {0.0,0.0}, + {0.0,1.0}, + {0.0,2.5}, + {0.0,infinity}, + {0.1,0.1}, + {0.1,1.0}, + {0.1,2.5}, + {0.1,infinity}, + {1.0,1.0}, + {1.0,2.5}, + {1.0,infinity}, + {2.5,2.5}, + {2.5,infinity}, + empty, + entire, + {-0.0,-0.0}, + {-0.0,infinity}, + {-3.0,5.0}, + {-5.0,-5.0}, + {-infinity,-0.0}, + {-infinity,-1.0}, + {-infinity,0.0}, + {0.0,0.0}, + {0.0,infinity}, + {1.0,infinity}, + {5.0,5.0}, + empty, + entire, + }}; + + std::array h_res{}; + I *d_res = (I *)d_res_; + I *d_xs = (I *)d_xs_; + I *d_ys = (I *)d_ys_; + int n_result_bytes = n * sizeof(I); + std::array h_ref {{ + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0X1.125FBEE250664P+0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {0X1.6A09E667F3BCCP+2,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {0X1.6A09E667F3BCCP+2,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0X1.6A09E667F3BCDP-3}, + {0.0,0X1.6A09E667F3BCDP-3}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0X1.EBA7C9E4D31E9P-1,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,0X1.0A97DCE72A0CBP+0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0X1.125FBEE250664P+0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {0X1.6A09E667F3BCCP+2,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {0X1.6A09E667F3BCCP+2,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0X1.6A09E667F3BCDP-3}, + {0.0,0X1.6A09E667F3BCDP-3}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0X1.EBA7C9E4D31E9P-1,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,0X1.0A97DCE72A0CBP+0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + empty, + {0.0,infinity}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + empty, + empty, + empty, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + {0.0,0.0}, + empty, + {0.0,0.0}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0X1.125FBEE250664P+0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {0X1.6A09E667F3BCCP+2,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {0X1.6A09E667F3BCCP+2,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0.5}, + {0.0,0X1.6A09E667F3BCDP-3}, + {0.0,0X1.6A09E667F3BCDP-3}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + {0.0,1.0}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0X1.EBA7C9E4D31E9P-1,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0X1.5555555555555P-1,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,0X1.0A97DCE72A0CBP+0}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,1.5}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.0,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0X1.999999999999AP-4,1.0}, + {0X1.9E7C6E43390B7P-9,1.0}, + {0.0,1.0}, + {0X1.125FBEE250664P+0,0X1.4248EF8FC2604P+0}, + {0X1.96B230BCDC434P-1,0X1.4248EF8FC2604P+0}, + {0X1.999999999999AP-4,0X1.4248EF8FC2604P+0}, + {0X1.9E7C6E43390B7P-9,0X1.4248EF8FC2604P+0}, + {0.0,0X1.4248EF8FC2604P+0}, + {1.0,0X1.4P+3}, + {0X1.125FBEE250664P+0,0X1.4P+3}, + {0X1P+1,0X1.4P+3}, + {1.0,0X1.4P+3}, + {0X1.96B230BCDC434P-1,0X1.4P+3}, + {0X1.999999999999AP-4,0X1.4P+3}, + {0X1.9E7C6E43390B7P-9,0X1.4P+3}, + {0.0,0X1.4P+3}, + {1.0,0X1.3C3A4EDFA9758P+8}, + {0X1.125FBEE250664P+0,0X1.3C3A4EDFA9758P+8}, + {0X1P+1,0X1.3C3A4EDFA9758P+8}, + {0X1.6A09E667F3BCCP+2,0X1.3C3A4EDFA9758P+8}, + {1.0,0X1.3C3A4EDFA9758P+8}, + {0X1.96B230BCDC434P-1,0X1.3C3A4EDFA9758P+8}, + {0X1.999999999999AP-4,0X1.3C3A4EDFA9758P+8}, + {0X1.9E7C6E43390B7P-9,0X1.3C3A4EDFA9758P+8}, + {0.0,0X1.3C3A4EDFA9758P+8}, + {1.0,infinity}, + {0X1.125FBEE250664P+0,infinity}, + {0X1P+1,infinity}, + {0X1.6A09E667F3BCCP+2,infinity}, + {1.0,infinity}, + {0X1.96B230BCDC434P-1,infinity}, + {0X1.999999999999AP-4,infinity}, + {0X1.9E7C6E43390B7P-9,infinity}, + {1.0,1.0}, + {0X1.999999999999AP-4,1.0}, + {0X1.9E7C6E43390B7P-9,1.0}, + {0.0,1.0}, + {0X1.96B230BCDC434P-1,0X1.DDB680117AB13P-1}, + {0X1.999999999999AP-4,0X1.DDB680117AB13P-1}, + {0X1.9E7C6E43390B7P-9,0X1.DDB680117AB13P-1}, + {0.0,0X1.DDB680117AB13P-1}, + {0X1.999999999999AP-4,0X1P-1}, + {0X1.9E7C6E43390B7P-9,0X1P-1}, + {0.0,0X1P-1}, + {0X1.9E7C6E43390B7P-9,0X1.6A09E667F3BCDP-3}, + {0.0,0X1.6A09E667F3BCDP-3}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0X1.999999999999AP-4,1.0}, + {0X1.9E7C6E43390B7P-9,1.0}, + {0.0,1.0}, + {1.0,0X1.4248EF8FC2604P+0}, + {1.0,0X1.4248EF8FC2604P+0}, + {1.0,0X1.4248EF8FC2604P+0}, + {0X1.96B230BCDC434P-1,0X1.4248EF8FC2604P+0}, + {0X1.999999999999AP-4,0X1.4248EF8FC2604P+0}, + {0X1.9E7C6E43390B7P-9,0X1.4248EF8FC2604P+0}, + {0.0,0X1.4248EF8FC2604P+0}, + {1.0,0X1.4P+3}, + {1.0,0X1.4P+3}, + {1.0,0X1.4P+3}, + {1.0,0X1.4P+3}, + {0X1.96B230BCDC434P-1,0X1.4P+3}, + {0X1.999999999999AP-4,0X1.4P+3}, + {0X1.9E7C6E43390B7P-9,0X1.4P+3}, + {0.0,0X1.4P+3}, + {1.0,0X1.3C3A4EDFA9758P+8}, + {1.0,0X1.3C3A4EDFA9758P+8}, + {1.0,0X1.3C3A4EDFA9758P+8}, + {1.0,0X1.3C3A4EDFA9758P+8}, + {1.0,0X1.3C3A4EDFA9758P+8}, + {0X1.96B230BCDC434P-1,0X1.3C3A4EDFA9758P+8}, + {0X1.999999999999AP-4,0X1.3C3A4EDFA9758P+8}, + {0X1.9E7C6E43390B7P-9,0X1.3C3A4EDFA9758P+8}, + {0.0,0X1.3C3A4EDFA9758P+8}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0X1.96B230BCDC434P-1,infinity}, + {0X1.999999999999AP-4,infinity}, + {0X1.9E7C6E43390B7P-9,infinity}, + {1.0,1.0}, + {0X1.999999999999AP-4,1.0}, + {0X1.9E7C6E43390B7P-9,1.0}, + {0.0,1.0}, + {0X1.96B230BCDC434P-1,1.0}, + {0X1.999999999999AP-4,1.0}, + {0X1.9E7C6E43390B7P-9,1.0}, + {0.0,1.0}, + {0X1.999999999999AP-4,1.0}, + {0X1.9E7C6E43390B7P-9,1.0}, + {0.0,1.0}, + {0X1.9E7C6E43390B7P-9,1.0}, + {0.0,1.0}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {0.5,1.5}, + {0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0X1.EBA7C9E4D31E9P-1,0X1.125FBEE250665P+0}, + {0X1.DDB680117AB12P-1,0X1.125FBEE250665P+0}, + {0X1P-1,0X1.8P+0}, + {0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1}, + {0X0P+0,infinity}, + {0X1.5555555555555P-1,0X1P+1}, + {0X1.5555555555555P-1,0X1P+1}, + {0X1.5555555555555P-1,0X1P+1}, + {0X1.5555555555555P-1,0X1P+1}, + {0X1.5555555555555P-1,0X1P+1}, + {0X1P-1,0X1P+1}, + {0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1}, + {0X0P+0,infinity}, + {0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2}, + {0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2}, + {0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2}, + {0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2}, + {0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2}, + {0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2}, + {0X1.7398BF1D1EE6FP-2,0X1.6A09E667F3BCDP+2}, + {0X1.6A09E667F3BCCP-3,0X1.6A09E667F3BCDP+2}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {1.0,1.0}, + {0.5,1.5}, + {0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0X1.DDB680117AB12P-1,0X1.0A97DCE72A0CBP+0}, + {0.5,1.5}, + {0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0.5,1.5}, + {0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + {0X1.6A09E667F3BCCP-3,0X1.60B9FD68A4555P+1}, + {0.0,infinity}, + empty, + {0X0P+0,infinity}, + {1.0,1.0}, + {0.5,infinity}, + {0X1.6A09E667F3BCCP-3,infinity}, + {0.0,infinity}, + {0.0,0X1.125FBEE250665P+0}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,0X1P+1}, + {0.0,0X1P+1}, + {0.0,0X1P+1}, + {0.0,0X1P+1}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,0X1.6A09E667F3BCDP+2}, + {0.0,0X1.6A09E667F3BCDP+2}, + {0.0,0X1.6A09E667F3BCDP+2}, + {0.0,0X1.6A09E667F3BCDP+2}, + {0.0,0X1.6A09E667F3BCDP+2}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {0.0,infinity}, + {1.0,1.0}, + {0.5,infinity}, + {0X1.6A09E667F3BCCP-3,infinity}, + {0.0,infinity}, + {0X1.DDB680117AB12P-1,infinity}, + {0.5,infinity}, + {0X1.6A09E667F3BCCP-3,infinity}, + {0.0,infinity}, + {0.5,infinity}, + {0X1.6A09E667F3BCCP-3,infinity}, + {0.0,infinity}, + {0X1.6A09E667F3BCCP-3,infinity}, + {0.0,infinity}, + empty, + {0.0,infinity}, + {1.0,1.0}, + {1.0,0X1.8P+0}, + {1.0,0X1.60B9FD68A4555P+1}, + {1.0,infinity}, + {0X1.EBA7C9E4D31E9P-1,1.0}, + {0X1.EBA7C9E4D31E9P-1,0X1.0A97DCE72A0CBP+0}, + {0X1.EBA7C9E4D31E9P-1,0X1.8P+0}, + {0X1.EBA7C9E4D31E9P-1,0X1.60B9FD68A4555P+1}, + {0X1.EBA7C9E4D31E9P-1,infinity}, + {0X1.5555555555555P-1,1.0}, + {0X1.5555555555555P-1,1.0}, + {0X1.5555555555555P-1,1.0}, + {0X1.5555555555555P-1,1.0}, + {0X1.5555555555555P-1,0X1.0A97DCE72A0CBP+0}, + {0X1.5555555555555P-1,0X1.8P+0}, + {0X1.5555555555555P-1,0X1.60B9FD68A4555P+1}, + {0X1.5555555555555P-1,infinity}, + {0X1.7398BF1D1EE6FP-2,1.0}, + {0X1.7398BF1D1EE6FP-2,1.0}, + {0X1.7398BF1D1EE6FP-2,1.0}, + {0X1.7398BF1D1EE6FP-2,1.0}, + {0X1.7398BF1D1EE6FP-2,1.0}, + {0X1.7398BF1D1EE6FP-2,0X1.0A97DCE72A0CBP+0}, + {0X1.7398BF1D1EE6FP-2,0X1.8P+0}, + {0X1.7398BF1D1EE6FP-2,0X1.60B9FD68A4555P+1}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,0X1.0A97DCE72A0CBP+0}, + {0X0P+0,0X1.8P+0}, + {0X0P+0,0X1.60B9FD68A4555P+1}, + {1.0,1.0}, + {1.0,0X1.8P+0}, + {1.0,0X1.60B9FD68A4555P+1}, + {1.0,infinity}, + {1.0,0X1.0A97DCE72A0CBP+0}, + {1.0,0X1.8P+0}, + {1.0,0X1.60B9FD68A4555P+1}, + {1.0,infinity}, + {1.0,0X1.8P+0}, + {1.0,0X1.60B9FD68A4555P+1}, + {1.0,infinity}, + {1.0,0X1.60B9FD68A4555P+1}, + {1.0,infinity}, + empty, + {0X0P+0,infinity}, + {1.0,1.0}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0X0P+0,1.0}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,1.0}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {1.0,1.0}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + empty, + {0X0P+0,infinity}, + {1.0,1.0}, + {1.0,0X1.8P+0}, + {1.0,0X1.60B9FD68A4555P+1}, + {1.0,infinity}, + {0X1.EBA7C9E4D31E9P-1,0X1.FB24AF5281928P-1}, + {0X1.EBA7C9E4D31E9P-1,0X1.0A97DCE72A0CBP+0}, + {0X1.EBA7C9E4D31E9P-1,0X1.8P+0}, + {0X1.EBA7C9E4D31E9P-1,0X1.60B9FD68A4555P+1}, + {0X1.EBA7C9E4D31E9P-1,infinity}, + {0X1.5555555555555P-1,1.0}, + {0X1.5555555555555P-1,0X1.FB24AF5281928P-1}, + {0X1.5555555555555P-1,0X1.D1745D1745D17P-1}, + {0X1.5555555555555P-1,1.0}, + {0X1.5555555555555P-1,0X1.0A97DCE72A0CBP+0}, + {0X1.5555555555555P-1,0X1.8P+0}, + {0X1.5555555555555P-1,0X1.60B9FD68A4555P+1}, + {0X1.5555555555555P-1,infinity}, + {0X1.7398BF1D1EE6FP-2,1.0}, + {0X1.7398BF1D1EE6FP-2,0X1.FB24AF5281928P-1}, + {0X1.7398BF1D1EE6FP-2,0X1.D1745D1745D17P-1}, + {0X1.7398BF1D1EE6FP-2,0X1.9372D999784C8P-1}, + {0X1.7398BF1D1EE6FP-2,1.0}, + {0X1.7398BF1D1EE6FP-2,0X1.0A97DCE72A0CBP+0}, + {0X1.7398BF1D1EE6FP-2,0X1.8P+0}, + {0X1.7398BF1D1EE6FP-2,0X1.60B9FD68A4555P+1}, + {0X1.7398BF1D1EE6FP-2,infinity}, + {0X0P+0,1.0}, + {0X0P+0,0X1.FB24AF5281928P-1}, + {0X0P+0,0X1.D1745D1745D17P-1}, + {0X0P+0,0X1.9372D999784C8P-1}, + {0X0P+0,1.0}, + {0X0P+0,0X1.0A97DCE72A0CBP+0}, + {0X0P+0,0X1.8P+0}, + {0X0P+0,0X1.60B9FD68A4555P+1}, + {1.0,1.0}, + {1.0,0X1.8P+0}, + {1.0,0X1.60B9FD68A4555P+1}, + {1.0,infinity}, + {0X1.02739C65D58BFP+0,0X1.0A97DCE72A0CBP+0}, + {0X1.02739C65D58BFP+0,0X1.8P+0}, + {0X1.02739C65D58BFP+0,0X1.60B9FD68A4555P+1}, + {0X1.02739C65D58BFP+0,infinity}, + {0X1.199999999999AP+0,0X1.8P+0}, + {0X1.199999999999AP+0,0X1.60B9FD68A4555P+1}, + {0X1.199999999999AP+0,infinity}, + {0X1.44E1080833B25P+0,0X1.60B9FD68A4555P+1}, + {0X1.44E1080833B25P+0,infinity}, + empty, + {0X0P+0,infinity}, + {1.0,1.0}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0X0P+0,0X1.FB24AF5281928P-1}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,1.0}, + {0X0P+0,0X1.FB24AF5281928P-1}, + {0X0P+0,0X1.D1745D1745D17P-1}, + {0X0P+0,1.0}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,1.0}, + {0X0P+0,0X1.FB24AF5281928P-1}, + {0X0P+0,0X1.D1745D1745D17P-1}, + {0X0P+0,0X1.9372D999784C8P-1}, + {0X0P+0,1.0}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,1.0}, + {0X0P+0,0X1.FB24AF5281928P-1}, + {0X0P+0,0X1.D1745D1745D17P-1}, + {0X0P+0,0X1.9372D999784C8P-1}, + {0X0P+0,1.0}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {0X0P+0,infinity}, + {1.0,1.0}, + {1.0,infinity}, + {1.0,infinity}, + {1.0,infinity}, + {0X1.02739C65D58BFP+0,infinity}, + {0X1.02739C65D58BFP+0,infinity}, + {0X1.02739C65D58BFP+0,infinity}, + {0X1.02739C65D58BFP+0,infinity}, + {0X1.199999999999AP+0,infinity}, + {0X1.199999999999AP+0,infinity}, + {0X1.199999999999AP+0,infinity}, + {0X1.44E1080833B25P+0,infinity}, + {0X1.44E1080833B25P+0,infinity}, + empty, + {0X0P+0,infinity}, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + empty, + }}; + + CUDA_CHECK(cudaMemcpy(d_xs, h_xs.data(), n_bytes, cudaMemcpyHostToDevice)); + CUDA_CHECK(cudaMemcpy(d_ys, h_ys.data(), n_bytes, cudaMemcpyHostToDevice)); + CUDA_CHECK(cudaMemcpy(d_res, h_res.data(), n_result_bytes, cudaMemcpyHostToDevice)); + test_pow<<>>(n, d_xs, d_ys, d_res); + CUDA_CHECK(cudaMemcpy(h_res.data(), d_res, n_result_bytes, cudaMemcpyDeviceToHost)); + int max_ulp_diff = 1; + auto failed = check_all_equal(h_res, h_ref, max_ulp_diff); + for (auto fail_id : failed) { + printf("failed at case %zu:\n", fail_id); + printf("x = [%a, %a]\ny = [%a, %a]\n", h_xs[fail_id].lb, h_xs[fail_id].ub, h_ys[fail_id].lb, h_ys[fail_id].ub); + } + }; + "minimal_exp_exp"_test = [&] { constexpr int n = 19; std::array h_xs {{